@vue-skuilder/common-ui 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index.css +1 -10
- package/dist/common-ui.es.js +1 -19268
- package/dist/common-ui.es.js.map +1 -1
- package/dist/common-ui.umd.js +1 -3
- package/dist/common-ui.umd.js.map +1 -1
- package/dist/components/CardBrowser.vue.d.ts.map +1 -1
- package/dist/components/CourseCardBrowser.vue.d.ts.map +1 -1
- package/dist/components/CourseInformation.vue.d.ts.map +1 -1
- package/dist/components/CourseTagFilterWidget.vue.d.ts +41 -0
- package/dist/components/CourseTagFilterWidget.vue.d.ts.map +1 -0
- package/dist/components/StudySession.vue.d.ts.map +1 -1
- package/dist/components/auth/UserRegistration.vue.d.ts.map +1 -1
- package/dist/components/cardRendering/AudioAutoPlayer.vue.d.ts.map +1 -1
- package/dist/components/cardRendering/CardLoader.vue.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/plugins/pinia.d.ts.map +1 -1
- package/dist/stores/useAuthStore.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/components/CourseInformation.vue +2 -2
- package/src/components/CourseTagFilterWidget.vue +241 -0
- package/src/index.ts +1 -0
package/dist/common-ui.umd.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@vue-skuilder/common"),require("@vue-skuilder/db"),require("pinia"),require("vue-router"),require("@vojtechlanka/vue-tags-input")):"function"==typeof define&&define.amd?define(["exports","vue","@vue-skuilder/common","@vue-skuilder/db","pinia","vue-router","@vojtechlanka/vue-tags-input"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueSkuilderCommonUI={},e.Vue,e.VueSkuilderCommon,e.VueSkuilderDb,e.Pinia,e.VueRouter,e.VueTagsInput)}(this,(function(e,t,n,r,o,a,s){"use strict";var i,l,c=Object.defineProperty,d=(e,t,n)=>((e,t,n)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),u=document.createElement("style");function h(){return i.apply(null,arguments)}function p(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function m(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function g(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function f(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(g(e,t))return!1;return!0}function k(e){return void 0===e}function y(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function b(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function w(e,t){var n,r=[],o=e.length;for(n=0;n<o;++n)r.push(t(e[n],n));return r}function v(e,t){for(var n in t)g(t,n)&&(e[n]=t[n]);return g(t,"toString")&&(e.toString=t.toString),g(t,"valueOf")&&(e.valueOf=t.valueOf),e}function x(e,t,n,r){return Ut(e,t,n,r,!0).utc()}function _(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function C(e){var t=null,n=!1,r=e._d&&!isNaN(e._d.getTime());return r&&(t=_(e),n=l.call(t.parsedDateParts,(function(e){return null!=e})),r=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n),e._strict&&(r=r&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour)),null!=Object.isFrozen&&Object.isFrozen(e)?r:(e._isValid=r,e._isValid)}function S(e){var t=x(NaN);return null!=e?v(_(t),e):_(t).userInvalidated=!0,t}u.textContent=".tooltip[data-v-ca46239a]{background-color:#000c;color:#fff;padding:5px;border-radius:3px;font-size:12px}.sk-mousetrap-tooltip-wrapper[data-v-5d6fb09c]{display:inline-block;position:relative}.sk-mousetrap-tooltip[data-v-5d6fb09c]{position:absolute;background-color:#000c;color:#fff;padding:2px 6px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:9999}.sk-mt-tooltip-top[data-v-5d6fb09c]{bottom:100%;margin-bottom:5px;left:50%;transform:translate(-50%)}.sk-mt-tooltip-bottom[data-v-5d6fb09c]{top:100%;margin-top:5px;left:50%;transform:translate(-50%)}.sk-mt-tooltip-left[data-v-5d6fb09c]{right:100%;margin-right:5px;top:50%;transform:translateY(-50%)}.sk-mt-tooltip-right[data-v-5d6fb09c]{left:100%;margin-left:5px;top:50%;transform:translateY(-50%)}.sk-mousetrap-highlight-glow[data-v-5d6fb09c]{box-shadow:0 0 8px 2px #1976d299;transition:box-shadow .25s ease}.sk-mousetrap-highlight-scale[data-v-5d6fb09c]{transform:scale(1.03);transition:transform .25s ease}.sk-mousetrap-highlight-border[data-v-5d6fb09c]{outline:2px solid rgba(25,118,210,.8);outline-offset:2px;border-radius:4px;transition:outline .25s ease,outline-offset .25s ease}.fade-enter-active[data-v-5d6fb09c],.fade-leave-active[data-v-5d6fb09c]{transition:opacity .25s ease}.fade-enter-from[data-v-5d6fb09c],.fade-leave-to[data-v-5d6fb09c]{opacity:0}.pageSelect[data-v-a75fea7e]{max-width:60px}.selected-card[data-v-285e13bd]{background-color:#e0f2f7;border-left:4px solid #2196f3}.cursor-pointer[data-v-285e13bd]{cursor:pointer}.error-message[data-v-a4bdfdfb]{color:#f44336;padding:16px;background-color:#ffebee;border-radius:4px;margin:8px 0}.negative-interval[data-v-a4bdfdfb]{color:#f44336;font-weight:700;background-color:#ffebee;padding:2px 4px;border-radius:3px}.invalid-timestamp[data-v-a4bdfdfb]{color:#f44336;font-weight:700}.card-history-viewer[data-v-a4bdfdfb]{margin:16px 0}.timer-container[data-v-5960940a]{display:inline-flex;cursor:pointer}.cardView[data-v-318fb94f]{padding:15px;border-radius:8px}.session-debug[data-v-1a6ac7a1]{font-family:Courier New,monospace;font-size:.75rem;max-height:400px;overflow-y:auto}.debug-section[data-v-1a6ac7a1]{padding:8px;background-color:#ffffff0d;border-radius:4px;min-height:120px}.debug-header[data-v-1a6ac7a1]{display:flex;align-items:center;margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.1)}.debug-stats[data-v-1a6ac7a1]{margin-bottom:8px;display:flex;gap:8px}.debug-items[data-v-1a6ac7a1]{margin-top:4px;padding-left:8px}.debug-item[data-v-1a6ac7a1]{border-left:2px solid rgba(255,255,255,.2);padding:2px 0 2px 6px;margin-bottom:2px}.footer-controls[data-v-dc537be7]{position:fixed;bottom:0;background-color:var(--v-background);z-index:100}.footer-right[data-v-dc537be7]{position:fixed;bottom:0;right:0;background-color:var(--v-background);z-index:100}.correct[data-v-dc537be7]{animation:varFade-dc537be7 1.25s ease-out}.incorrect[data-v-dc537be7]{animation:purpleFade-dc537be7 1.25s ease-out}a[data-v-dc537be7]{text-decoration:underline}.component-fade-enter-active[data-v-dc537be7],.component-fade-leave-active[data-v-dc537be7]{transition:opacity .2s ease}.component-fade-enter-from[data-v-dc537be7],.component-fade-leave-to[data-v-dc537be7]{opacity:0}@keyframes varFade-dc537be7{0%{box-shadow:rgba(var(--r),var(--g),0,.25) 0 7px 8px -4px,rgba(var(--r),var(--g),0,.25) 0 12px 17px 2px,rgba(var(--r),var(--g),0,.25) 0 5px 22px 4px}to{box-shadow:#00960000 0 0}}@keyframes greenFade-dc537be7{0%{box-shadow:#00960040 0 7px 8px -4px,#00960040 0 12px 17px 2px,#00960040 0 5px 22px 4px}to{box-shadow:#00960000 0 0}}@keyframes purpleFade-dc537be7{0%{box-shadow:#73004b40 0 7px 8px -4px,#73004b40 0 12px 17px 2px,#73004b40 0 5px 22px 4px}to{box-shadow:#73004b00 0 0}}.choice[data-v-96de7172]{text-align:center;display:inline-block;border-radius:4px;padding:5px 15px;margin:10px;min-width:75px;transition:all .2s ease-in-out}.selected[data-v-96de7172]{transform:translateY(-10px) scale(1.15);z-index:1}.not-selected[data-v-96de7172]{z-index:0}.userInput[data-v-a56dcd1c]{border:none;text-align:center;border-bottom:1px black}.user-input-container[data-v-aa14961f]{display:inline-block;min-width:6em;vertical-align:baseline}.user-input-string[data-v-aa14961f]{display:inline-block;background:transparent;border:none;border-bottom:1px solid currentColor;color:currentColor;font-family:inherit;font-size:inherit;line-height:inherit;padding:0;margin:0;text-align:center;width:100%;outline:none}.user-input-string[data-v-aa14961f]:focus{border-bottom:2px solid currentColor}#input[data-v-486ac035]{display:inline-block;min-width:4em;text-align:center}.underline[data-v-486ac035]{text-decoration:underline;text-decoration-style:solid 14px}.cardView[data-v-93f758b5]{padding:15px;border-radius:8px}.component-fade-enter-active[data-v-93f758b5],.component-fade-leave-active[data-v-93f758b5]{transition:opacity .3s ease}.component-fade-enter[data-v-93f758b5],.component-fade-leave-to[data-v-93f758b5]{opacity:0}.playing[data-v-e1a0f62c]{animation:.85s ease-in-out infinite alternate pulse-e1a0f62c;z-index:1}@keyframes pulse-e1a0f62c{0%{transform:scale(1)}to{transform:scale(1.15)}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.code-block-wrapper{margin:1rem 0;border-radius:4px;background-color:#f6f8fa;overflow:auto;position:relative}.language-indicator{position:absolute;top:8px;right:10px;padding:2px 8px;font-size:.75rem;color:#666;background-color:#ffffffb3;border-radius:4px;z-index:1;font-family:monospace;text-transform:lowercase}blockquote[data-v-de3eebd6]{border-left:3px teal solid;padding-left:8px}.codespan[data-v-de3eebd6]{padding-left:3px;padding-right:3px;margin-left:1px;margin-right:1px}p[data-v-de3eebd6]{margin-bottom:15px;margin-top:15px}.component-fade-enter-active[data-v-9a38a213],.component-fade-leave-active[data-v-9a38a213]{transition:opacity .5s ease}.component-fade-enter[data-v-9a38a213],.component-fade-leave-to[data-v-9a38a213]{opacity:0}.login[data-v-563b0048]{max-width:650px}.component-fade-enter-active[data-v-5a55bdf0],.component-fade-leave-active[data-v-5a55bdf0]{transition:opacity .5s ease}.component-fade-enter[data-v-5a55bdf0],.component-fade-leave-to[data-v-5a55bdf0]{opacity:0}.vue-tags-input[data-v-f7373dc0]{max-width:100%}.autocomplete-item[data-v-f7373dc0]{display:flex;align-items:center;padding:5px}.autocomplete-item.is-active[data-v-f7373dc0]{background-color:#e8e8e8}.autocomplete-item.is-active>.tag-name[data-v-f7373dc0]{background-color:#5c6bc0;color:#fff}.tag-name[data-v-f7373dc0]{background-color:#e0e0e0;color:#333;padding:2px 6px;border-radius:3px;font-weight:700;margin-right:5px}.tag-snippet[data-v-f7373dc0]{color:#666;font-size:.9em}.autocomplete-item.is-active .tag-snippet[data-v-f7373dc0]{color:#333}.component-fade-enter-active[data-v-5ecc9d21],.component-fade-leave-active[data-v-5ecc9d21]{transition:opacity .5s ease}.component-fade-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{opacity:0}.component-scale-enter-active[data-v-5ecc9d21],.component-scale-leave-active[data-v-5ecc9d21]{max-height:auto;transform:scale(1);transform-origin:top;transition:transform .3s ease,max-height .3s ease}.component-scale-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{max-height:0px;transform:scaleY(0);overflow:hidden}.component-fade-enter-active[data-v-689a95c9],.component-fade-leave-active[data-v-689a95c9]{transition:opacity .5s ease}.component-fade-enter[data-v-689a95c9],.component-fade-leave-to[data-v-689a95c9]{opacity:0}.component-scale-enter-active[data-v-689a95c9],.component-scale-leave-active[data-v-689a95c9]{max-height:auto;transform:scale(1);transform-origin:top;transition:transform .3s ease,max-height .3s ease}.component-scale-enter[data-v-689a95c9],.component-fade-leave-to[data-v-689a95c9]{max-height:0px;transform:scaleY(0);overflow:hidden}\n/*$vite$:1*/",document.head.appendChild(u),l=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var N=h.momentProperties=[],E=!1;function T(e,t){var n,r,o,a=N.length;if(k(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),k(t._i)||(e._i=t._i),k(t._f)||(e._f=t._f),k(t._l)||(e._l=t._l),k(t._strict)||(e._strict=t._strict),k(t._tzm)||(e._tzm=t._tzm),k(t._isUTC)||(e._isUTC=t._isUTC),k(t._offset)||(e._offset=t._offset),k(t._pf)||(e._pf=_(t)),k(t._locale)||(e._locale=t._locale),a>0)for(n=0;n<a;n++)k(o=t[r=N[n]])||(e[r]=o);return e}function M(e){T(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===E&&(E=!0,h.updateOffset(this),E=!1)}function D(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function B(e){!1===h.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function R(e,t){var n=!0;return v((function(){if(null!=h.deprecationHandler&&h.deprecationHandler(null,e),n){var r,o,a,s=[],i=arguments.length;for(o=0;o<i;o++){if(r="","object"==typeof arguments[o]){for(a in r+="\n["+o+"] ",arguments[0])g(arguments[0],a)&&(r+=a+": "+arguments[0][a]+", ");r=r.slice(0,-2)}else r=arguments[o];s.push(r)}B(e+"\nArguments: "+Array.prototype.slice.call(s).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var V,I={};function A(e,t){null!=h.deprecationHandler&&h.deprecationHandler(e,t),I[e]||(B(t),I[e]=!0)}function O(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function L(e,t){var n,r=v({},e);for(n in t)g(t,n)&&(m(e[n])&&m(t[n])?(r[n]={},v(r[n],e[n]),v(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)g(e,n)&&!g(t,n)&&m(e[n])&&(r[n]=v({},r[n]));return r}function P(e){null!=e&&this.set(e)}h.suppressDeprecationWarnings=!1,h.deprecationHandler=null,V=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)g(e,t)&&n.push(t);return n};function $(e,t,n){var r=""+Math.abs(e),o=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,o)).toString().substr(1)+r}var Y=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,z=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,U={},F={};function j(e,t,n,r){var o=r;"string"==typeof r&&(o=function(){return this[r]()}),e&&(F[e]=o),t&&(F[t[0]]=function(){return $(o.apply(this,arguments),t[1],t[2])}),n&&(F[n]=function(){return this.localeData().ordinal(o.apply(this,arguments),e)})}function H(e,t){return e.isValid()?(t=q(t,e.localeData()),U[t]=U[t]||function(e){var t,n,r,o=e.match(Y);for(t=0,n=o.length;t<n;t++)F[o[t]]?o[t]=F[o[t]]:o[t]=(r=o[t]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(t){var r,a="";for(r=0;r<n;r++)a+=O(o[r])?o[r].call(t,e):o[r];return a}}(t),U[t](e)):e.localeData().invalidDate()}function q(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(z.lastIndex=0;n>=0&&z.test(e);)e=e.replace(z,r),z.lastIndex=0,n-=1;return e}var W={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function G(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function Z(e){var t,n,r={};for(n in e)g(e,n)&&(t=G(n))&&(r[t]=e[n]);return r}var K={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var Q,J=/\d/,X=/\d\d/,ee=/\d{3}/,te=/\d{4}/,ne=/[+-]?\d{6}/,re=/\d\d?/,oe=/\d\d\d\d?/,ae=/\d\d\d\d\d\d?/,se=/\d{1,3}/,ie=/\d{1,4}/,le=/[+-]?\d{1,6}/,ce=/\d+/,de=/[+-]?\d+/,ue=/Z|[+-]\d\d:?\d\d/gi,he=/Z|[+-]\d\d(?::?\d\d)?/gi,pe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,me=/^[1-9]\d?/,ge=/^([1-9]\d|\d)/;function fe(e,t,n){Q[e]=O(t)?t:function(e,r){return e&&n?n:t}}function ke(e,t){return g(Q,e)?Q[e](t._strict,t._locale):new RegExp(ye(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,o){return t||n||r||o}))))}function ye(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function be(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function we(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=be(t)),n}Q={};var ve={};function xe(e,t){var n,r,o=t;for("string"==typeof e&&(e=[e]),y(t)&&(o=function(e,n){n[t]=we(e)}),r=e.length,n=0;n<r;n++)ve[e[n]]=o}function _e(e,t){xe(e,(function(e,n,r,o){r._w=r._w||{},t(e,r._w,r,o)}))}function Ce(e,t,n){null!=t&&g(ve,e)&&ve[e](t,n._a,n,e)}function Se(e){return e%4==0&&e%100!=0||e%400==0}var Ne=0,Ee=1,Te=2,Me=3,De=4,Be=5,Re=6,Ve=7,Ie=8;function Ae(e){return Se(e)?366:365}j("Y",0,0,(function(){var e=this.year();return e<=9999?$(e,4):"+"+e})),j(0,["YY",2],0,(function(){return this.year()%100})),j(0,["YYYY",4],0,"year"),j(0,["YYYYY",5],0,"year"),j(0,["YYYYYY",6,!0],0,"year"),fe("Y",de),fe("YY",re,X),fe("YYYY",ie,te),fe("YYYYY",le,ne),fe("YYYYYY",le,ne),xe(["YYYYY","YYYYYY"],Ne),xe("YYYY",(function(e,t){t[Ne]=2===e.length?h.parseTwoDigitYear(e):we(e)})),xe("YY",(function(e,t){t[Ne]=h.parseTwoDigitYear(e)})),xe("Y",(function(e,t){t[Ne]=parseInt(e,10)})),h.parseTwoDigitYear=function(e){return we(e)+(we(e)>68?1900:2e3)};var Oe,Le=Pe("FullYear",!0);function Pe(e,t){return function(n){return null!=n?(Ye(this,e,n),h.updateOffset(this,t),this):$e(this,e)}}function $e(e,t){if(!e.isValid())return NaN;var n=e._d,r=e._isUTC;switch(t){case"Milliseconds":return r?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return r?n.getUTCSeconds():n.getSeconds();case"Minutes":return r?n.getUTCMinutes():n.getMinutes();case"Hours":return r?n.getUTCHours():n.getHours();case"Date":return r?n.getUTCDate():n.getDate();case"Day":return r?n.getUTCDay():n.getDay();case"Month":return r?n.getUTCMonth():n.getMonth();case"FullYear":return r?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Ye(e,t,n){var r,o,a,s,i;if(e.isValid()&&!isNaN(n)){switch(r=e._d,o=e._isUTC,t){case"Milliseconds":return void(o?r.setUTCMilliseconds(n):r.setMilliseconds(n));case"Seconds":return void(o?r.setUTCSeconds(n):r.setSeconds(n));case"Minutes":return void(o?r.setUTCMinutes(n):r.setMinutes(n));case"Hours":return void(o?r.setUTCHours(n):r.setHours(n));case"Date":return void(o?r.setUTCDate(n):r.setDate(n));case"FullYear":break;default:return}a=n,s=e.month(),i=29!==(i=e.date())||1!==s||Se(a)?i:28,o?r.setUTCFullYear(a,s,i):r.setFullYear(a,s,i)}}function ze(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?Se(e)?29:28:31-r%7%2}Oe=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},j("M",["MM",2],"Mo",(function(){return this.month()+1})),j("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),j("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),fe("M",re,me),fe("MM",re,X),fe("MMM",(function(e,t){return t.monthsShortRegex(e)})),fe("MMMM",(function(e,t){return t.monthsRegex(e)})),xe(["M","MM"],(function(e,t){t[Ee]=we(e)-1})),xe(["MMM","MMMM"],(function(e,t,n,r){var o=n._locale.monthsParse(e,r,n._strict);null!=o?t[Ee]=o:_(n).invalidMonth=e}));var Ue="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Fe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),je=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He=pe,qe=pe;function We(e,t,n){var r,o,a,s=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=x([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(o=Oe.call(this._shortMonthsParse,s))?o:null:-1!==(o=Oe.call(this._longMonthsParse,s))?o:null:"MMM"===t?-1!==(o=Oe.call(this._shortMonthsParse,s))||-1!==(o=Oe.call(this._longMonthsParse,s))?o:null:-1!==(o=Oe.call(this._longMonthsParse,s))||-1!==(o=Oe.call(this._shortMonthsParse,s))?o:null}function Ge(e,t){if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=we(t);else if(!y(t=e.localeData().monthsParse(t)))return e;var n=t,r=e.date();return r=r<29?r:Math.min(r,ze(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,r):e._d.setMonth(n,r),e}function Ze(e){return null!=e?(Ge(this,e),h.updateOffset(this,!0),this):$e(this,"Month")}function Ke(){function e(e,t){return t.length-e.length}var t,n,r,o,a=[],s=[],i=[];for(t=0;t<12;t++)n=x([2e3,t]),r=ye(this.monthsShort(n,"")),o=ye(this.months(n,"")),a.push(r),s.push(o),i.push(o),i.push(r);a.sort(e),s.sort(e),i.sort(e),this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(e,t,n,r,o,a,s){var i;return e<100&&e>=0?(i=new Date(e+400,t,n,r,o,a,s),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,n,r,o,a,s),i}function Je(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Xe(e,t,n){var r=7+t-n;return-((7+Je(e,0,r).getUTCDay()-t)%7)+r-1}function et(e,t,n,r,o){var a,s,i=1+7*(t-1)+(7+n-r)%7+Xe(e,r,o);return i<=0?s=Ae(a=e-1)+i:i>Ae(e)?(a=e+1,s=i-Ae(e)):(a=e,s=i),{year:a,dayOfYear:s}}function tt(e,t,n){var r,o,a=Xe(e.year(),t,n),s=Math.floor((e.dayOfYear()-a-1)/7)+1;return s<1?r=s+nt(o=e.year()-1,t,n):s>nt(e.year(),t,n)?(r=s-nt(e.year(),t,n),o=e.year()+1):(o=e.year(),r=s),{week:r,year:o}}function nt(e,t,n){var r=Xe(e,t,n),o=Xe(e+1,t,n);return(Ae(e)-r+o)/7}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),fe("w",re,me),fe("ww",re,X),fe("W",re,me),fe("WW",re,X),_e(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=we(e)}));function rt(e,t){return e.slice(t,7).concat(e.slice(0,t))}j("d",0,"do","day"),j("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),j("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),j("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),fe("d",re),fe("e",re),fe("E",re),fe("dd",(function(e,t){return t.weekdaysMinRegex(e)})),fe("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),fe("dddd",(function(e,t){return t.weekdaysRegex(e)})),_e(["dd","ddd","dddd"],(function(e,t,n,r){var o=n._locale.weekdaysParse(e,r,n._strict);null!=o?t.d=o:_(n).invalidWeekday=e})),_e(["d","e","E"],(function(e,t,n,r){t[r]=we(e)}));var ot="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),at="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),st="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),it=pe,lt=pe,ct=pe;function dt(e,t,n){var r,o,a,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=x([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(o=Oe.call(this._weekdaysParse,s))?o:null:"ddd"===t?-1!==(o=Oe.call(this._shortWeekdaysParse,s))?o:null:-1!==(o=Oe.call(this._minWeekdaysParse,s))?o:null:"dddd"===t?-1!==(o=Oe.call(this._weekdaysParse,s))||-1!==(o=Oe.call(this._shortWeekdaysParse,s))||-1!==(o=Oe.call(this._minWeekdaysParse,s))?o:null:"ddd"===t?-1!==(o=Oe.call(this._shortWeekdaysParse,s))||-1!==(o=Oe.call(this._weekdaysParse,s))||-1!==(o=Oe.call(this._minWeekdaysParse,s))?o:null:-1!==(o=Oe.call(this._minWeekdaysParse,s))||-1!==(o=Oe.call(this._weekdaysParse,s))||-1!==(o=Oe.call(this._shortWeekdaysParse,s))?o:null}function ut(){function e(e,t){return t.length-e.length}var t,n,r,o,a,s=[],i=[],l=[],c=[];for(t=0;t<7;t++)n=x([2e3,1]).day(t),r=ye(this.weekdaysMin(n,"")),o=ye(this.weekdaysShort(n,"")),a=ye(this.weekdays(n,"")),s.push(r),i.push(o),l.push(a),c.push(r),c.push(o),c.push(a);s.sort(e),i.sort(e),l.sort(e),c.sort(e),this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function ht(){return this.hours()%12||12}function pt(e,t){j(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function mt(e,t){return t._meridiemParse}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,ht),j("k",["kk",2],0,(function(){return this.hours()||24})),j("hmm",0,0,(function(){return""+ht.apply(this)+$(this.minutes(),2)})),j("hmmss",0,0,(function(){return""+ht.apply(this)+$(this.minutes(),2)+$(this.seconds(),2)})),j("Hmm",0,0,(function(){return""+this.hours()+$(this.minutes(),2)})),j("Hmmss",0,0,(function(){return""+this.hours()+$(this.minutes(),2)+$(this.seconds(),2)})),pt("a",!0),pt("A",!1),fe("a",mt),fe("A",mt),fe("H",re,ge),fe("h",re,me),fe("k",re,me),fe("HH",re,X),fe("hh",re,X),fe("kk",re,X),fe("hmm",oe),fe("hmmss",ae),fe("Hmm",oe),fe("Hmmss",ae),xe(["H","HH"],Me),xe(["k","kk"],(function(e,t,n){var r=we(e);t[Me]=24===r?0:r})),xe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),xe(["h","hh"],(function(e,t,n){t[Me]=we(e),_(n).bigHour=!0})),xe("hmm",(function(e,t,n){var r=e.length-2;t[Me]=we(e.substr(0,r)),t[De]=we(e.substr(r)),_(n).bigHour=!0})),xe("hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[Me]=we(e.substr(0,r)),t[De]=we(e.substr(r,2)),t[Be]=we(e.substr(o)),_(n).bigHour=!0})),xe("Hmm",(function(e,t,n){var r=e.length-2;t[Me]=we(e.substr(0,r)),t[De]=we(e.substr(r))})),xe("Hmmss",(function(e,t,n){var r=e.length-4,o=e.length-2;t[Me]=we(e.substr(0,r)),t[De]=we(e.substr(r,2)),t[Be]=we(e.substr(o))}));var gt=Pe("Hours",!0);var ft,kt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ue,monthsShort:Fe,week:{dow:0,doy:6},weekdays:ot,weekdaysMin:st,weekdaysShort:at,meridiemParse:/[ap]\.?m?\.?/i},yt={},bt={};function wt(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n+=1)if(e[n]!==t[n])return n;return r}function vt(e){return e?e.toLowerCase().replace("_","-"):e}function xt(e){var t=null;if(void 0===yt[e]&&"undefined"!=typeof module&&module&&module.exports&&function(e){return!(!e||!e.match("^[^/\\\\]*$"))}(e))try{t=ft._abbr,require("./locale/"+e),_t(t)}catch(n){yt[e]=null}return yt[e]}function _t(e,t){var n;return e&&((n=k(t)?St(e):Ct(e,t))?ft=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ft._abbr}function Ct(e,t){if(null!==t){var n,r=kt;if(t.abbr=e,null!=yt[e])A("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=yt[e]._config;else if(null!=t.parentLocale)if(null!=yt[t.parentLocale])r=yt[t.parentLocale]._config;else{if(null==(n=xt(t.parentLocale)))return bt[t.parentLocale]||(bt[t.parentLocale]=[]),bt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return yt[e]=new P(L(r,t)),bt[e]&&bt[e].forEach((function(e){Ct(e.name,e.config)})),_t(e),yt[e]}return delete yt[e],null}function St(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ft;if(!p(e)){if(t=xt(e))return t;e=[e]}return function(e){for(var t,n,r,o,a=0;a<e.length;){for(t=(o=vt(e[a]).split("-")).length,n=(n=vt(e[a+1]))?n.split("-"):null;t>0;){if(r=xt(o.slice(0,t).join("-")))return r;if(n&&n.length>=t&&wt(o,n)>=t-1)break;t--}a++}return ft}(e)}function Nt(e){var t,n=e._a;return n&&-2===_(e).overflow&&(t=n[Ee]<0||n[Ee]>11?Ee:n[Te]<1||n[Te]>ze(n[Ne],n[Ee])?Te:n[Me]<0||n[Me]>24||24===n[Me]&&(0!==n[De]||0!==n[Be]||0!==n[Re])?Me:n[De]<0||n[De]>59?De:n[Be]<0||n[Be]>59?Be:n[Re]<0||n[Re]>999?Re:-1,_(e)._overflowDayOfYear&&(t<Ne||t>Te)&&(t=Te),_(e)._overflowWeeks&&-1===t&&(t=Ve),_(e)._overflowWeekday&&-1===t&&(t=Ie),_(e).overflow=t),e}var Et=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Tt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Mt=/Z|[+-]\d\d(?::?\d\d)?/,Dt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Bt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Rt=/^\/?Date\((-?\d+)/i,Vt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,It={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function At(e){var t,n,r,o,a,s,i=e._i,l=Et.exec(i)||Tt.exec(i),c=Dt.length,d=Bt.length;if(l){for(_(e).iso=!0,t=0,n=c;t<n;t++)if(Dt[t][1].exec(l[1])){o=Dt[t][0],r=!1!==Dt[t][2];break}if(null==o)return void(e._isValid=!1);if(l[3]){for(t=0,n=d;t<n;t++)if(Bt[t][1].exec(l[3])){a=(l[2]||" ")+Bt[t][0];break}if(null==a)return void(e._isValid=!1)}if(!r&&null!=a)return void(e._isValid=!1);if(l[4]){if(!Mt.exec(l[4]))return void(e._isValid=!1);s="Z"}e._f=o+(a||"")+(s||""),Yt(e)}else e._isValid=!1}function Ot(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Lt(e){var t,n,r,o,a,s,i,l,c=Vt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(c){if(n=c[4],r=c[3],o=c[2],a=c[5],s=c[6],i=c[7],l=[Ot(n),Fe.indexOf(r),parseInt(o,10),parseInt(a,10),parseInt(s,10)],i&&l.push(parseInt(i,10)),t=l,!function(e,t,n){return!e||at.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(_(n).weekdayMismatch=!0,n._isValid=!1,!1)}(c[1],t,e))return;e._a=t,e._tzm=function(e,t,n){if(e)return It[e];if(t)return 0;var r=parseInt(n,10),o=r%100;return(r-o)/100*60+o}(c[8],c[9],c[10]),e._d=Je.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),_(e).rfc2822=!0}else e._isValid=!1}function Pt(e,t,n){return null!=e?e:null!=t?t:n}function $t(e){var t,n,r,o,a,s=[];if(!e._d){for(r=function(e){var t=new Date(h.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[Te]&&null==e._a[Ee]&&function(e){var t,n,r,o,a,s,i,l,c;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(a=1,s=4,n=Pt(t.GG,e._a[Ne],tt(Ft(),1,4).year),r=Pt(t.W,1),((o=Pt(t.E,1))<1||o>7)&&(l=!0)):(a=e._locale._week.dow,s=e._locale._week.doy,c=tt(Ft(),a,s),n=Pt(t.gg,e._a[Ne],c.year),r=Pt(t.w,c.week),null!=t.d?((o=t.d)<0||o>6)&&(l=!0):null!=t.e?(o=t.e+a,(t.e<0||t.e>6)&&(l=!0)):o=a);r<1||r>nt(n,a,s)?_(e)._overflowWeeks=!0:null!=l?_(e)._overflowWeekday=!0:(i=et(n,r,o,a,s),e._a[Ne]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(a=Pt(e._a[Ne],r[Ne]),(e._dayOfYear>Ae(a)||0===e._dayOfYear)&&(_(e)._overflowDayOfYear=!0),n=Je(a,0,e._dayOfYear),e._a[Ee]=n.getUTCMonth(),e._a[Te]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Me]&&0===e._a[De]&&0===e._a[Be]&&0===e._a[Re]&&(e._nextDay=!0,e._a[Me]=0),e._d=(e._useUTC?Je:Qe).apply(null,s),o=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Me]=24),e._w&&void 0!==e._w.d&&e._w.d!==o&&(_(e).weekdayMismatch=!0)}}function Yt(e){if(e._f!==h.ISO_8601)if(e._f!==h.RFC_2822){e._a=[],_(e).empty=!0;var t,n,r,o,a,s,i,l=""+e._i,c=l.length,d=0;for(i=(r=q(e._f,e._locale).match(Y)||[]).length,t=0;t<i;t++)o=r[t],(n=(l.match(ke(o,e))||[])[0])&&((a=l.substr(0,l.indexOf(n))).length>0&&_(e).unusedInput.push(a),l=l.slice(l.indexOf(n)+n.length),d+=n.length),F[o]?(n?_(e).empty=!1:_(e).unusedTokens.push(o),Ce(o,n,e)):e._strict&&!n&&_(e).unusedTokens.push(o);_(e).charsLeftOver=c-d,l.length>0&&_(e).unusedInput.push(l),e._a[Me]<=12&&!0===_(e).bigHour&&e._a[Me]>0&&(_(e).bigHour=void 0),_(e).parsedDateParts=e._a.slice(0),_(e).meridiem=e._meridiem,e._a[Me]=function(e,t,n){var r;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[Me],e._meridiem),null!==(s=_(e).era)&&(e._a[Ne]=e._locale.erasConvertYear(s,e._a[Ne])),$t(e),Nt(e)}else Lt(e);else At(e)}function zt(e){var t=e._i,n=e._f;return e._locale=e._locale||St(e._l),null===t||void 0===n&&""===t?S({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),D(t)?new M(Nt(t)):(b(t)?e._d=t:p(n)?function(e){var t,n,r,o,a,s,i=!1,l=e._f.length;if(0===l)return _(e).invalidFormat=!0,void(e._d=new Date(NaN));for(o=0;o<l;o++)a=0,s=!1,t=T({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[o],Yt(t),C(t)&&(s=!0),a+=_(t).charsLeftOver,a+=10*_(t).unusedTokens.length,_(t).score=a,i?a<r&&(r=a,n=t):(null==r||a<r||s)&&(r=a,n=t,s&&(i=!0));v(e,n||t)}(e):n?Yt(e):function(e){var t=e._i;k(t)?e._d=new Date(h.now()):b(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=Rt.exec(e._i);null===t?(At(e),!1===e._isValid&&(delete e._isValid,Lt(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:h.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):p(t)?(e._a=w(t.slice(0),(function(e){return parseInt(e,10)})),$t(e)):m(t)?function(e){if(!e._d){var t=Z(e._i),n=void 0===t.day?t.date:t.day;e._a=w([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),$t(e)}}(e):y(t)?e._d=new Date(t):h.createFromInputFallback(e)}(e),C(e)||(e._d=null),e))}function Ut(e,t,n,r,o){var a,s={};return!0!==t&&!1!==t||(r=t,t=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(m(e)&&f(e)||p(e)&&0===e.length)&&(e=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=o,s._l=n,s._i=e,s._f=t,s._strict=r,(a=new M(Nt(zt(s))))._nextDay&&(a.add(1,"d"),a._nextDay=void 0),a}function Ft(e,t,n,r){return Ut(e,t,n,r,!1)}h.createFromInputFallback=R("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),h.ISO_8601=function(){},h.RFC_2822=function(){};var jt=R("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Ft.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:S()})),Ht=R("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Ft.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:S()}));function qt(e,t){var n,r;if(1===t.length&&p(t[0])&&(t=t[0]),!t.length)return Ft();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Gt(e){var t=Z(e),n=t.year||0,r=t.quarter||0,o=t.month||0,a=t.week||t.isoWeek||0,s=t.day||0,i=t.hour||0,l=t.minute||0,c=t.second||0,d=t.millisecond||0;this._isValid=function(e){var t,n,r=!1,o=Wt.length;for(t in e)if(g(e,t)&&(-1===Oe.call(Wt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<o;++n)if(e[Wt[n]]){if(r)return!1;parseFloat(e[Wt[n]])!==we(e[Wt[n]])&&(r=!0)}return!0}(t),this._milliseconds=+d+1e3*c+6e4*l+1e3*i*60*60,this._days=+s+7*a,this._months=+o+3*r+12*n,this._data={},this._locale=St(),this._bubble()}function Zt(e){return e instanceof Gt}function Kt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Qt(e,t){j(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+$(~~(e/60),2)+t+$(~~e%60,2)}))}Qt("Z",":"),Qt("ZZ",""),fe("Z",he),fe("ZZ",he),xe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=Xt(he,e)}));var Jt=/([\+\-]|\d\d)/gi;function Xt(e,t){var n,r,o=(t||"").match(e);return null===o?null:0===(r=60*(n=((o[o.length-1]||[])+"").match(Jt)||["-",0,0])[1]+we(n[2]))?0:"+"===n[0]?r:-r}function en(e,t){var n,r;return t._isUTC?(n=t.clone(),r=(D(e)||b(e)?e.valueOf():Ft(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),h.updateOffset(n,!1),n):Ft(e).local()}function tn(e){return-Math.round(e._d.getTimezoneOffset())}function nn(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}h.updateOffset=function(){};var rn=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,on=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function an(e,t){var n,r,o,a=e,s=null;return Zt(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:y(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(s=rn.exec(e))?(n="-"===s[1]?-1:1,a={y:0,d:we(s[Te])*n,h:we(s[Me])*n,m:we(s[De])*n,s:we(s[Be])*n,ms:we(Kt(1e3*s[Re]))*n}):(s=on.exec(e))?(n="-"===s[1]?-1:1,a={y:sn(s[2],n),M:sn(s[3],n),w:sn(s[4],n),d:sn(s[5],n),h:sn(s[6],n),m:sn(s[7],n),s:sn(s[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(o=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=en(t,e),e.isBefore(t)?n=ln(e,t):((n=ln(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Ft(a.from),Ft(a.to)),(a={}).ms=o.milliseconds,a.M=o.months),r=new Gt(a),Zt(e)&&g(e,"_locale")&&(r._locale=e._locale),Zt(e)&&g(e,"_isValid")&&(r._isValid=e._isValid),r}function sn(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function ln(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function cn(e,t){return function(n,r){var o;return null===r||isNaN(+r)||(A(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=n,n=r,r=o),dn(this,an(n,r),e),this}}function dn(e,t,n,r){var o=t._milliseconds,a=Kt(t._days),s=Kt(t._months);e.isValid()&&(r=null==r||r,s&&Ge(e,$e(e,"Month")+s*n),a&&Ye(e,"Date",$e(e,"Date")+a*n),o&&e._d.setTime(e._d.valueOf()+o*n),r&&h.updateOffset(e,a||s))}an.fn=Gt.prototype,an.invalid=function(){return an(NaN)};var un=cn(1,"add"),hn=cn(-1,"subtract");function pn(e){return"string"==typeof e||e instanceof String}function mn(e){return D(e)||b(e)||pn(e)||y(e)||function(e){var t=p(e),n=!1;t&&(n=0===e.filter((function(t){return!y(t)&&pn(e)})).length);return t&&n}(e)||function(e){var t,n,r=m(e)&&!f(e),o=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],s=a.length;for(t=0;t<s;t+=1)n=a[t],o=o||g(e,n);return r&&o}(e)||null==e}function gn(e,t){if(e.date()<t.date())return-gn(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function fn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=St(e))&&(this._locale=t),this)}h.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",h.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var kn=R("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function yn(){return this._locale}var bn=1e3,wn=6e4,vn=36e5,xn=126227808e5;function _n(e,t){return(e%t+t)%t}function Cn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-xn:new Date(e,t,n).valueOf()}function Sn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-xn:Date.UTC(e,t,n)}function Nn(e,t){return t.erasAbbrRegex(e)}function En(){var e,t,n,r,o,a=[],s=[],i=[],l=[],c=this.eras();for(e=0,t=c.length;e<t;++e)n=ye(c[e].name),r=ye(c[e].abbr),o=ye(c[e].narrow),s.push(n),a.push(r),i.push(o),l.push(n),l.push(r),l.push(o);this._erasRegex=new RegExp("^("+l.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+a.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+i.join("|")+")","i")}function Tn(e,t){j(0,[e,e.length],0,t)}function Mn(e,t,n,r,o){var a;return null==e?tt(this,r,o).year:(t>(a=nt(e,r,o))&&(t=a),Dn.call(this,e,t,n,r,o))}function Dn(e,t,n,r,o){var a=et(e,t,n,r,o),s=Je(a.year,0,a.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),fe("N",Nn),fe("NN",Nn),fe("NNN",Nn),fe("NNNN",(function(e,t){return t.erasNameRegex(e)})),fe("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),xe(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var o=n._locale.erasParse(e,r,n._strict);o?_(n).era=o:_(n).invalidEra=e})),fe("y",ce),fe("yy",ce),fe("yyy",ce),fe("yyyy",ce),fe("yo",(function(e,t){return t._eraYearOrdinalRegex||ce})),xe(["y","yy","yyy","yyyy"],Ne),xe(["yo"],(function(e,t,n,r){var o;n._locale._eraYearOrdinalRegex&&(o=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Ne]=n._locale.eraYearOrdinalParse(e,o):t[Ne]=parseInt(e,10)})),j(0,["gg",2],0,(function(){return this.weekYear()%100})),j(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Tn("gggg","weekYear"),Tn("ggggg","weekYear"),Tn("GGGG","isoWeekYear"),Tn("GGGGG","isoWeekYear"),fe("G",de),fe("g",de),fe("GG",re,X),fe("gg",re,X),fe("GGGG",ie,te),fe("gggg",ie,te),fe("GGGGG",le,ne),fe("ggggg",le,ne),_e(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=we(e)})),_e(["gg","GG"],(function(e,t,n,r){t[r]=h.parseTwoDigitYear(e)})),j("Q",0,"Qo","quarter"),fe("Q",J),xe("Q",(function(e,t){t[Ee]=3*(we(e)-1)})),j("D",["DD",2],"Do","date"),fe("D",re,me),fe("DD",re,X),fe("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),xe(["D","DD"],Te),xe("Do",(function(e,t){t[Te]=we(e.match(re)[0])}));var Bn=Pe("Date",!0);j("DDD",["DDDD",3],"DDDo","dayOfYear"),fe("DDD",se),fe("DDDD",ee),xe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=we(e)})),j("m",["mm",2],0,"minute"),fe("m",re,ge),fe("mm",re,X),xe(["m","mm"],De);var Rn=Pe("Minutes",!1);j("s",["ss",2],0,"second"),fe("s",re,ge),fe("ss",re,X),xe(["s","ss"],Be);var Vn,In,An=Pe("Seconds",!1);for(j("S",0,0,(function(){return~~(this.millisecond()/100)})),j(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),j(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),j(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),j(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),j(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),j(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),fe("S",se,J),fe("SS",se,X),fe("SSS",se,ee),Vn="SSSS";Vn.length<=9;Vn+="S")fe(Vn,ce);function On(e,t){t[Re]=we(1e3*("0."+e))}for(Vn="S";Vn.length<=9;Vn+="S")xe(Vn,On);In=Pe("Milliseconds",!1),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var Ln=M.prototype;function Pn(e){return e}Ln.add=un,Ln.calendar=function(e,t){1===arguments.length&&(arguments[0]?mn(arguments[0])?(e=arguments[0],t=void 0):function(e){var t,n=m(e)&&!f(e),r=!1,o=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<o.length;t+=1)r=r||g(e,o[t]);return n&&r}(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var n=e||Ft(),r=en(n,this).startOf("day"),o=h.calendarFormat(this,r)||"sameElse",a=t&&(O(t[o])?t[o].call(this,n):t[o]);return this.format(a||this.localeData().calendar(o,this,Ft(n)))},Ln.clone=function(){return new M(this)},Ln.diff=function(e,t,n){var r,o,a;if(!this.isValid())return NaN;if(!(r=en(e,this)).isValid())return NaN;switch(o=6e4*(r.utcOffset()-this.utcOffset()),t=G(t)){case"year":a=gn(this,r)/12;break;case"month":a=gn(this,r);break;case"quarter":a=gn(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-o)/864e5;break;case"week":a=(this-r-o)/6048e5;break;default:a=this-r}return n?a:be(a)},Ln.endOf=function(e){var t,n;if(void 0===(e=G(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?Sn:Cn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=vn-_n(t+(this._isUTC?0:this.utcOffset()*wn),vn)-1;break;case"minute":t=this._d.valueOf(),t+=wn-_n(t,wn)-1;break;case"second":t=this._d.valueOf(),t+=bn-_n(t,bn)-1}return this._d.setTime(t),h.updateOffset(this,!0),this},Ln.format=function(e){e||(e=this.isUtc()?h.defaultFormatUtc:h.defaultFormat);var t=H(this,e);return this.localeData().postformat(t)},Ln.from=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||Ft(e).isValid())?an({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Ln.fromNow=function(e){return this.from(Ft(),e)},Ln.to=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||Ft(e).isValid())?an({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Ln.toNow=function(e){return this.to(Ft(),e)},Ln.get=function(e){return O(this[e=G(e)])?this[e]():this},Ln.invalidAt=function(){return _(this).overflow},Ln.isAfter=function(e,t){var n=D(e)?e:Ft(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=G(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},Ln.isBefore=function(e,t){var n=D(e)?e:Ft(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=G(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},Ln.isBetween=function(e,t,n,r){var o=D(e)?e:Ft(e),a=D(t)?t:Ft(t);return!!(this.isValid()&&o.isValid()&&a.isValid())&&(("("===(r=r||"()")[0]?this.isAfter(o,n):!this.isBefore(o,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n)))},Ln.isSame=function(e,t){var n,r=D(e)?e:Ft(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=G(t)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},Ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},Ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},Ln.isValid=function(){return C(this)},Ln.lang=kn,Ln.locale=fn,Ln.localeData=yn,Ln.max=Ht,Ln.min=jt,Ln.parsingFlags=function(){return v({},_(this))},Ln.set=function(e,t){if("object"==typeof e){var n,r=function(e){var t,n=[];for(t in e)g(e,t)&&n.push({unit:t,priority:K[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=Z(e)),o=r.length;for(n=0;n<o;n++)this[r[n].unit](e[r[n].unit])}else if(O(this[e=G(e)]))return this[e](t);return this},Ln.startOf=function(e){var t,n;if(void 0===(e=G(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?Sn:Cn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=_n(t+(this._isUTC?0:this.utcOffset()*wn),vn);break;case"minute":t=this._d.valueOf(),t-=_n(t,wn);break;case"second":t=this._d.valueOf(),t-=_n(t,bn)}return this._d.setTime(t),h.updateOffset(this,!0),this},Ln.subtract=hn,Ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},Ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},Ln.toDate=function(){return new Date(this.valueOf())},Ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?H(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r="moment",o="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",o="Z"),e="["+r+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=o+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Ln[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Ln.toJSON=function(){return this.isValid()?this.toISOString():null},Ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ln.unix=function(){return Math.floor(this.valueOf()/1e3)},Ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ln.eraName=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].name;if(r[e].until<=n&&n<=r[e].since)return r[e].name}return""},Ln.eraNarrow=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].narrow;if(r[e].until<=n&&n<=r[e].since)return r[e].narrow}return""},Ln.eraAbbr=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].abbr;if(r[e].until<=n&&n<=r[e].since)return r[e].abbr}return""},Ln.eraYear=function(){var e,t,n,r,o=this.localeData().eras();for(e=0,t=o.length;e<t;++e)if(n=o[e].since<=o[e].until?1:-1,r=this.clone().startOf("day").valueOf(),o[e].since<=r&&r<=o[e].until||o[e].until<=r&&r<=o[e].since)return(this.year()-h(o[e].since).year())*n+o[e].offset;return this.year()},Ln.year=Le,Ln.isLeapYear=function(){return Se(this.year())},Ln.weekYear=function(e){return Mn.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},Ln.isoWeekYear=function(e){return Mn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Ln.quarter=Ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Ln.month=Ze,Ln.daysInMonth=function(){return ze(this.year(),this.month())},Ln.week=Ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Ln.isoWeek=Ln.isoWeeks=function(e){var t=tt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Ln.weeksInYear=function(){var e=this.localeData()._week;return nt(this.year(),e.dow,e.doy)},Ln.weeksInWeekYear=function(){var e=this.localeData()._week;return nt(this.weekYear(),e.dow,e.doy)},Ln.isoWeeksInYear=function(){return nt(this.year(),1,4)},Ln.isoWeeksInISOWeekYear=function(){return nt(this.isoWeekYear(),1,4)},Ln.date=Bn,Ln.day=Ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=$e(this,"Day");return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},Ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Ln.hour=Ln.hours=gt,Ln.minute=Ln.minutes=Rn,Ln.second=Ln.seconds=An,Ln.millisecond=Ln.milliseconds=In,Ln.utcOffset=function(e,t,n){var r,o=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Xt(he,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=tn(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),o!==e&&(!t||this._changeInProgress?dn(this,an(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,h.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:tn(this)},Ln.utc=function(e){return this.utcOffset(0,e)},Ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(tn(this),"m")),this},Ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Xt(ue,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},Ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ft(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},Ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Ln.isUtc=nn,Ln.isUTC=nn,Ln.zoneAbbr=function(){return this._isUTC?"UTC":""},Ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Ln.dates=R("dates accessor is deprecated. Use date instead.",Bn),Ln.months=R("months accessor is deprecated. Use month instead",Ze),Ln.years=R("years accessor is deprecated. Use year instead",Le),Ln.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),Ln.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!k(this._isDSTShifted))return this._isDSTShifted;var e,t={};return T(t,this),(t=zt(t))._a?(e=t._isUTC?x(t._a):Ft(t._a),this._isDSTShifted=this.isValid()&&function(e,t){var n,r=Math.min(e.length,t.length),o=Math.abs(e.length-t.length),a=0;for(n=0;n<r;n++)we(e[n])!==we(t[n])&&a++;return a+o}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var $n=P.prototype;function Yn(e,t,n,r){var o=St(),a=x().set(r,t);return o[n](a,e)}function zn(e,t,n){if(y(e)&&(t=e,e=void 0),e=e||"",null!=t)return Yn(e,t,n,"month");var r,o=[];for(r=0;r<12;r++)o[r]=Yn(e,r,n,"month");return o}function Un(e,t,n,r){"boolean"==typeof e?(y(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,y(t)&&(n=t,t=void 0),t=t||"");var o,a=St(),s=e?a._week.dow:0,i=[];if(null!=n)return Yn(t,(n+s)%7,r,"day");for(o=0;o<7;o++)i[o]=Yn(t,(o+s)%7,r,"day");return i}$n.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return O(r)?r.call(t,n):r},$n.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(Y).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},$n.invalidDate=function(){return this._invalidDate},$n.ordinal=function(e){return this._ordinal.replace("%d",e)},$n.preparse=Pn,$n.postformat=Pn,$n.relativeTime=function(e,t,n,r){var o=this._relativeTime[n];return O(o)?o(e,t,n,r):o.replace(/%d/i,e)},$n.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},$n.set=function(e){var t,n;for(n in e)g(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},$n.eras=function(e,t){var n,r,o,a=this._eras||St("en")._eras;for(n=0,r=a.length;n<r;++n){if("string"==typeof a[n].since)o=h(a[n].since).startOf("day"),a[n].since=o.valueOf();switch(typeof a[n].until){case"undefined":a[n].until=1/0;break;case"string":o=h(a[n].until).startOf("day").valueOf(),a[n].until=o.valueOf()}}return a},$n.erasParse=function(e,t,n){var r,o,a,s,i,l=this.eras();for(e=e.toUpperCase(),r=0,o=l.length;r<o;++r)if(a=l[r].name.toUpperCase(),s=l[r].abbr.toUpperCase(),i=l[r].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(s===e)return l[r];break;case"NNNN":if(a===e)return l[r];break;case"NNNNN":if(i===e)return l[r]}else if([a,s,i].indexOf(e)>=0)return l[r]},$n.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?h(e.since).year():h(e.since).year()+(t-e.offset)*n},$n.erasAbbrRegex=function(e){return g(this,"_erasAbbrRegex")||En.call(this),e?this._erasAbbrRegex:this._erasRegex},$n.erasNameRegex=function(e){return g(this,"_erasNameRegex")||En.call(this),e?this._erasNameRegex:this._erasRegex},$n.erasNarrowRegex=function(e){return g(this,"_erasNarrowRegex")||En.call(this),e?this._erasNarrowRegex:this._erasRegex},$n.months=function(e,t){return e?p(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||je).test(t)?"format":"standalone"][e.month()]:p(this._months)?this._months:this._months.standalone},$n.monthsShort=function(e,t){return e?p(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[je.test(t)?"format":"standalone"][e.month()]:p(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},$n.monthsParse=function(e,t,n){var r,o,a;if(this._monthsParseExact)return We.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(o=x([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},$n.monthsRegex=function(e){return this._monthsParseExact?(g(this,"_monthsRegex")||Ke.call(this),e?this._monthsStrictRegex:this._monthsRegex):(g(this,"_monthsRegex")||(this._monthsRegex=qe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},$n.monthsShortRegex=function(e){return this._monthsParseExact?(g(this,"_monthsRegex")||Ke.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(g(this,"_monthsShortRegex")||(this._monthsShortRegex=He),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},$n.week=function(e){return tt(e,this._week.dow,this._week.doy).week},$n.firstDayOfYear=function(){return this._week.doy},$n.firstDayOfWeek=function(){return this._week.dow},$n.weekdays=function(e,t){var n=p(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?rt(n,this._week.dow):e?n[e.day()]:n},$n.weekdaysMin=function(e){return!0===e?rt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},$n.weekdaysShort=function(e){return!0===e?rt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},$n.weekdaysParse=function(e,t,n){var r,o,a;if(this._weekdaysParseExact)return dt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(o=x([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(o,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(o,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(o,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(o,"")+"|^"+this.weekdaysShort(o,"")+"|^"+this.weekdaysMin(o,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},$n.weekdaysRegex=function(e){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||ut.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(g(this,"_weekdaysRegex")||(this._weekdaysRegex=it),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},$n.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||ut.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(g(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=lt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},$n.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(g(this,"_weekdaysRegex")||ut.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(g(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ct),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},$n.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},$n.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},_t("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===we(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),h.lang=R("moment.lang is deprecated. Use moment.locale instead.",_t),h.langData=R("moment.langData is deprecated. Use moment.localeData instead.",St);var Fn=Math.abs;function jn(e,t,n,r){var o=an(t,n);return e._milliseconds+=r*o._milliseconds,e._days+=r*o._days,e._months+=r*o._months,e._bubble()}function Hn(e){return e<0?Math.floor(e):Math.ceil(e)}function qn(e){return 4800*e/146097}function Wn(e){return 146097*e/4800}function Gn(e){return function(){return this.as(e)}}var Zn=Gn("ms"),Kn=Gn("s"),Qn=Gn("m"),Jn=Gn("h"),Xn=Gn("d"),er=Gn("w"),tr=Gn("M"),nr=Gn("Q"),rr=Gn("y"),or=Zn;function ar(e){return function(){return this.isValid()?this._data[e]:NaN}}var sr=ar("milliseconds"),ir=ar("seconds"),lr=ar("minutes"),cr=ar("hours"),dr=ar("days"),ur=ar("months"),hr=ar("years");var pr=Math.round,mr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function gr(e,t,n,r,o){return o.relativeTime(t||1,!!n,e,r)}var fr=Math.abs;function kr(e){return(e>0)-(e<0)||+e}function yr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,o,a,s,i,l=fr(this._milliseconds)/1e3,c=fr(this._days),d=fr(this._months),u=this.asSeconds();return u?(e=be(l/60),t=be(e/60),l%=60,e%=60,n=be(d/12),d%=12,r=l?l.toFixed(3).replace(/\.?0+$/,""):"",o=u<0?"-":"",a=kr(this._months)!==kr(u)?"-":"",s=kr(this._days)!==kr(u)?"-":"",i=kr(this._milliseconds)!==kr(u)?"-":"",o+"P"+(n?a+n+"Y":"")+(d?a+d+"M":"")+(c?s+c+"D":"")+(t||e||l?"T":"")+(t?i+t+"H":"")+(e?i+e+"M":"")+(l?i+r+"S":"")):"P0D"}var br=Gt.prototype;br.isValid=function(){return this._isValid},br.abs=function(){var e=this._data;return this._milliseconds=Fn(this._milliseconds),this._days=Fn(this._days),this._months=Fn(this._months),e.milliseconds=Fn(e.milliseconds),e.seconds=Fn(e.seconds),e.minutes=Fn(e.minutes),e.hours=Fn(e.hours),e.months=Fn(e.months),e.years=Fn(e.years),this},br.add=function(e,t){return jn(this,e,t,1)},br.subtract=function(e,t){return jn(this,e,t,-1)},br.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=G(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+qn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Wn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},br.asMilliseconds=Zn,br.asSeconds=Kn,br.asMinutes=Qn,br.asHours=Jn,br.asDays=Xn,br.asWeeks=er,br.asMonths=tr,br.asQuarters=nr,br.asYears=rr,br.valueOf=or,br._bubble=function(){var e,t,n,r,o,a=this._milliseconds,s=this._days,i=this._months,l=this._data;return a>=0&&s>=0&&i>=0||a<=0&&s<=0&&i<=0||(a+=864e5*Hn(Wn(i)+s),s=0,i=0),l.milliseconds=a%1e3,e=be(a/1e3),l.seconds=e%60,t=be(e/60),l.minutes=t%60,n=be(t/60),l.hours=n%24,s+=be(n/24),i+=o=be(qn(s)),s-=Hn(Wn(o)),r=be(i/12),i%=12,l.days=s,l.months=i,l.years=r,this},br.clone=function(){return an(this)},br.get=function(e){return e=G(e),this.isValid()?this[e+"s"]():NaN},br.milliseconds=sr,br.seconds=ir,br.minutes=lr,br.hours=cr,br.days=dr,br.weeks=function(){return be(this.days()/7)},br.months=ur,br.years=hr,br.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,o=!1,a=mr;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(o=e),"object"==typeof t&&(a=Object.assign({},mr,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),r=function(e,t,n,r){var o=an(e).abs(),a=pr(o.as("s")),s=pr(o.as("m")),i=pr(o.as("h")),l=pr(o.as("d")),c=pr(o.as("M")),d=pr(o.as("w")),u=pr(o.as("y")),h=a<=n.ss&&["s",a]||a<n.s&&["ss",a]||s<=1&&["m"]||s<n.m&&["mm",s]||i<=1&&["h"]||i<n.h&&["hh",i]||l<=1&&["d"]||l<n.d&&["dd",l];return null!=n.w&&(h=h||d<=1&&["w"]||d<n.w&&["ww",d]),(h=h||c<=1&&["M"]||c<n.M&&["MM",c]||u<=1&&["y"]||["yy",u])[2]=t,h[3]=+e>0,h[4]=r,gr.apply(null,h)}(this,!o,a,n=this.localeData()),o&&(r=n.pastFuture(+this,r)),n.postformat(r)},br.toISOString=yr,br.toString=yr,br.toJSON=yr,br.locale=fn,br.localeData=yn,br.toIsoString=R("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",yr),br.lang=kn,j("X",0,0,"unix"),j("x",0,0,"valueOf"),fe("x",de),fe("X",/[+-]?\d+(\.\d{1,3})?/),xe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),xe("x",(function(e,t,n){n._d=new Date(we(e))})),
|
|
2
|
-
//! moment.js
|
|
3
|
-
h.version="2.30.1",i=Ft,h.fn=Ln,h.min=function(){return qt("isBefore",[].slice.call(arguments,0))},h.max=function(){return qt("isAfter",[].slice.call(arguments,0))},h.now=function(){return Date.now?Date.now():+new Date},h.utc=x,h.unix=function(e){return Ft(1e3*e)},h.months=function(e,t){return zn(e,t,"months")},h.isDate=b,h.locale=_t,h.invalid=S,h.duration=an,h.isMoment=D,h.weekdays=function(e,t,n){return Un(e,t,n,"weekdays")},h.parseZone=function(){return Ft.apply(null,arguments).parseZone()},h.localeData=St,h.isDuration=Zt,h.monthsShort=function(e,t){return zn(e,t,"monthsShort")},h.weekdaysMin=function(e,t,n){return Un(e,t,n,"weekdaysMin")},h.defineLocale=Ct,h.updateLocale=function(e,t){if(null!=t){var n,r,o=kt;null!=yt[e]&&null!=yt[e].parentLocale?yt[e].set(L(yt[e]._config,t)):(null!=(r=xt(e))&&(o=r._config),t=L(o,t),null==r&&(t.abbr=e),(n=new P(t)).parentLocale=yt[e],yt[e]=n),_t(e)}else null!=yt[e]&&(null!=yt[e].parentLocale?(yt[e]=yt[e].parentLocale,e===_t()&&_t(e)):null!=yt[e]&&delete yt[e]);return yt[e]},h.locales=function(){return V(yt)},h.weekdaysShort=function(e,t,n){return Un(e,t,n,"weekdaysShort")},h.normalizeUnits=G,h.relativeTimeRounding=function(e){return void 0===e?pr:"function"==typeof e&&(pr=e,!0)},h.relativeTimeThreshold=function(e,t){return void 0!==mr[e]&&(void 0===t?mr[e]:(mr[e]=t,"s"===e&&(mr.ss=t-1),!0))},h.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},h.prototype=Ln,h.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const wr=t.defineComponent({name:"HeatMap",props:{activityRecords:{type:Array,default:()=>[]},activityRecordsGetter:{type:Function,default:null},inactiveColor:{type:Object,default:()=>({h:0,s:0,l:.9})},activeColor:{type:Object,default:()=>({h:155,s:1,l:.5})},cellSize:{type:Number,default:12},cellMargin:{type:Number,default:3},enableSeasonalColors:{type:Boolean,default:!0}},data:()=>({isLoading:!1,localActivityRecords:[],heatmapData:{},weeks:[],tooltipData:null,tooltipStyle:{},maxInRange:0}),computed:{width(){return 53*(this.cellSize+this.cellMargin)},height(){return 7*(this.cellSize+this.cellMargin)},effectiveActivityRecords(){const e=Array.isArray(this.localActivityRecords)&&this.localActivityRecords.length>0,t=e?this.localActivityRecords:this.activityRecords||[];return console.log("Using effectiveActivityRecords, count:",t.length,"source:",e?"local":"prop"),t}},watch:{activityRecords:{handler(){this.processRecords(),this.createWeeksData()},immediate:!0}},async created(){if(this.activityRecordsGetter)try{this.isLoading=!0,console.log("Fetching activity records using getter...");let e=await this.activityRecordsGetter();Array.isArray(e)?(this.localActivityRecords=e.filter((e=>{if(!e||!e.timeStamp)return!1;try{const t=h(e.timeStamp);return t.isValid()&&t.year()>2e3&&t.year()<2100}catch(t){return!1}})),console.log(`Received ${e.length} records, ${this.localActivityRecords.length} valid after filtering`),this.processRecords(),this.createWeeksData()):(console.error("Activity records getter did not return an array:",e),this.localActivityRecords=[])}catch(e){console.error("Error fetching activity records:",e),this.localActivityRecords=[]}finally{this.isLoading=!1}else console.log("No activityRecordsGetter provided, using direct activityRecords prop")},methods:{toDateString(e){const t=h(e);return h.months()[t.month()]+" "+t.date()},processRecords(){const e=this.effectiveActivityRecords||[];console.log(`Processing ${e.length} records`);const t={};if(0===e.length)return console.log("No records to process"),void(this.heatmapData=t);const n=new Set,r={};let o=0,a=0;for(let i=0;i<e.length;i++){const l=e[i];if(l&&"object"==typeof l&&l.timeStamp)try{let e;if("string"==typeof l.timeStamp)e=h(l.timeStamp).format("YYYY-MM-DD");else if("number"==typeof l.timeStamp)e=h(new Date(l.timeStamp)).format("YYYY-MM-DD");else{if("object"!=typeof l.timeStamp){a++;continue}e="function"==typeof l.timeStamp.format?l.timeStamp.format("YYYY-MM-DD"):l.timeStamp instanceof Date?h(l.timeStamp).format("YYYY-MM-DD"):h(String(l.timeStamp)).format("YYYY-MM-DD")}if(h(e,"YYYY-MM-DD",!0).isValid()){t[e]=(t[e]||0)+1,n.add(e);const a=e.substring(0,7);r[a]=(r[a]||0)+1,o++}else a++}catch(s){a++}else a++}console.log(`Processed ${o} valid dates, ${a} invalid dates`),console.log(`Found ${n.size} unique dates`),console.log("Date distribution by month:",r),this.heatmapData=t},createWeeksData(){this.weeks=[],this.maxInRange=0;const e=h(),t=e.clone().subtract(52,"weeks"),n=t.clone().startOf("week");console.log("Creating weeks data from",t.format("YYYY-MM-DD"),"to",e.format("YYYY-MM-DD")),0===Object.keys(this.heatmapData).length&&console.log("No heatmap data available to display");const r=Object.keys(this.heatmapData).slice(0,5);for(console.log("Sample dates in heatmap data:",r);n.isSameOrBefore(e);){const e=[];for(let t=0;t<7;t++){const t=n.format("YYYY-MM-DD"),r={date:t,count:this.heatmapData[t]||0};e.push(r),r.count>this.maxInRange&&(this.maxInRange=r.count),n.add(1,"day")}this.weeks.push(e)}console.log("Weeks data created, maxInRange:",this.maxInRange);let o=0,a=0;Object.values(this.heatmapData).forEach((e=>{o++,a+=e})),console.log(`Activity summary: ${a} activities across ${o} days`)},getColor(e){if(0===this.maxInRange)return this.hslToString(this.inactiveColor);const t=0===e?0:Math.min(2*e/this.maxInRange,1);let n=this.activeColor;if(this.enableSeasonalColors){const e=h();11===e.month()&&e.date()>=5?n=Math.random()>.5?{h:350,s:.8,l:.5}:{h:135,s:.8,l:.4}:9===e.month()&&e.date()>=25&&(n=Math.random()>.5?{h:0,s:0,l:0}:Math.random()>.5?{h:30,s:1,l:.5}:{h:270,s:1,l:.5})}const r=n.h,o=this.interpolate(this.inactiveColor.s,n.s,t),a=this.interpolate(this.inactiveColor.l,n.l,t);return this.hslToString({h:r,s:o,l:a})},interpolate:(e,t,n)=>e+(t-e)*n,hslToString:e=>`hsl(${e.h}, ${100*e.s}%, ${100*e.l}%)`,showTooltip(e,t){this.tooltipData=e,this.tooltipStyle={position:"absolute",left:`${t.pageX+10}px`,top:`${t.pageY+10}px`}},hideTooltip(){this.tooltipData=null}}}),vr=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},xr=["width","height"],_r=["transform"],Cr=["y","width","height","fill","onMouseover"];const Sr=vr(wr,[["render",function(e,n,r,o,a,s){return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(),t.createElementBlock("svg",{width:e.width,height:e.height},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.weeks,((r,o)=>(t.openBlock(),t.createElementBlock("g",{key:o,transform:`translate(${o*(e.cellSize+e.cellMargin)}, 0)`},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r,((r,o)=>(t.openBlock(),t.createElementBlock("rect",{key:r.date,x:0,y:o*(e.cellSize+e.cellMargin),width:e.cellSize,height:e.cellSize,fill:e.getColor(r.count),onMouseover:t=>e.showTooltip(r,t),onMouseout:n[0]||(n[0]=(...t)=>e.hideTooltip&&e.hideTooltip(...t))},null,40,Cr)))),128))],8,_r)))),128))],8,xr)),e.tooltipData?(t.openBlock(),t.createElementBlock("div",{key:0,class:"tooltip",style:t.normalizeStyle(e.tooltipStyle)},t.toDisplayString(e.tooltipData.count)+" review"+t.toDisplayString(1!==e.tooltipData.count?"s":"")+" on "+t.toDisplayString(e.toDateString(e.tooltipData.date)),5)):t.createCommentVNode("",!0)])}],["__scopeId","data-v-ca46239a"]]);function Nr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Er,Tr={exports:{}};var Mr,Dr=(Er||(Er=1,Mr=Tr,function(e,t){if(e){for(var n,r={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},o={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},a={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},s={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},i=1;i<20;++i)r[111+i]="f"+i;for(i=0;i<=9;++i)r[i+96]=i.toString();m.prototype.bind=function(e,t,n){var r=this;return e=e instanceof Array?e:[e],r._bindMultiple.call(r,e,t,n),r},m.prototype.unbind=function(e,t){return this.bind.call(this,e,(function(){}),t)},m.prototype.trigger=function(e,t){var n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n},m.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},m.prototype.stopCallback=function(e,t){if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(p(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){var n=e.composedPath()[0];n!==e.target&&(t=n)}return"INPUT"==t.tagName||"SELECT"==t.tagName||"TEXTAREA"==t.tagName||t.isContentEditable},m.prototype.handleKey=function(){return this._handleKey.apply(this,arguments)},m.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(r[t]=e[t]);n=null},m.init=function(){var e=m(t);for(var n in e)"_"!==n.charAt(0)&&(m[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n))},m.init(),e.Mousetrap=m,Mr.exports&&(Mr.exports=m)}function l(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function c(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return r[e.which]?r[e.which]:o[e.which]?o[e.which]:String.fromCharCode(e.which).toLowerCase()}function d(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}function u(e,t,o){return o||(o=function(){if(!n)for(var e in n={},r)e>95&&e<112||r.hasOwnProperty(e)&&(n[r[e]]=e);return n}()[e]?"keydown":"keypress"),"keypress"==o&&t.length&&(o="keydown"),o}function h(e,t){var n,r,o,i=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),o=0;o<n.length;++o)r=n[o],s[r]&&(r=s[r]),t&&"keypress"!=t&&a[r]&&(r=a[r],i.push("shift")),d(r)&&i.push(r);return{key:r,modifiers:i,action:t=u(r,i,t)}}function p(e,n){return null!==e&&e!==t&&(e===n||p(e.parentNode,n))}function m(e){var n=this;if(e=e||t,!(n instanceof m))return new m(e);n.target=e,n._callbacks={},n._directMap={};var r,o={},a=!1,s=!1,i=!1;function u(e){e=e||{};var t,n=!1;for(t in o)e[t]?n=!0:o[t]=0;n||(i=!1)}function p(e,t,r,a,s,i){var l,c,u,h,p=[],m=r.type;if(!n._callbacks[e])return[];for("keyup"==m&&d(e)&&(t=[e]),l=0;l<n._callbacks[e].length;++l)if(c=n._callbacks[e][l],(a||!c.seq||o[c.seq]==c.level)&&m==c.action&&("keypress"==m&&!r.metaKey&&!r.ctrlKey||(u=t,h=c.modifiers,u.sort().join(",")===h.sort().join(",")))){var g=!a&&c.combo==s,f=a&&c.seq==a&&c.level==i;(g||f)&&n._callbacks[e].splice(l,1),p.push(c)}return p}function g(e,t,r,o){n.stopCallback(t,t.target||t.srcElement,r,o)||!1===e(t,r)&&(function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}(t),function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}(t))}function f(e){"number"!=typeof e.which&&(e.which=e.keyCode);var t=c(e);t&&("keyup"!=e.type||a!==t?n.handleKey(t,function(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}(e),e):a=!1)}function k(e,t,n,s){function l(t){return function(){i=t,++o[e],clearTimeout(r),r=setTimeout(u,1e3)}}function d(t){g(n,t,e),"keyup"!==s&&(a=c(t)),setTimeout(u,10)}o[e]=0;for(var p=0;p<t.length;++p){var m=p+1===t.length?d:l(s||h(t[p+1]).action);y(t[p],m,s,e,p)}}function y(e,t,r,o,a){n._directMap[e+":"+r]=t;var s,i=(e=e.replace(/\s+/g," ")).split(" ");i.length>1?k(e,i,t,r):(s=h(e,r),n._callbacks[s.key]=n._callbacks[s.key]||[],p(s.key,s.modifiers,{type:s.action},o,e,a),n._callbacks[s.key][o?"unshift":"push"]({callback:t,modifiers:s.modifiers,action:s.action,seq:o,level:a,combo:e}))}n._handleKey=function(e,t,n){var r,o=p(e,t,n),a={},l=0,c=!1;for(r=0;r<o.length;++r)o[r].seq&&(l=Math.max(l,o[r].level));for(r=0;r<o.length;++r)if(o[r].seq){if(o[r].level!=l)continue;c=!0,a[o[r].seq]=1,g(o[r].callback,n,o[r].combo,o[r].seq)}else c||g(o[r].callback,n,o[r].combo);var h="keypress"==n.type&&s;n.type!=i||d(e)||h||u(a),s=c&&"keydown"==n.type},n._bindMultiple=function(e,t,n){for(var r=0;r<e.length;++r)y(e[r],t,n)},l(e,"keypress",f),l(e,"keydown",f),l(e,"keyup",f)}}("undefined"!=typeof window?window:null,"undefined"!=typeof window?document:null)),Tr.exports);const Br=Nr(Dr);var Rr;Rr||(Rr=1,function(e){if(e){var t={},n=e.prototype.stopCallback;e.prototype.stopCallback=function(e,r,o,a){return!!this.paused||!t[o]&&!t[a]&&n.call(this,e,r,o)},e.prototype.bindGlobal=function(e,n,r){if(this.bind(e,n,r),e instanceof Array)for(var o=0;o<e.length;o++)t[e[o]]=!0;else t[e]=!0},e.init()}}("undefined"!=typeof Mousetrap?Mousetrap:void 0));const Vr=class _SkldrMouseTrap{constructor(){d(this,"mouseTrap"),d(this,"hotkeys"),this.mouseTrap=new Br,this.hotkeys=[]}static get commands(){return _SkldrMouseTrap.instance().hotkeys.map((e=>({command:e.command,hotkey:e.hotkey})))}static addBinding(e){const t=Array.isArray(e)?e:[e],n=_SkldrMouseTrap.instance();n.hotkeys=[...n.hotkeys,...t],t.forEach((e=>{Br.bindGlobal(e.hotkey,((t,n)=>{!function(){const e=document.activeElement;return(!(e instanceof HTMLInputElement)||"checkbox"!==e.type&&"radio"!==e.type)&&e instanceof HTMLElement&&("INPUT"===e.tagName||"TEXTAREA"===e.tagName||"SELECT"===e.tagName||e.isContentEditable)}()?e.callback(t,n):console.log(`Ignoring hotkey ${e.hotkey} while input element is focused`)}))}))}static removeBinding(e){const t=_SkldrMouseTrap.instance(),n=[...t.hotkeys];Array.isArray(e)&&!e.every((e=>"string"==typeof e||"number"==typeof e))?e.forEach((e=>{t.hotkeys=t.hotkeys.filter((t=>JSON.stringify(t.hotkey)!==JSON.stringify(e))),Br.unbind(e)})):(t.hotkeys=n.filter((t=>JSON.stringify(t.hotkey)!==JSON.stringify(e))),Br.unbind(e))}static reset(){console.warn("SkldrMouseTrap.reset() may affect hotkeys registered by other components. Consider using removeBinding() with specific hotkeys for better component isolation."),Br.reset(),_SkldrMouseTrap.instance().mouseTrap.reset(),_SkldrMouseTrap.instance().hotkeys=[]}static instance(){return _SkldrMouseTrap._instance||(_SkldrMouseTrap._instance=new _SkldrMouseTrap),_SkldrMouseTrap._instance}};d(Vr,"_instance");let Ir=Vr;const Ar=t.defineComponent({name:"SkMouseTrap",props:{refreshInterval:{type:Number,default:500}},data:()=>({commands:[],display:!1,intervalId:null}),created(){this.intervalId=window.setInterval(this.refreshState,this.refreshInterval)},beforeUnmount(){null!==this.intervalId&&clearInterval(this.intervalId)},methods:{refreshState(){this.commands=Ir.commands,this.display=this.commands.length>0}}}),Or={class:"text-caption ml-2"};const Lr=vr(Ar,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-toolbar-title"),d=t.resolveComponent("v-toolbar"),u=t.resolveComponent("v-spacer"),h=t.resolveComponent("v-list-item"),p=t.resolveComponent("v-list"),m=t.resolveComponent("v-card"),g=t.resolveComponent("v-dialog");return e.display?(t.openBlock(),t.createBlock(g,{key:0,"max-width":"500px",transition:"dialog-transition"},{activator:t.withCtx((({props:e})=>[t.createVNode(l,t.mergeProps({icon:"",color:"primary"},e),{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-keyboard")]))),_:1})])),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(d,{color:"secondary",dark:"",dense:""},{default:t.withCtx((()=>[t.createVNode(c,{class:"text-subtitle-1"},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("Shortcut keys:")]))),_:1})])),_:1}),t.createVNode(p,{dense:""},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.commands,(e=>(t.openBlock(),t.createBlock(h,{key:Array.isArray(e.hotkey)?e.hotkey.join(","):e.hotkey,class:"py-1"},{default:t.withCtx((()=>[t.createVNode(l,{variant:"outlined",color:"primary",class:"text-white",size:"small"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey),1)])),_:2},1024),t.createVNode(u),t.createElementVNode("span",Or,t.toDisplayString(e.command),1)])),_:2},1024)))),128))])),_:1})])),_:1})])),_:1})):t.createCommentVNode("",!0)}]]);const Pr=vr(t.defineComponent({name:"SkMouseTrapToolTip",props:{hotkey:{type:[String,Array],required:!0},command:{type:String,required:!0},disabled:{type:Boolean,default:!1},position:{type:String,default:"top"},showTooltip:{type:Boolean,default:!0},highlightEffect:{type:String,default:"glow"}},emits:["hotkey-triggered"],setup(e,{emit:n}){const r=t.ref(null),o=t.ref(!1);t.ref(`hotkey-${Math.random().toString(36).substring(2,15)}`);const a=t.computed((()=>{const t=Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey;return t.includes(" ")?t.toLowerCase().split(" ").map((e=>e.charAt(0)+e.slice(1))).join(", "):t.toLowerCase().split("+").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" + ")}));t.watch((()=>o.value),(t=>{if(!r.value||e.disabled)return;const n=r.value.querySelector('button, a, input[type="button"], [role="button"]');n&&(n.style.transition="all 250ms ease",t&&"none"!==e.highlightEffect?n.style.filter="brightness(1.1)":n.style.filter="")}));const s=e=>{"Control"===e.key&&(o.value=!0)},i=e=>{"Control"===e.key&&(o.value=!1)},l=()=>{if(e.disabled||!r.value)return;let t=r.value.querySelector('button, a, input[type="button"], [role="button"]');if(t||(t=r.value.querySelector("v-list-item, .v-list-item, router-link, .router-link, a, [to]")),t||!r.value.hasAttribute("to")&&"A"!==r.value.tagName&&!r.value.classList.contains("v-list-item")||(t=r.value),!t){const e=r.value.closest("v-list-item, .v-list-item, a, [to]");e&&(t=e)}if(t)if(t.hasAttribute("to")){const r=t.getAttribute("to");if(r&&window.location.pathname!==r){const e=window.$nuxt?.$router||window.$router;e&&"function"==typeof e.push?e.push(r):window.location.pathname=r}n("hotkey-triggered",e.hotkey)}else t.click(),n("hotkey-triggered",e.hotkey);else console.log("No clickable element found for hotkey",e.hotkey),n("hotkey-triggered",e.hotkey)},c=()=>{e.disabled||Ir.addBinding({hotkey:e.hotkey,command:e.command,callback:l})},d=()=>{e.disabled||Ir.removeBinding(e.hotkey)};return t.watch((()=>e.disabled),(e=>{e?d():c()})),t.onMounted((()=>{document.addEventListener("keydown",s),document.addEventListener("keyup",i),c()})),t.onBeforeUnmount((()=>{document.removeEventListener("keydown",s),document.removeEventListener("keyup",i),d()})),{wrapperElement:r,isControlKeyPressed:o,formattedHotkey:a}}}),[["render",function(e,n,r,o,a,s){return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["sk-mousetrap-tooltip-wrapper",[e.isControlKeyPressed&&!e.disabled&&"none"!==e.highlightEffect?`sk-mousetrap-highlight-${e.highlightEffect}`:""]]),ref:"wrapperElement"},[t.renderSlot(e.$slots,"default",{},void 0,!0),t.createVNode(t.Transition,{name:"fade"},{default:t.withCtx((()=>[e.showTooltip&&e.isControlKeyPressed&&!e.disabled?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["sk-mousetrap-tooltip",{"sk-mt-tooltip-top":"top"===e.position,"sk-mt-tooltip-bottom":"bottom"===e.position,"sk-mt-tooltip-left":"left"===e.position,"sk-mt-tooltip-right":"right"===e.position}])},t.toDisplayString(e.formattedHotkey),3)):t.createCommentVNode("",!0)])),_:1})],2)}],["__scopeId","data-v-5d6fb09c"]]),$r=(()=>{let e=null;return{setInstance(t){e=t},getInstance:()=>e,alertUser(t){e?e.addSnack(t):console.error("SnackbarService not found")}}})(),{setInstance:Yr,alertUser:zr}=$r,Ur=t.defineComponent({name:"SnackbarService",data:()=>({snacks:[],show:[]}),mounted(){Yr(this)},methods:{addSnack(e){this.snacks.push(e),this.show.push(!0)},close(){this.show.pop(),this.show.push(!1)},getColor:e=>e.status===n.Status.ok?"success":e.status===n.Status.error?"error":e.status===n.Status.warning?"yellow":void 0}}),Fr={class:"d-flex align-center justify-space-between w-100"};const jr=vr(Ur,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-snackbar");return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.snacks,(r=>(t.openBlock(),t.createBlock(c,{key:e.snacks.indexOf(r),modelValue:e.show[e.snacks.indexOf(r)],"onUpdate:modelValue":t=>e.show[e.snacks.indexOf(r)]=t,timeout:r.timeout,location:"bottom right",color:e.getColor(r)},{default:t.withCtx((()=>[t.createElementVNode("div",Fr,[t.createElementVNode("span",null,t.toDisplayString(r.text),1),t.createVNode(l,{icon:"",variant:"text",onClick:n[0]||(n[0]=t=>e.close())},{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-close")]))),_:1})])),_:1})])])),_:2},1032,["modelValue","onUpdate:modelValue","timeout","color"])))),128))])}]]),Hr=t.defineComponent({name:"PaginatingToolbar",props:{pages:{type:Array,required:!0},page:{type:Number,required:!0},title:{type:String,required:!1,default:""},subtitle:{type:String,required:!1,default:""}},emits:["first","prev","next","last","set-page"]}),qr={key:0,class:"ms-2 text-subtitle-2","data-cy":"paginating-toolbar-subtitle"};const Wr=vr(Hr,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-toolbar-title"),l=t.resolveComponent("v-spacer"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-select"),h=t.resolveComponent("v-toolbar");return t.openBlock(),t.createBlock(h,{density:"compact"},{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.title),1),e.subtitle?(t.openBlock(),t.createElementBlock("span",qr,t.toDisplayString(e.subtitle),1)):t.createCommentVNode("",!0)])),_:1}),t.createVNode(l),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:1==e.page,onClick:n[0]||(n[0]=t=>e.$emit("first"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-page-first")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:1==e.page,onClick:n[1]||(n[1]=t=>e.$emit("prev"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-chevron-left")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(u,{"model-value":e.page,items:e.pages,class:"pageSelect",density:"compact","hide-details":"","return-object":!1,variant:"outlined","onUpdate:modelValue":n[2]||(n[2]=t=>e.$emit("set-page",t))},{selection:t.withCtx((({item:e})=>[t.createTextVNode(t.toDisplayString(e.value),1)])),_:1},8,["model-value","items"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:e.page==e.pages.length,onClick:n[3]||(n[3]=t=>e.$emit("next"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-chevron-right")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:e.page==e.pages.length,onClick:n[4]||(n[4]=t=>e.$emit("last"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-page-last")]))),_:1})])),_:1},8,["disabled"])])),_:1})}],["__scopeId","data-v-a75fea7e"]]),Gr=t.defineComponent({name:"CardSearch",emits:{search:e=>"string"==typeof e},data:()=>({query:""}),methods:{search(){this.$emit("search",this.query)}}}),Zr={class:"card-search"};const Kr=vr(Gr,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-text-field");return t.openBlock(),t.createElementBlock("div",Zr,[t.createVNode(i,{modelValue:e.query,"onUpdate:modelValue":n[0]||(n[0]=t=>e.query=t),label:"Search for cards...","append-icon":"mdi-magnify","onClick:append":e.search,onKeydown:t.withKeys(e.search,["enter"])},null,8,["modelValue","onClick:append","onKeydown"])])}]]),Qr=t.defineComponent({name:"CardSearchResults",emits:{"card-selected":e=>"string"==typeof e.cardId&&"string"==typeof e.courseId},props:{query:{type:String,required:!0},dataLayer:{type:Object,required:!0},courseFilter:{type:String,default:null}},data:()=>({cards:[],loading:!1,error:null,selectedCardId:null}),watch:{query:{immediate:!0,handler(e){e&&this.fetchResults(e)}}},methods:{async fetchResults(e){this.loading=!0,this.error=null;try{let t=[];if(this.courseFilter)t=[this.courseFilter],console.log(`Filtering search to course: ${this.courseFilter}`);else{const{CourseLookup:e}=await import("@vue-skuilder/db");t=(await e.allCourseWare()).map((e=>e._id)).filter(Boolean),console.log(`Searching across all ${t.length} courses`)}const n=[];for(const r of t){const t=this.dataLayer.getCourseDB(r),o=await t.searchCards(e);for(const e of o)n.push({...e,courseId:r})}this.cards=n,console.log(`Search completed: found ${n.length} cards across ${t.length} courses`)}catch(t){this.error="Error fetching search results.",console.error("Search error:",t)}finally{this.loading=!1}},selectCard(e){this.selectedCardId=e._id,this.$emit("card-selected",{cardId:e._id,courseId:e.courseId})}}}),Jr={class:"card-search-results"},Xr={key:0},eo={key:1},to={key:2};const no=vr(Qr,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-list-item-title"),l=t.resolveComponent("v-list-item-subtitle"),c=t.resolveComponent("v-list-item"),d=t.resolveComponent("v-list");return t.openBlock(),t.createElementBlock("div",Jr,[e.loading?(t.openBlock(),t.createElementBlock("div",Xr,"Loading...")):e.error?(t.openBlock(),t.createElementBlock("div",eo,t.toDisplayString(e.error),1)):(t.openBlock(),t.createElementBlock("div",to,[t.createVNode(d,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cards,(n=>(t.openBlock(),t.createBlock(c,{key:n._id,onClick:t=>e.selectCard(n),class:t.normalizeClass([{"selected-card":n._id===e.selectedCardId},"cursor-pointer"])},{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n._id),1)])),_:2},1024),t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Course: "+t.toDisplayString(n.courseId),1)])),_:2},1024)])),_:2},1032,["onClick","class"])))),128))])),_:1})]))])}],["__scopeId","data-v-285e13bd"]]),ro=t.defineComponent({name:"CardHistoryViewer",props:{cardId:{type:String,required:!0},courseId:{type:String,required:!0},userId:{type:String,required:!0},userDB:{type:Object,required:!0}},data:()=>({history:[],cardHistory:null,bestIntervalHumanized:"",loading:!1,error:null,headers:[{title:"Timestamp",key:"formattedTimeStamp"},{title:"Interval",key:"userFriendlyInterval"},{title:"Time Spent (s)",key:"timeSpentSeconds"},{title:"Correct?",key:"isCorrect"},{title:"Performance",key:"performance"},{title:"Prior Attempts",key:"priorAttemps"},{title:"User Answer",key:"userAnswer"}]}),watch:{cardId:{immediate:!0,handler(e){e&&this.userDB&&this.fetchHistory()}},userDB:{handler(e){e&&this.cardId&&this.fetchHistory()}}},methods:{async fetchHistory(){this.loading=!0,this.error=null;try{const e=r.getCardHistoryID(this.courseId,this.cardId),t=await this.userDB.get(e);this.cardHistory=t,this.bestIntervalHumanized=h.duration(t.bestInterval,"seconds").humanize();const n=[...t.records].sort(((e,t)=>h(e.timeStamp).valueOf()-h(t.timeStamp).valueOf()));this.history=n.map(((e,t)=>{const r=h(e.timeStamp),o={...e,formattedTimeStamp:r.format("YYYY-MM-DD HH:mm:ss"),timeSpentSeconds:Math.round(e.timeSpent/1e3),isCorrect:e.isCorrect,performance:e.performance,priorAttemps:e.priorAttemps,userAnswer:e.userAnswer};if(t>0){const e=h(n[t-1].timeStamp),a=r.diff(e,"seconds",!0);o.intervalFromPrevious=Math.round(100*a)/100,o.userFriendlyInterval=`${o.intervalFromPrevious} sec (${h.duration(a,"seconds").humanize()})`}return o}))}catch(e){this.error="Error fetching card history.",console.error(e)}finally{this.loading=!1}}}}),oo={class:"card-history-viewer"},ao={key:0},so={key:1},io={key:2,class:"error-message"},lo={key:3};const co=vr(ro,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-list-item-title"),c=t.resolveComponent("v-list-item-subtitle"),d=t.resolveComponent("v-list-item-content"),u=t.resolveComponent("v-list-item"),h=t.resolveComponent("v-card"),p=t.resolveComponent("v-data-table");return t.openBlock(),t.createElementBlock("div",oo,[e.userId?(t.openBlock(),t.createElementBlock("h3",ao,"Card History for User: "+t.toDisplayString(e.userId),1)):t.createCommentVNode("",!0),e.loading?(t.openBlock(),t.createElementBlock("div",so,"Loading...")):e.error?(t.openBlock(),t.createElementBlock("div",io,t.toDisplayString(e.error),1)):e.cardHistory?(t.openBlock(),t.createElementBlock("div",lo,[t.createVNode(h,{class:"mb-4"},{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("Summary")]))),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Best Interval: "+t.toDisplayString(e.cardHistory.bestInterval)+" seconds ("+t.toDisplayString(e.bestIntervalHumanized)+")",1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("The to-date largest interval between successful card reviews.")]))),_:1})])),_:1})])),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Lapses: "+t.toDisplayString(e.cardHistory.lapses),1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("The number of times that a card has been failed in review.")]))),_:1})])),_:1})])),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Streak: "+t.toDisplayString(e.cardHistory.streak),1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("The number of consecutive successful impressions on this card.")]))),_:1})])),_:1})])),_:1})])),_:1}),t.createVNode(p,{headers:e.headers,items:e.history,class:"elevation-1"},null,8,["headers","items"])])):t.createCommentVNode("",!0)])}],["__scopeId","data-v-a4bdfdfb"]]);function uo(e){return"object"==typeof e&&null!==e&&"submitAnswer"in e&&"priorAttempts"in e}class Displayable{constructor(e){if(0===e.length)throw new Error("\nDisplayable Constructor was called with no view Data.\n ");!function(e,t){for(let r=0;r<e.length;r++)e[r].fields.forEach(((e,o)=>{console.log(`[Displayable] shape[${r}].field[${o}]:\n ${JSON.stringify(e)}`),void 0===t[r][e.name]&&e.type!==n.FieldType.MEDIA_UPLOADS&&console.warn("[Displayable] missing data")}))}(this.dataShapes(),e)}}d(Displayable,"dataShapes"),d(Displayable,"views"),d(Displayable,"seedData"),d(Displayable,"acceptsUserData",!0);const ho=()=>{let e="fallback (empty string)",t="";if(!t&&"undefined"!=typeof window&&window.__SKUILDER_CONFIG__?.apiBase){const n=window.__SKUILDER_CONFIG__.apiBase.replace(/\/$/,"");t=n.startsWith("/")?n:`/${n}`,e="window.__SKUILDER_CONFIG__.apiBase"}return console.log("[authAPI] getApiBase() called"),console.log("[authAPI] source:",e),console.log("[authAPI] result:",t),t};async function po(e,t,n){try{const r={username:e,email:t};n&&(r.origin=n);const o=await fetch(`${ho()}/auth/send-verification`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(r)});if(!o.ok){const e=await o.text();return console.error("Send verification email error:",e),{ok:!1,error:`HTTP ${o.status}: ${o.statusText}`}}return await o.json()}catch(r){return console.error("Send verification email fetch error:",r),{ok:!1,error:r instanceof Error?r.message:"Network error"}}}async function mo(e){try{const t=await fetch(`${ho()}/auth/verify`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:e})});return t.ok?await t.json():{ok:!1,error:`HTTP ${t.status}: ${t.statusText}`}}catch(t){return{ok:!1,error:t instanceof Error?t.message:"Network error"}}}async function go(){try{const e=await fetch(`${ho()}/auth/status`,{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"});return e.ok?await e.json():{ok:!1,error:`HTTP ${e.status}: ${e.statusText}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Network error"}}}async function fo(e,t){try{const n={email:e};t&&(n.origin=t);const r=await fetch(`${ho()}/auth/request-reset`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)});return r.ok?await r.json():{ok:!1,error:`HTTP ${r.status}: ${r.statusText}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:"Network error"}}}async function ko(e,t){try{const n=await fetch(`${ho()}/auth/reset-password`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:e,newPassword:t})});return n.ok?await n.json():{ok:!1,error:`HTTP ${n.status}: ${n.statusText}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:"Network error"}}}const yo=vr(t.defineComponent({name:"StudySessionTimer",props:{timeRemaining:{type:Number,required:!0},sessionTimeLimit:{type:Number,required:!0,default:5}},emits:["add-time"],setup:(e,{emit:n})=>({hovered:t.ref(!1),formattedTimeRemaining:t.computed((()=>{let t="";const n=e.timeRemaining;n>60&&(t=Math.floor(n/60).toString()+":");const r=n%60;return t+=r>=10?r:"0"+r,n<=60&&(t+=" seconds"),t+=" left!",t})),percentageRemaining:t.computed((()=>e.timeRemaining>60?e.timeRemaining/(60*e.sessionTimeLimit)*100:e.timeRemaining/60*100)),timerColor:t.computed((()=>e.timeRemaining>60?"primary":"orange darken-3")),addSessionTime:()=>{n("add-time")}})}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-progress-circular"),d=t.resolveComponent("v-tooltip");return t.openBlock(),t.createBlock(d,{location:"right","open-delay":0,"close-delay":200,color:"secondary",class:"text-subtitle-1"},{activator:t.withCtx((({props:r})=>[t.createElementVNode("div",t.mergeProps({class:"timer-container"},r,{onMouseenter:n[0]||(n[0]=t=>e.hovered=!0),onMouseleave:n[1]||(n[1]=t=>e.hovered=!1)}),[t.createVNode(c,{alt:"Time remaining in study session",size:"64",width:"8",rotate:"0",color:e.timerColor,"model-value":e.percentageRemaining},{default:t.withCtx((()=>[e.timeRemaining>0&&e.hovered?(t.openBlock(),t.createBlock(l,{key:0,icon:"",color:"transparent",location:"bottom left",onClick:e.addSessionTime},{default:t.withCtx((()=>[t.createVNode(i,{size:"large"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("mdi-plus")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0)])),_:1},8,["color","model-value"])],16)])),default:t.withCtx((()=>[t.createTextVNode(" "+t.toDisplayString(e.formattedTimeRemaining),1)])),_:1})}],["__scopeId","data-v-5960940a"]]);const bo=vr(t.defineComponent({name:"CardViewer",ref:{},props:{sessionOrder:{type:Number,required:!1,default:0},card_id:{type:String,required:!0,default:""},course_id:{type:String,required:!0,default:""},view:{type:[Function,Object],required:!0},data:{type:Array,required:!0},user_elo:{type:Object,default:()=>({global:{score:1e3,count:0},tags:{},misc:{}})},card_elo:{type:Number,default:1e3}},emits:["emitResponse"],methods:{processResponse(e){console.log(`\n Card was displayed at ${e.timeStamp}\n User spent ${e.timeSpent} milliseconds with the card.\n `),this.$emit("emitResponse",e)}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(i,{elevation:"12"},{default:t.withCtx((()=>[(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.view),{ref:"activeView",key:e.course_id+"-"+e.card_id+"-"+e.sessionOrder,data:e.data,"modify-difficulty":e.user_elo.global.score-e.card_elo,class:"cardView ma-2 pa-2",onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,40,["data","modify-difficulty"]))])),_:1})}],["__scopeId","data-v-318fb94f"]]),wo=t.defineComponent({name:"SessionControllerDebug",props:{sessionController:{type:Object,required:!0}},setup(e){const n=t.ref(0);let r=null;t.onMounted((()=>{r=setInterval((()=>{n.value++}),500)})),t.onUnmounted((()=>{r&&clearInterval(r)}));return{debugInfo:t.computed((()=>(n.value,e.sessionController?e.sessionController.getDebugInfo():{reviewQueue:{length:0,dequeueCount:0,items:[]},newQueue:{length:0,dequeueCount:0,items:[]},failedQueue:{length:0,dequeueCount:0,items:[]},hydratedCache:{count:0,failedCacheSize:0,items:[]}})))}}}),vo={class:"debug-section"},xo={class:"debug-header"},_o={class:"debug-stats"},Co={class:"text-caption"},So={class:"text-caption ml-2"},No={key:0,class:"debug-items"},Eo={class:"text-caption"},To={class:"text-caption text-grey ml-1"},Mo={key:0,class:"text-caption text-grey"},Do={key:1,class:"text-caption text-grey"},Bo={class:"debug-section"},Ro={class:"debug-header"},Vo={class:"debug-stats"},Io={class:"text-caption"},Ao={class:"text-caption ml-2"},Oo={key:0,class:"debug-items"},Lo={class:"text-caption"},Po={class:"text-caption text-grey ml-1"},$o={key:0,class:"text-caption text-grey"},Yo={key:1,class:"text-caption text-grey"},zo={class:"debug-section"},Uo={class:"debug-header"},Fo={class:"debug-stats"},jo={class:"text-caption"},Ho={class:"text-caption ml-2"},qo={key:0,class:"debug-items"},Wo={class:"text-caption"},Go={class:"text-caption text-grey ml-1"},Zo={key:0,class:"text-caption text-grey"},Ko={key:1,class:"text-caption text-grey"},Qo={class:"debug-section"},Jo={class:"debug-header"},Xo={class:"debug-stats"},ea={class:"text-caption"},ta={class:"text-caption ml-2"},na={key:0,class:"debug-items"},ra={class:"text-caption"},oa={key:0,class:"text-caption text-grey"},aa={key:1,class:"text-caption text-grey"};const sa=vr(wo,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-card-title"),d=t.resolveComponent("v-col"),u=t.resolveComponent("v-row"),h=t.resolveComponent("v-divider"),p=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-card");return e.sessionController?(t.openBlock(),t.createBlock(m,{key:0,class:"session-debug ma-2",elevation:"2"},{default:t.withCtx((()=>[t.createVNode(c,{class:"text-caption bg-grey-darken-3"},{default:t.withCtx((()=>[n[1]||(n[1]=t.createTextVNode(" Session Controller Debug ")),t.createVNode(i),t.createVNode(l,{size:"small"},{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-bug")]))),_:1})])),_:1}),t.createVNode(p,{class:"pa-2"},{default:t.withCtx((()=>[t.createVNode(u,{dense:""},{default:t.withCtx((()=>[t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",vo,[t.createElementVNode("div",xo,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("mdi-calendar-check")]))),_:1}),n[3]||(n[3]=t.createElementVNode("strong",null,"Review Queue",-1))]),t.createElementVNode("div",_o,[t.createElementVNode("span",Co,"Length: "+t.toDisplayString(e.debugInfo.reviewQueue.length),1),t.createElementVNode("span",So,"Dequeued: "+t.toDisplayString(e.debugInfo.reviewQueue.dequeueCount),1)]),e.debugInfo.reviewQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",No,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.reviewQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",Eo,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",To,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.reviewQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",Mo," ... +"+t.toDisplayString(e.debugInfo.reviewQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",Do," (empty) "))])])),_:1}),t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",Bo,[t.createElementVNode("div",Ro,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-file-document-plus")]))),_:1}),n[5]||(n[5]=t.createElementVNode("strong",null,"New Cards Queue",-1))]),t.createElementVNode("div",Vo,[t.createElementVNode("span",Io,"Length: "+t.toDisplayString(e.debugInfo.newQueue.length),1),t.createElementVNode("span",Ao,"Dequeued: "+t.toDisplayString(e.debugInfo.newQueue.dequeueCount),1)]),e.debugInfo.newQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",Oo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.newQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",Lo,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",Po,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.newQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",$o," ... +"+t.toDisplayString(e.debugInfo.newQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",Yo," (empty) "))])])),_:1}),t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",zo,[t.createElementVNode("div",Uo,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[7]||(n[7]=t.createElementVNode("strong",null,"Failed Cards Queue",-1))]),t.createElementVNode("div",Fo,[t.createElementVNode("span",jo,"Length: "+t.toDisplayString(e.debugInfo.failedQueue.length),1),t.createElementVNode("span",Ho,"Dequeued: "+t.toDisplayString(e.debugInfo.failedQueue.dequeueCount),1)]),e.debugInfo.failedQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",qo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.failedQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",Wo,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",Go,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.failedQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",Zo," ... +"+t.toDisplayString(e.debugInfo.failedQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",Ko," (empty) "))])])),_:1})])),_:1}),t.createVNode(u,{dense:""},{default:t.withCtx((()=>[t.createVNode(d,{cols:"12"},{default:t.withCtx((()=>[t.createVNode(h,{class:"my-2"}),t.createElementVNode("div",Qo,[t.createElementVNode("div",Jo,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-database")]))),_:1}),n[9]||(n[9]=t.createElementVNode("strong",null,"Hydrated Cards Cache",-1))]),t.createElementVNode("div",Xo,[t.createElementVNode("span",ea,"Cached: "+t.toDisplayString(e.debugInfo.hydratedCache.count),1),t.createElementVNode("span",ta,"Failed Cache: "+t.toDisplayString(e.debugInfo.hydratedCache.failedCacheSize),1)]),e.debugInfo.hydratedCache.items.length>0?(t.openBlock(),t.createElementBlock("div",na,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.hydratedCache.items.slice(0,8),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item d-inline-block mr-3"},[t.createElementVNode("span",ra,t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1)])))),128)),e.debugInfo.hydratedCache.items.length>8?(t.openBlock(),t.createElementBlock("div",oa," ... +"+t.toDisplayString(e.debugInfo.hydratedCache.items.length-8)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",aa," (empty) "))])])),_:1})])),_:1})])),_:1})])),_:1})):t.createCommentVNode("",!0)}],["__scopeId","data-v-1a6ac7a1"]]);var ia={};!function e(t,n,r,o){var a=!!(t.Worker&&t.Blob&&t.Promise&&t.OffscreenCanvas&&t.OffscreenCanvasRenderingContext2D&&t.HTMLCanvasElement&&t.HTMLCanvasElement.prototype.transferControlToOffscreen&&t.URL&&t.URL.createObjectURL),s="function"==typeof Path2D&&"function"==typeof DOMMatrix;function i(){}function l(e){var r=n.exports.Promise,o=void 0!==r?r:t.Promise;return"function"==typeof o?new o(e):(e(i,i),null)}var c,d,u,h,p,m,g=function(e,t){return{transform:function(n){if(e)return n;if(t.has(n))return t.get(n);var r=new OffscreenCanvas(n.width,n.height);return r.getContext("2d").drawImage(n,0,0),t.set(n,r),r},clear:function(){t.clear()}}}(function(){if(!t.OffscreenCanvas)return!1;var e=new OffscreenCanvas(1,1),n=e.getContext("2d");n.fillRect(0,0,1,1);var r=e.transferToImageBitmap();try{n.createPattern(r,"no-repeat")}catch(o){return!1}return!0}(),new Map),f=(u=Math.floor(1e3/60),h={},p=0,"function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame?(c=function(e){var t=Math.random();return h[t]=requestAnimationFrame((function n(r){p===r||p+u-1<r?(p=r,delete h[t],e()):h[t]=requestAnimationFrame(n)})),t},d=function(e){h[e]&&cancelAnimationFrame(h[e])}):(c=function(e){return setTimeout(e,u)},d=function(e){return clearTimeout(e)}),{frame:c,cancel:d}),k=function(){var t,n,o={};return function(){if(t)return t;if(!r&&a){var s=["var CONFETTI, SIZE = {}, module = {};","("+e.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {"," if (msg.data.options) {"," CONFETTI(msg.data.options).then(function () {"," if (msg.data.callback) {"," postMessage({ callback: msg.data.callback });"," }"," });"," } else if (msg.data.reset) {"," CONFETTI && CONFETTI.reset();"," } else if (msg.data.resize) {"," SIZE.width = msg.data.resize.width;"," SIZE.height = msg.data.resize.height;"," } else if (msg.data.canvas) {"," SIZE.width = msg.data.canvas.width;"," SIZE.height = msg.data.canvas.height;"," CONFETTI = module.exports.create(msg.data.canvas);"," }","}"].join("\n");try{t=new Worker(URL.createObjectURL(new Blob([s])))}catch(i){return void 0!==typeof console&&"function"==typeof console.warn&&console.warn("🎊 Could not load worker",i),null}!function(e){function t(t,n){e.postMessage({options:t||{},callback:n})}e.init=function(t){var n=t.transferControlToOffscreen();e.postMessage({canvas:n},[n])},e.fire=function(r,a,s){if(n)return t(r,null),n;var i=Math.random().toString(36).slice(2);return n=l((function(a){function l(t){t.data.callback===i&&(delete o[i],e.removeEventListener("message",l),n=null,g.clear(),s(),a())}e.addEventListener("message",l),t(r,i),o[i]=l.bind(null,{data:{callback:i}})}))},e.reset=function(){for(var t in e.postMessage({reset:!0}),o)o[t](),delete o[t]}}(t)}return t}}(),y={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function b(e,t,n){return function(e,t){return t?t(e):e}(e&&null!=e[t]?e[t]:y[t],n)}function w(e){return e<0?0:Math.floor(e)}function v(e){return parseInt(e,16)}function x(e){return e.map(_)}function _(e){var t=String(e).replace(/[^0-9a-f]/gi,"");return t.length<6&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),{r:v(t.substring(0,2)),g:v(t.substring(2,4)),b:v(t.substring(4,6))}}function C(e){e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight}function S(e){var t=e.getBoundingClientRect();e.width=t.width,e.height=t.height}function N(e,t){t.x+=Math.cos(t.angle2D)*t.velocity+t.drift,t.y+=Math.sin(t.angle2D)*t.velocity+t.gravity,t.velocity*=t.decay,t.flat?(t.wobble=0,t.wobbleX=t.x+10*t.scalar,t.wobbleY=t.y+10*t.scalar,t.tiltSin=0,t.tiltCos=0,t.random=1):(t.wobble+=t.wobbleSpeed,t.wobbleX=t.x+10*t.scalar*Math.cos(t.wobble),t.wobbleY=t.y+10*t.scalar*Math.sin(t.wobble),t.tiltAngle+=.1,t.tiltSin=Math.sin(t.tiltAngle),t.tiltCos=Math.cos(t.tiltAngle),t.random=Math.random()+2);var n=t.tick++/t.totalTicks,r=t.x+t.random*t.tiltCos,o=t.y+t.random*t.tiltSin,a=t.wobbleX+t.random*t.tiltCos,i=t.wobbleY+t.random*t.tiltSin;if(e.fillStyle="rgba("+t.color.r+", "+t.color.g+", "+t.color.b+", "+(1-n)+")",e.beginPath(),s&&"path"===t.shape.type&&"string"==typeof t.shape.path&&Array.isArray(t.shape.matrix))e.fill(function(e,t,n,r,o,a,s){var i=new Path2D(e),l=new Path2D;l.addPath(i,new DOMMatrix(t));var c=new Path2D;return c.addPath(l,new DOMMatrix([Math.cos(s)*o,Math.sin(s)*o,-Math.sin(s)*a,Math.cos(s)*a,n,r])),c}(t.shape.path,t.shape.matrix,t.x,t.y,.1*Math.abs(a-r),.1*Math.abs(i-o),Math.PI/10*t.wobble));else if("bitmap"===t.shape.type){var l=Math.PI/10*t.wobble,c=.1*Math.abs(a-r),d=.1*Math.abs(i-o),u=t.shape.bitmap.width*t.scalar,h=t.shape.bitmap.height*t.scalar,p=new DOMMatrix([Math.cos(l)*c,Math.sin(l)*c,-Math.sin(l)*d,Math.cos(l)*d,t.x,t.y]);p.multiplySelf(new DOMMatrix(t.shape.matrix));var m=e.createPattern(g.transform(t.shape.bitmap),"no-repeat");m.setTransform(p),e.globalAlpha=1-n,e.fillStyle=m,e.fillRect(t.x-u/2,t.y-h/2,u,h),e.globalAlpha=1}else if("circle"===t.shape)e.ellipse?e.ellipse(t.x,t.y,Math.abs(a-r)*t.ovalScalar,Math.abs(i-o)*t.ovalScalar,Math.PI/10*t.wobble,0,2*Math.PI):function(e,t,n,r,o,a,s,i,l){e.save(),e.translate(t,n),e.rotate(a),e.scale(r,o),e.arc(0,0,1,s,i,l),e.restore()}(e,t.x,t.y,Math.abs(a-r)*t.ovalScalar,Math.abs(i-o)*t.ovalScalar,Math.PI/10*t.wobble,0,2*Math.PI);else if("star"===t.shape)for(var f=Math.PI/2*3,k=4*t.scalar,y=8*t.scalar,b=t.x,w=t.y,v=5,x=Math.PI/v;v--;)b=t.x+Math.cos(f)*y,w=t.y+Math.sin(f)*y,e.lineTo(b,w),f+=x,b=t.x+Math.cos(f)*k,w=t.y+Math.sin(f)*k,e.lineTo(b,w),f+=x;else e.moveTo(Math.floor(t.x),Math.floor(t.y)),e.lineTo(Math.floor(t.wobbleX),Math.floor(o)),e.lineTo(Math.floor(a),Math.floor(i)),e.lineTo(Math.floor(r),Math.floor(t.wobbleY));return e.closePath(),e.fill(),t.tick<t.totalTicks}function E(e,n){var s,i=!e,c=!!b(n||{},"resize"),d=!1,u=b(n,"disableForReducedMotion",Boolean),h=a&&!!b(n||{},"useWorker")?k():null,p=i?C:S,m=!(!e||!h)&&!!e.__confetti_initialized,y="function"==typeof matchMedia&&matchMedia("(prefers-reduced-motion)").matches;function v(t,n,a){for(var i,c,d,u,h,m=b(t,"particleCount",w),k=b(t,"angle",Number),y=b(t,"spread",Number),v=b(t,"startVelocity",Number),_=b(t,"decay",Number),C=b(t,"gravity",Number),S=b(t,"drift",Number),E=b(t,"colors",x),T=b(t,"ticks",Number),M=b(t,"shapes"),D=b(t,"scalar"),B=!!b(t,"flat"),R=function(e){var t=b(e,"origin",Object);return t.x=b(t,"x",Number),t.y=b(t,"y",Number),t}(t),V=m,I=[],A=e.width*R.x,O=e.height*R.y;V--;)I.push((i={x:A,y:O,angle:k,spread:y,startVelocity:v,color:E[V%E.length],shape:M[(u=0,h=M.length,Math.floor(Math.random()*(h-u))+u)],ticks:T,decay:_,gravity:C,drift:S,scalar:D,flat:B},c=void 0,d=void 0,c=i.angle*(Math.PI/180),d=i.spread*(Math.PI/180),{x:i.x,y:i.y,wobble:10*Math.random(),wobbleSpeed:Math.min(.11,.1*Math.random()+.05),velocity:.5*i.startVelocity+Math.random()*i.startVelocity,angle2D:-c+(.5*d-Math.random()*d),tiltAngle:(.5*Math.random()+.25)*Math.PI,color:i.color,shape:i.shape,tick:0,totalTicks:i.ticks,decay:i.decay,drift:i.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:3*i.gravity,ovalScalar:.6,scalar:i.scalar,flat:i.flat}));return s?s.addFettis(I):(s=function(e,t,n,a,s){var i,c,d=t.slice(),u=e.getContext("2d"),h=l((function(t){function l(){i=c=null,u.clearRect(0,0,a.width,a.height),g.clear(),s(),t()}i=f.frame((function t(){!r||a.width===o.width&&a.height===o.height||(a.width=e.width=o.width,a.height=e.height=o.height),a.width||a.height||(n(e),a.width=e.width,a.height=e.height),u.clearRect(0,0,a.width,a.height),(d=d.filter((function(e){return N(u,e)}))).length?i=f.frame(t):l()})),c=l}));return{addFettis:function(e){return d=d.concat(e),h},canvas:e,promise:h,reset:function(){i&&f.cancel(i),c&&c()}}}(e,I,p,n,a),s.promise)}function _(n){var r=u||b(n,"disableForReducedMotion",Boolean),o=b(n,"zIndex",Number);if(r&&y)return l((function(e){e()}));i&&s?e=s.canvas:i&&!e&&(e=function(e){var t=document.createElement("canvas");return t.style.position="fixed",t.style.top="0px",t.style.left="0px",t.style.pointerEvents="none",t.style.zIndex=e,t}(o),document.body.appendChild(e)),c&&!m&&p(e);var a={width:e.width,height:e.height};function g(){if(h){var t={getBoundingClientRect:function(){if(!i)return e.getBoundingClientRect()}};return p(t),void h.postMessage({resize:{width:t.width,height:t.height}})}a.width=a.height=null}function f(){s=null,c&&(d=!1,t.removeEventListener("resize",g)),i&&e&&(document.body.contains(e)&&document.body.removeChild(e),e=null,m=!1)}return h&&!m&&h.init(e),m=!0,h&&(e.__confetti_initialized=!0),c&&!d&&(d=!0,t.addEventListener("resize",g,!1)),h?h.fire(n,a,f):v(n,a,f)}return _.reset=function(){h&&h.reset(),s&&s.reset()},_}function T(){return m||(m=E(null,{useWorker:!0,resize:!0})),m}n.exports=function(){return T().apply(this,arguments)},n.exports.reset=function(){T().reset()},n.exports.create=E,n.exports.shapeFromPath=function(e){if(!s)throw new Error("path confetti are not supported in this browser");var t,n;"string"==typeof e?t=e:(t=e.path,n=e.matrix);var r=new Path2D(t),o=document.createElement("canvas").getContext("2d");if(!n){for(var a,i,l=1e3,c=l,d=l,u=0,h=0,p=0;p<l;p+=2)for(var m=0;m<l;m+=2)o.isPointInPath(r,p,m,"nonzero")&&(c=Math.min(c,p),d=Math.min(d,m),u=Math.max(u,p),h=Math.max(h,m));a=u-c,i=h-d;var g=Math.min(10/a,10/i);n=[g,0,0,g,-Math.round(a/2+c)*g,-Math.round(i/2+d)*g]}return{type:"path",path:t,matrix:n}},n.exports.shapeFromText=function(e){var t,n=1,r="#000000",o='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';"string"==typeof e?t=e:(t=e.text,n="scalar"in e?e.scalar:n,o="fontFamily"in e?e.fontFamily:o,r="color"in e?e.color:r);var a=10*n,s=a+"px "+o,i=new OffscreenCanvas(a,a),l=i.getContext("2d");l.font=s;var c=l.measureText(t),d=Math.ceil(c.actualBoundingBoxRight+c.actualBoundingBoxLeft),u=Math.ceil(c.actualBoundingBoxAscent+c.actualBoundingBoxDescent),h=c.actualBoundingBoxLeft+2,p=c.actualBoundingBoxAscent+2;d+=4,u+=4,(l=(i=new OffscreenCanvas(d,u)).getContext("2d")).font=s,l.fillStyle=r,l.fillText(t,h,p);var m=1/n;return{type:"bitmap",bitmap:i.transferToImageBitmap(),matrix:[m,0,0,m,-d*m/2,-u*m/2]}}}(function(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:this||{}}(),ia,!1);const la=ia.exports;ia.exports.create;const ca=t.defineComponent({name:"StudySession",ref:{},components:{CardViewer:bo,StudySessionTimer:yo,SkMouseTrap:Lr,HeatMap:Sr,SessionControllerDebug:sa},props:{sessionTimeLimit:{type:Number,required:!0},contentSources:{type:Array,required:!0},user:{type:Object,required:!0},dataLayer:{type:Object,required:!0},sessionConfig:{type:Object,default:()=>({likesConfetti:!1})},getViewComponent:{type:Function,required:!0}},emits:["session-finished","session-started","card-loaded","card-response","time-changed","session-prepared","session-error"],data:()=>({cardID:"",view:null,data:[],courseID:"",card_elo:1e3,courseNames:{},cardCount:1,sessionController:null,sessionPrepared:!1,sessionFinished:!1,sessionRecord:[],percentageRemaining:100,timerIsActive:!0,loading:!1,userCourseRegDoc:null,sessionContentSources:[],timeRemaining:300,intervalHandler:null,cardType:"",debugMode:!0===window.debugMode}),computed:{currentCard(){return this.sessionRecord[this.sessionRecord.length-1]}},async created(){this.userCourseRegDoc=await this.user.getCourseRegistrationsDoc(),console.log("[StudySession] Created lifecycle hook - starting initSession"),await this.initSession(),console.log("[StudySession] InitSession completed in created hook")},methods:{user_elo(e){const t=this.userCourseRegDoc.courses.find((t=>t.courseID===e));return t?n.toCourseElo(t.elo):n.toCourseElo(void 0)},handleClassroomMessage(){return e=>(zr({text:this.user?.getUsername()||"[Unknown user]",status:n.Status.ok}),console.log("[StudySession] There was a change in the classroom DB:"),console.log(`[StudySession] change: ${e}`),console.log(`[StudySession] Stringified change: ${JSON.stringify(e)}`),{})},incrementSessionClock(){const e=60*this.sessionTimeLimit-this.timeRemaining;this.sessionController.addTime(Math.min(e,60)),this.tick()},tick(){this.timeRemaining=this.sessionController.secondsRemaining,this.percentageRemaining=this.timeRemaining>60?this.timeRemaining/(60*this.sessionTimeLimit)*100:this.timeRemaining/60*100,this.$emit("time-changed",this.timeRemaining),0===this.timeRemaining&&clearInterval(this.intervalHandler)},async initSession(){let e=[];try{console.log(`[StudySession] starting study session w/ sources: ${JSON.stringify(this.contentSources)}`),console.log("[StudySession] Beginning preparation process"),this.sessionContentSources=t.markRaw((await Promise.all(this.contentSources.map((async e=>{try{return await r.getStudySource(e,this.user)}catch(t){return console.error(`Failed to load study source: ${e.type}/${e.id}`,t),null}})))).filter((e=>null!==e))),this.timeRemaining=60*this.sessionTimeLimit,e=await Promise.all(this.contentSources.filter((e=>"classroom"===e.type)).map((async e=>await this.dataLayer.getClassroomDB(e.id,"student")))),e.forEach((e=>{})),this.sessionController=t.markRaw(new r.SessionController(this.sessionContentSources,60*this.sessionTimeLimit,this.dataLayer,this.getViewComponent)),this.sessionController.sessionRecord=this.sessionRecord,await this.sessionController.prepareSession(),this.intervalHandler=setInterval(this.tick,1e3),this.sessionPrepared=!0,console.log("[StudySession] Session preparation complete, emitting session-prepared event"),this.$emit("session-prepared"),console.log("[StudySession] Event emission completed")}catch(n){console.error("[StudySession] Error during session preparation:",n),this.$emit("session-error",{message:"Failed to prepare study session",error:n})}try{this.contentSources.filter((e=>"course"===e.type)).forEach((async e=>this.courseNames[e.id]=(await this.dataLayer.getCoursesDB().getCourseConfig(e.id)).name)),console.log(`[StudySession] Session created:\n ${this.sessionController?.toString()||"Session controller not initialized"}\n User courses: ${this.contentSources.filter((e=>"course"===e.type)).map((e=>e.id)).toString()}\n User classrooms: ${e.map((e=>e._id)).toString()||"No classrooms"}\n `)}catch(n){console.error("[StudySession] Error during final session setup:",n)}if(this.sessionController)try{this.$emit("session-started"),this.loadCard(await this.sessionController.nextCard())}catch(n){console.error("[StudySession] Error loading next card:",n),this.$emit("session-error",{message:"Failed to load study card",error:n})}else console.error("[StudySession] Cannot load card: session controller not initialized"),this.$emit("session-error",{message:"Study session initialization failed"})},countCardViews(e,t){return this.sessionRecord.filter((n=>n.card.course_id===e&&n.card.card_id===t)).length},async processResponse(e){let t;this.$emit("card-response",e),this.timerIsActive=!0,e.cardID=this.cardID,e.courseID=this.courseID,this.currentCard.records.push(e),console.log("[StudySession] StudySession.processResponse is running...");try{t=this.logCardRecord(e)}catch(s){console.log(`Caught ${s} during putCardHistory...`)}let n=1,r=1;if(uo(this.$refs.cardViewer?.$refs.activeView)){const e=this.$refs.cardViewer.$refs.activeView;n=e.maxAttemptsPerView,r=e.maxSessionViews}const o=this.countCardViews(this.courseID,this.cardID),a=await this.sessionController.submitResponse(e,t,this.userCourseRegDoc,this.currentCard,this.courseID,this.cardID,n,r,o);try{this.handleUIFeedback(a)}catch(i){console.error(`[StudySession] Error handling UI feedback: ${i}.\n\nResult: ${JSON.stringify(a)}`)}a.shouldLoadNextCard&&this.loadCard(await this.sessionController.nextCard(a.nextCardAction)),a.shouldClearFeedbackShadow&&this.clearFeedbackShadow()},handleUIFeedback(e){if(e.isCorrect){try{this.$refs.shadowWrapper&&void 0!==e.performanceScore&&(this.$refs.shadowWrapper.setAttribute("style",`--r: ${255*(1-e.performanceScore)}; --g:255`),this.$refs.shadowWrapper.classList.add("correct"))}catch(t){console.warn(`[StudySession] Error setting shadowWrapper style: ${t}`)}this.sessionConfig.likesConfetti&&la({origin:{y:1,x:.25+.5*Math.random()},disableForReducedMotion:!0,angle:60+60*Math.random()})}else try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.add("incorrect")}catch(t){console.warn(`[StudySession] Error setting shadowWrapper style: ${t}`)}},clearFeedbackShadow(){setTimeout((()=>{try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.remove("correct","incorrect")}catch(e){console.warn(`[StudySession] Error clearing shadowWrapper style: ${e}`)}}),1250)},async logCardRecord(e){console.log("[StudySession] About to call user.putCardRecord...");const t=await this.user.putCardRecord(e);return console.log("[StudySession] user.putCardRecord completed"),t},async loadCard(e){if(this.loading)console.warn("Attempted to load card while loading another...");else{if(console.log(`[StudySession] loading: ${JSON.stringify(e)}`),null===e)return this.sessionFinished=!0,void this.$emit("session-finished",this.sessionRecord);this.cardType=e.item.status,this.loading=!0;try{this.cardCount++,this.data=e.data,this.view=t.markRaw(e.view),this.cardID=e.item.cardID,this.courseID=e.item.courseID,this.card_elo=e.item.elo||1e3,this.sessionRecord.push({card:{course_id:e.item.courseID,card_id:e.item.cardID,card_elo:this.card_elo},item:e.item,records:[]}),this.$emit("card-loaded",{courseID:e.item.courseID,cardID:e.item.cardID,cardCount:this.cardCount})}catch(n){console.warn(`[StudySession] Error loading card ${JSON.stringify(e)}:\n\t${JSON.stringify(n)}, ${n}`),this.loading=!1;const t=n;r.docIsDeleted(t)&&r.isReview(e.item)&&(console.warn(`Card was deleted: ${e.item.courseID}::${e.item.cardID}`),this.user.removeScheduledCardReview(e.item.reviewID)),this.loadCard(await this.sessionController.nextCard("dismiss-error"))}finally{this.loading=!1}}}}}),da={key:0,class:"StudySession"},ua={key:1,class:"text-h4"},ha={key:0},pa={key:2,ref:"shadowWrapper"},ma={key:3};const ga=vr(ca,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-progress-circular"),c=t.resolveComponent("v-row"),d=t.resolveComponent("session-controller-debug"),u=t.resolveComponent("heat-map"),h=t.resolveComponent("card-viewer"),p=t.resolveComponent("StudySessionTimer"),m=t.resolveComponent("v-col"),g=t.resolveComponent("SkMouseTrap");return e.sessionPrepared?(t.openBlock(),t.createElementBlock("div",da,[t.createVNode(c,{align:"center"},{default:t.withCtx((()=>[t.createVNode(i),e.loading?(t.openBlock(),t.createBlock(l,{key:0,color:"primary",indeterminate:"",size:"32",width:"4"})):t.createCommentVNode("",!0)])),_:1}),e.debugMode?(t.openBlock(),t.createBlock(d,{key:0,"session-controller":e.sessionController},null,8,["session-controller"])):t.createCommentVNode("",!0),n[2]||(n[2]=t.createElementVNode("br",null,null,-1)),e.sessionFinished?(t.openBlock(),t.createElementBlock("div",ua,[n[1]||(n[1]=t.createElementVNode("p",null,"Study session finished! Great job!",-1)),e.sessionController?(t.openBlock(),t.createElementBlock("p",ha,t.toDisplayString(e.sessionController.report),1)):t.createCommentVNode("",!0),t.createVNode(u,{"activity-records-getter":()=>e.user.getActivityRecords()},null,8,["activity-records-getter"])])):(t.openBlock(),t.createElementBlock("div",pa,[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[(t.openBlock(),t.createBlock(h,{ref:"cardViewer",key:e.cardID,class:t.normalizeClass(e.loading?"muted":""),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.cardCount,user_elo:e.user_elo(e.courseID),card_elo:e.card_elo,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,8,["class","view","data","card_id","course_id","session-order","user_elo","card_elo"]))])),_:1})],512)),n[3]||(n[3]=t.createElementVNode("br",null,null,-1)),e.sessionController?(t.openBlock(),t.createElementBlock("div",ma,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.sessionController.failedCount,(e=>(t.openBlock(),t.createElementBlock("span",{key:e,class:"text-h5"},"•")))),128))])):t.createCommentVNode("",!0),t.createVNode(c,{align:"center",class:"footer-controls pa-5"},{default:t.withCtx((()=>[t.createVNode(m,{cols:"auto",class:"d-flex flex-grow-0 mr-auto"},{default:t.withCtx((()=>[t.createVNode(p,{"time-remaining":e.timeRemaining,"session-time-limit":e.sessionTimeLimit,onAddTime:e.incrementSessionClock},null,8,["time-remaining","session-time-limit","onAddTime"])])),_:1}),t.createVNode(i),t.createVNode(m,{cols:"auto",class:"footer-right"},{default:t.withCtx((()=>[t.createVNode(g)])),_:1})])),_:1})])):t.createCommentVNode("",!0)}],["__scopeId","data-v-dc537be7"]]);let fa=null;const ka=()=>fa,ya={install(e,t){const n=t?.pinia;n&&(e=>{fa=e})(n)}},ba=()=>{const e=ka();return e&&o.setActivePinia(e),o.defineStore("previewMode",{state:()=>({previewMode:!1}),actions:{setPreviewMode(e){this.previewMode=e}},getters:{isPreviewMode(){return this.previewMode}}})()},wa=t.defineComponent({name:"UserInput",data:()=>({answer:"",previewModeStore:null}),mounted(){this.previewModeStore=ba()},computed:{autofocus(){return!this.previewModeStore?.previewMode},autoFocus(){return this.autofocus}},methods:{submitAnswer(e){return this.submit(e)},submit(e){return this.getQuestionViewAncestor().submitAnswer(e,this.$options.name??"UserInput")},getQuestionViewAncestor(){let e=this.$parent,t=0;for(;e&&!uo(e);){const r=e.$parent;if(!r){const e="\nUserInput.submit() has failed.\nThe input element has no QuestionView ancestor element.";throw n.log(e),new Error(e)}if(e=r,t++,t>100){const e="\nUserInput.submit() has failed.\nExceeded maximum ancestor lookup depth.";throw n.log(e),new Error(e)}}if(!e)throw new Error("No QuestionView ancestor found");return e}}});const va=vr(t.defineComponent({name:"MultipleChoiceOption",components:{MarkdownRenderer:t.defineAsyncComponent((()=>Promise.resolve().then((()=>hl))))},props:{content:{type:String,required:!0},selected:{type:Boolean,required:!0},number:{type:Number,required:!0},setSelection:{type:Function,required:!0},submit:{type:Function,required:!0},markedWrong:{type:Boolean,required:!0}},computed:{className(){let e;switch(this.number){case 0:e="bg-red";break;case 1:e="bg-purple";break;case 2:e="bg-indigo";break;case 3:e="bg-light-blue";break;case 4:e="bg-teal";break;case 5:e="bg-deep-orange";break;default:e="bg-grey"}if(this.selected&&!this.markedWrong)return`choice selected ${e} lighten-3 elevation-8`;if(this.selected||this.markedWrong){if(this.selected&&this.markedWrong)return"choice selected grey lighten-2 elevation-8";if(!this.selected&&this.markedWrong)return"choice not-selected grey lighten-2 elevation-0";throw new Error("'selected' and 'markedWrong' props in MultipleChoiceOption are in an impossible configuration.")}return`choice not-selected ${e} lighten-4 elevation-1`}},methods:{select(){this.setSelection(this.number)},submitThisOption(){this.markedWrong||(this.select(),this.submit())}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("markdown-renderer"),l=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(l,{class:t.normalizeClass(`${e.className}`),onMouseover:e.select,onClick:e.submitThisOption},{default:t.withCtx((()=>[t.createVNode(i,{md:e.content},null,8,["md"])])),_:1},8,["class","onMouseover","onClick"])}],["__scopeId","data-v-96de7172"]]),xa=t.defineComponent({name:"RadioMultipleChoice",components:{MultipleChoiceOption:va},extends:wa,props:{choiceList:{type:Array,required:!0}},data:()=>({currentSelection:-1,incorrectSelections:[],containerRef:null,_registeredHotkeys:[]}),watch:{choiceList:{immediate:!0,handler(e){e?.length&&this.bindKeys()}}},mounted(){this.containerRef&&this.containerRef.focus()},unmounted(){this.unbindKeys()},methods:{forwardSelection(){if(!this.choiceIsWrong(this.choiceList[this.currentSelection])&&-1!==this.currentSelection){const e={choiceList:this.choiceList,selection:this.currentSelection};this.submitAnswer(e).isCorrect||this.incorrectSelections.push(this.currentSelection)}},setSelection(e){e<this.choiceList.length&&(this.currentSelection=e)},incrementSelection(){-1===this.currentSelection?this.currentSelection=Math.ceil(this.choiceList.length/2):this.currentSelection=Math.min(this.choiceList.length-1,this.currentSelection+1)},decrementSelection(){-1===this.currentSelection?this.currentSelection=Math.floor(this.choiceList.length/2-1):this.currentSelection=Math.max(0,this.currentSelection-1)},choiceIsWrong(e){let t=!1;return this.incorrectSelections.forEach((n=>{this.choiceList[n]===e&&(t=!0)})),t},bindKeys(){const e=[{hotkey:"left",callback:this.decrementSelection,command:"Move selection left"},{hotkey:"right",callback:this.incrementSelection,command:"Move selection right"},{hotkey:"enter",callback:this.forwardSelection,command:"Submit selection"},...Array.from({length:this.choiceList.length},((e,t)=>({hotkey:(t+1).toString(),callback:()=>this.setSelection(t),command:`Select ${(e=>{switch(e){case 0:return"first";case 1:return"second";case 2:return"third";case 3:return"fourth";case 4:return"fifth";case 5:return"sixth";default:return`${e+1}th`}})(t)} option`})))];Ir.addBinding(e),this._registeredHotkeys=e.map((e=>e.hotkey))},unbindKeys(){this._registeredHotkeys&&this._registeredHotkeys.forEach((e=>{Ir.removeBinding(e)}))}}}),_a={ref:"containerRef",class:"multipleChoice"};const Ca=vr(xa,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("MultipleChoiceOption");return t.openBlock(),t.createElementBlock("div",_a,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.choiceList,((n,r)=>(t.openBlock(),t.createBlock(i,{key:r,content:n,selected:e.choiceList.indexOf(n)===e.currentSelection,number:e.choiceList.indexOf(n),"set-selection":e.setSelection,submit:e.forwardSelection,"marked-wrong":e.choiceIsWrong(n)},null,8,["content","selected","number","set-selection","submit","marked-wrong"])))),128))],512)}]]),Sa=t.defineComponent({name:"TrueFalse",components:{RadioMultipleChoice:Ca},props:{MouseTrap:{type:Object,required:!0},submit:{type:Function,required:!0}}}),Na={"data-viewable":"TrueFalse"};const Ea=vr(Sa,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("RadioMultipleChoice");return t.openBlock(),t.createElementBlock("div",Na,[t.createVNode(i,{"choice-list":["True","False"],MouseTrap:e.MouseTrap,submit:e.submit},null,8,["MouseTrap","submit"])])}]]);const Ta=vr(t.defineComponent({name:"UserInputNumber",ref:{},extends:wa,methods:{mounted(){this.$refs.input.focus()},isNumeric:e=>!isNaN(Number.parseFloat(e)),makeNumeric(e){if("string"==typeof e)return Number.parseFloat(e);throw new Error("Expected a string, got "+typeof e)}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-text-field"),l=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(l,{class:"pa-0"},{default:t.withCtx((()=>[t.createVNode(i,{ref:"input",modelValue:e.answer,"onUpdate:modelValue":n[0]||(n[0]=t=>e.answer=t),"prepend-icon":"edit",autofocus:e.autofocus,"row-height":"24","toggle-keys":"[13,32]",class:"text-h5",rules:[e.isNumeric],onKeyup:n[1]||(n[1]=t.withKeys((t=>e.submitAnswer(e.makeNumeric(e.answer))),["enter"]))},null,8,["modelValue","autofocus","rules"])])),_:1})}],["__scopeId","data-v-a56dcd1c"]]),Ma=t.defineComponent({name:"UserInputString",extends:wa,props:{icon:{type:Boolean,required:!1}},computed:{prependIcon(){return this.icon?"edit":""}},mounted(){this.$refs.input?.focus()},methods:{}}),Da={class:"user-input-container"},Ba=["autofocus"];const Ra=vr(Ma,[["render",function(e,n,r,o,a,s){return t.openBlock(),t.createElementBlock("span",Da,[t.withDirectives(t.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=t=>e.answer=t),autofocus:e.autofocus,type:"text",class:"user-input-string",ref:"input",onKeyup:n[1]||(n[1]=t.withKeys((t=>e.submitAnswer(e.answer)),["enter"]))},null,40,Ba),[[t.vModelText,e.answer]])])}],["__scopeId","data-v-aa14961f"]]),Va=t.defineComponent({name:"FillInInput",components:{UserInputString:Ra},props:{text:{type:String,required:!0}},setup(e){const n=t.ref("text"),r=t.ref(""),o=t.computed((()=>e.text.split("||").length>1));return t.onMounted((()=>{console.log(`fillinCreated w/ text: ${e.text}`),r.value=e.text.substring(2,e.text.length-2),console.log(`fillin text trimmed to: ${r.value}`);r.value.split("||").length>1&&(n.value="radio")})),{inputType:n,radioType:o,processedText:r}}}),Ia={key:0,class:"text-h5 underline"};const Aa=vr(Va,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("user-input-string");return e.radioType?(t.openBlock(),t.createElementBlock("span",Ia," ")):(t.openBlock(),t.createBlock(i,{key:1,id:"input",icon:!1,type:"text",value:e.processedText},null,8,["value"]))}],["__scopeId","data-v-486ac035"]]);const Oa=vr(t.defineComponent({name:"CardLoader",components:{CardViewer:bo},props:{sessionOrder:{type:Number,required:!1,default:0},qualified_id:{type:Object,required:!0},viewLookup:{type:Function,required:!0}},data:()=>({loading:!0,view:null,data:[],courseID:"",cardID:""}),created(){this.loadCard()},watch:{qualified_id:{immediate:!0,handler(){this.loadCard()}}},methods:{processResponse(e){n.log(`\n Card was displayed at ${e.timeStamp}\n User spent ${e.timeSpent} milliseconds with the card.\n `),this.$emit("emitResponse",e)},async loadCard(){const e=this.qualified_id;console.log(`Card Loader displaying: ${e.courseID}::${e.cardID}`),this.loading=!0;const o=e.courseID,a=e.cardID,s=r.getDataLayer().getCourseDB(o);try{const e=await s.getCourseDoc(a),r=this.viewLookup(e.id_view),i=e.id_displayable_data.map((e=>s.getCourseDoc(e,{attachments:!0,binary:!0}))),l=[];for(const t of i){const e=await t;l.unshift(n.displayableDataToViewData(e))}this.data=l,this.view=t.markRaw(r),this.cardID=a,this.courseID=o}catch(i){throw new Error(`[CardLoader] Error loading card: ${JSON.stringify(i)}, ${i}`)}finally{this.loading=!1,this.$emit("card-loaded")}}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("card-viewer");return e.loading?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(i,{key:0,class:t.normalizeClass(["ma-2",e.loading?"muted":""]),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.sessionOrder,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,8,["class","view","data","card_id","course_id","session-order"]))}],["__scopeId","data-v-93f758b5"]]);function La(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let Pa={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function $a(e){Pa=e}const Ya={exec:()=>null};function za(e,t=""){let n="string"==typeof e?e:e.source;const r={replace:(e,t)=>{let o="string"==typeof t?t:t.source;return o=o.replace(Ua.caret,"$1"),n=n.replace(e,o),r},getRegex:()=>new RegExp(n,t)};return r}const Ua={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Fa=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ja=/(?:[*+-]|\d{1,9}[.)])/,Ha=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,qa=za(Ha).replace(/bull/g,ja).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Wa=za(Ha).replace(/bull/g,ja).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ga=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Za=/(?!\s*\])(?:\\.|[^\[\]\\])+/,Ka=za(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Za).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Qa=za(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ja).getRegex(),Ja="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Xa=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,es=za("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Xa).replace("tag",Ja).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ts=za(Ga).replace("hr",Fa).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ja).getRegex(),ns={blockquote:za(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",ts).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:Ka,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:Fa,html:es,lheading:qa,list:Qa,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:ts,table:Ya,text:/^[^\n]+/},rs=za("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Fa).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ja).getRegex(),os={...ns,lheading:Wa,table:rs,paragraph:za(Ga).replace("hr",Fa).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rs).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ja).getRegex()},as={...ns,html:za("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Xa).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ya,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:za(Ga).replace("hr",Fa).replace("heading"," *#{1,6} *[^\n]").replace("lheading",qa).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ss=/^( {2,}|\\)\n(?!\s*$)/,is=/[\p{P}\p{S}]/u,ls=/[\s\p{P}\p{S}]/u,cs=/[^\s\p{P}\p{S}]/u,ds=za(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,ls).getRegex(),us=/(?!~)[\p{P}\p{S}]/u,hs=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,ps=za(hs,"u").replace(/punct/g,is).getRegex(),ms=za(hs,"u").replace(/punct/g,us).getRegex(),gs="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",fs=za(gs,"gu").replace(/notPunctSpace/g,cs).replace(/punctSpace/g,ls).replace(/punct/g,is).getRegex(),ks=za(gs,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,us).getRegex(),ys=za("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,cs).replace(/punctSpace/g,ls).replace(/punct/g,is).getRegex(),bs=za(/\\(punct)/,"gu").replace(/punct/g,is).getRegex(),ws=za(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),vs=za(Xa).replace("(?:--\x3e|$)","--\x3e").getRegex(),xs=za("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",vs).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),_s=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Cs=za(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",_s).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ss=za(/^!?\[(label)\]\[(ref)\]/).replace("label",_s).replace("ref",Za).getRegex(),Ns=za(/^!?\[(ref)\](?:\[\])?/).replace("ref",Za).getRegex(),Es={_backpedal:Ya,anyPunctuation:bs,autolink:ws,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,br:ss,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:Ya,emStrongLDelim:ps,emStrongRDelimAst:fs,emStrongRDelimUnd:ys,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:Cs,nolink:Ns,punctuation:ds,reflink:Ss,reflinkSearch:za("reflink|nolink(?!\\()","g").replace("reflink",Ss).replace("nolink",Ns).getRegex(),tag:xs,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:Ya},Ts={...Es,link:za(/^!?\[(label)\]\((.*?)\)/).replace("label",_s).getRegex(),reflink:za(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",_s).getRegex()},Ms={...Es,emStrongRDelimAst:ks,emStrongLDelim:ms,url:za(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},Ds={...Ms,br:za(ss).replace("{2,}","*").getRegex(),text:za(Ms.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Bs={normal:ns,gfm:os,pedantic:as},Rs={normal:Es,gfm:Ms,breaks:Ds,pedantic:Ts},Vs={"&":"&","<":"<",">":">",'"':""","'":"'"},Is=e=>Vs[e];function As(e,t){if(t){if(Ua.escapeTest.test(e))return e.replace(Ua.escapeReplace,Is)}else if(Ua.escapeTestNoEncode.test(e))return e.replace(Ua.escapeReplaceNoEncode,Is);return e}function Os(e){try{e=encodeURI(e).replace(Ua.percentDecode,"%")}catch{return null}return e}function Ls(e,t){const n=e.replace(Ua.findPipe,((e,t,n)=>{let r=!1,o=t;for(;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(Ua.splitPipe);let r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(Ua.slashPipe,"|");return n}function Ps(e,t,n){const r=e.length;if(0===r)return"";let o=0;for(;o<r;){if(e.charAt(r-o-1)!==t)break;o++}return e.slice(0,r-o)}function $s(e,t,n,r,o){const a=t.href,s=t.title||null,i=e[1].replace(o.other.outputLinkReplace,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;const e={type:"link",raw:n,href:a,title:s,text:i,tokens:r.inlineTokens(i)};return r.state.inLink=!1,e}return{type:"image",raw:n,href:a,title:s,text:i}}class _Tokenizer{constructor(e){d(this,"options"),d(this,"rules"),d(this,"lexer"),this.options=e||Pa}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Ps(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t,n){const r=e.match(n.other.indentCodeCompensation);if(null===r)return t;const o=r[1];return t.split("\n").map((e=>{const t=e.match(n.other.beginningSpace);if(null===t)return e;const[r]=t;return r.length>=o.length?e.slice(o.length):e})).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){const t=Ps(e,"#");this.options.pedantic?e=t.trim():t&&!this.rules.other.endingSpaceChar.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Ps(t[0],"\n")}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=Ps(t[0],"\n").split("\n"),n="",r="";const o=[];for(;e.length>0;){let t=!1;const a=[];let s;for(s=0;s<e.length;s++)if(this.rules.other.blockquoteStart.test(e[s]))a.push(e[s]),t=!0;else{if(t)break;a.push(e[s])}e=e.slice(s);const i=a.join("\n"),l=i.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}\n${i}`:i,r=r?`${r}\n${l}`:l;const c=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,o,!0),this.lexer.state.top=c,0===e.length)break;const d=o.at(-1);if("code"===d?.type)break;if("blockquote"===d?.type){const t=d,a=t.raw+"\n"+e.join("\n"),s=this.blockquote(a);o[o.length-1]=s,n=n.substring(0,n.length-t.raw.length)+s.raw,r=r.substring(0,r.length-t.text.length)+s.text;break}if("list"!==d?.type);else{const t=d,a=t.raw+"\n"+e.join("\n"),s=this.list(a);o[o.length-1]=s,n=n.substring(0,n.length-d.raw.length)+s.raw,r=r.substring(0,r.length-t.raw.length)+s.raw,e=a.substring(o.at(-1).raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:o,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const r=n.length>1,o={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");const a=this.rules.other.listItemRegex(n);let s=!1;for(;e;){let n=!1,r="",i="";if(!(t=a.exec(e)))break;if(this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let l=t[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],d=!l.trim(),u=0;if(this.options.pedantic?(u=2,i=l.trimStart()):d?u=t[1].length+1:(u=t[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,i=l.slice(u),u+=t[1].length),d&&this.rules.other.blankLine.test(c)&&(r+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=this.rules.other.nextBulletRegex(u),n=this.rules.other.hrRegex(u),o=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),s=this.rules.other.htmlBeginRegex(u);for(;e;){const h=e.split("\n",1)[0];let p;if(c=h,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),p=c):p=c.replace(this.rules.other.tabCharGlobal," "),o.test(c))break;if(a.test(c))break;if(s.test(c))break;if(t.test(c))break;if(n.test(c))break;if(p.search(this.rules.other.nonSpaceChar)>=u||!c.trim())i+="\n"+p.slice(u);else{if(d)break;if(l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4)break;if(o.test(l))break;if(a.test(l))break;if(n.test(l))break;i+="\n"+c}d||c.trim()||(d=!0),r+=h+"\n",e=e.substring(h.length+1),l=p.slice(u)}}o.loose||(s?o.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(s=!0));let h,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(i),p&&(h="[ ] "!==p[0],i=i.replace(this.rules.other.listReplaceTask,""))),o.items.push({type:"list_item",raw:r,task:!!p,checked:h,loose:!1,text:i,tokens:[]}),o.raw+=r}const i=o.items.at(-1);if(!i)return;i.raw=i.raw.trimEnd(),i.text=i.text.trimEnd(),o.raw=o.raw.trimEnd();for(let e=0;e<o.items.length;e++)if(this.lexer.state.top=!1,o.items[e].tokens=this.lexer.blockTokens(o.items[e].text,[]),!o.loose){const t=o.items[e].tokens.filter((e=>"space"===e.type)),n=t.length>0&&t.some((e=>this.rules.other.anyLine.test(e.raw)));o.loose=n}if(o.loose)for(let e=0;e<o.items.length;e++)o.items[e].loose=!0;return o}}html(e){const t=this.rules.block.html.exec(e);if(t){return{type:"html",block:!0,raw:t[0],pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:t[0]}}}def(e){const t=this.rules.block.def.exec(e);if(t){const e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:r}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!this.rules.other.tableDelimiter.test(t[2]))return;const n=Ls(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),o=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],a={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(const e of r)this.rules.other.tableAlignRight.test(e)?a.align.push("right"):this.rules.other.tableAlignCenter.test(e)?a.align.push("center"):this.rules.other.tableAlignLeft.test(e)?a.align.push("left"):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(const e of o)a.rows.push(Ls(e,a.header.length).map(((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]}))));return a}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;const t=Ps(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let r=0;r<e.length;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return-1}(t[2],"()");if(e>-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){const e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),$s(t,{href:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n,title:r?r.replace(this.rules.inline.anyPunctuation,"$1"):r},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return $s(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r)return;if(r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const n=[...r[0]].length-1;let o,a,s=n,i=0;const l="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+n);null!=(r=l.exec(t));){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){s+=a;continue}if((r[5]||r[6])&&n%3&&!((n+a)%3)){i+=a;continue}if(s-=a,s>0)continue;a=Math.min(a,a+s+i);const t=[...r[0]][0].length,l=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){const e=l.slice(1,-1);return{type:"em",raw:l,text:e,tokens:this.lexer.inlineTokens(e)}}const c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," ");const n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let r;do{r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(r!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){const e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}}class _Lexer{constructor(e){d(this,"tokens"),d(this,"options"),d(this,"state"),d(this,"tokenizer"),d(this,"inlineQueue"),this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Pa,this.options.tokenizer=this.options.tokenizer||new _Tokenizer,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const t={other:Ua,block:Bs.normal,inline:Rs.normal};this.options.pedantic?(t.block=Bs.pedantic,t.inline=Rs.pedantic):this.options.gfm&&(t.block=Bs.gfm,this.options.breaks?t.inline=Rs.breaks:t.inline=Rs.gfm),this.tokenizer.rules=t}static get rules(){return{block:Bs,inline:Rs}}static lex(e,t){return new _Lexer(t).lex(e)}static lexInline(e,t){return new _Lexer(t).inlineTokens(e)}lex(e){e=e.replace(Ua.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){const e=this.inlineQueue[t];this.inlineTokens(e.src,e.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(Ua.tabCharGlobal," ").replace(Ua.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0))))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);const n=t.at(-1);1===r.raw.length&&void 0!==n?n.raw+="\n":t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);const n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+="\n"+r.raw,n.text+="\n"+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);const n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+="\n"+r.raw,n.text+="\n"+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let o=e;if(this.options.extensions?.startBlock){let t=1/0;const n=e.slice(1);let r;this.options.extensions.startBlock.forEach((e=>{r=e.call({lexer:this},n),"number"==typeof r&&r>=0&&(t=Math.min(t,r))})),t<1/0&&t>=0&&(o=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){const a=t.at(-1);n&&"paragraph"===a?.type?(a.raw+="\n"+r.raw,a.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),n=o.length!==e.length,e=e.substring(r.raw.length)}else if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);const n=t.at(-1);"text"===n?.type?(n.raw+="\n"+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r)}else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(n));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(n));)n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(n));)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o=!1,a="";for(;e;){let r;if(o||(a=""),o=!1,this.options.extensions?.inline?.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0))))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);const n=t.at(-1);"text"===r.type&&"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,a)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0;const n=e.slice(1);let r;this.options.extensions.startInline.forEach((e=>{r=e.call({lexer:this},n),"number"==typeof r&&r>=0&&(t=Math.min(t,r))})),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(s)){e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(a=r.raw.slice(-1)),o=!0;const n=t.at(-1);"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r)}else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return t}}class _Renderer{constructor(e){d(this,"options"),d(this,"parser"),this.options=e||Pa}space(e){return""}code({text:e,lang:t,escaped:n}){const r=(t||"").match(Ua.notSpaceStart)?.[0],o=e.replace(Ua.endingNewline,"")+"\n";return r?'<pre><code class="language-'+As(r)+'">'+(n?o:As(o,!0))+"</code></pre>\n":"<pre><code>"+(n?o:As(o,!0))+"</code></pre>\n"}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return"<hr>\n"}list(e){const t=e.ordered,n=e.start;let r="";for(let a=0;a<e.items.length;a++){const t=e.items[a];r+=this.listitem(t)}const o=t?"ol":"ul";return"<"+o+(t&&1!==n?' start="'+n+'"':"")+">\n"+r+"</"+o+">\n"}listitem(e){let t="";if(e.task){const n=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===e.tokens[0]?.type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+As(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t="",n="";for(let o=0;o<e.header.length;o++)n+=this.tablecell(e.header[o]);t+=this.tablerow({text:n});let r="";for(let o=0;o<e.rows.length;o++){const t=e.rows[o];n="";for(let e=0;e<t.length;e++)n+=this.tablecell(t[e]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),"<table>\n<thead>\n"+t+"</thead>\n"+r+"</table>\n"}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){const t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${As(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){const r=this.parser.parseInline(n),o=Os(e);if(null===o)return r;let a='<a href="'+(e=o)+'"';return t&&(a+=' title="'+As(t)+'"'),a+=">"+r+"</a>",a}image({href:e,title:t,text:n}){const r=Os(e);if(null===r)return As(n);let o=`<img src="${e=r}" alt="${n}"`;return t&&(o+=` title="${As(t)}"`),o+=">",o}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:As(e.text)}}class _TextRenderer{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}}class _Parser{constructor(e){d(this,"options"),d(this,"renderer"),d(this,"textRenderer"),this.options=e||Pa,this.options.renderer=this.options.renderer||new _Renderer,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new _TextRenderer}static parse(e,t){return new _Parser(t).parse(e)}static parseInline(e,t){return new _Parser(t).parseInline(e)}parse(e,t=!0){let n="";for(let r=0;r<e.length;r++){const o=e[r];if(this.options.extensions?.renderers?.[o.type]){const e=o,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(e.type)){n+=t||"";continue}}const a=o;switch(a.type){case"space":n+=this.renderer.space(a);continue;case"hr":n+=this.renderer.hr(a);continue;case"heading":n+=this.renderer.heading(a);continue;case"code":n+=this.renderer.code(a);continue;case"table":n+=this.renderer.table(a);continue;case"blockquote":n+=this.renderer.blockquote(a);continue;case"list":n+=this.renderer.list(a);continue;case"html":n+=this.renderer.html(a);continue;case"paragraph":n+=this.renderer.paragraph(a);continue;case"text":{let o=a,s=this.renderer.text(o);for(;r+1<e.length&&"text"===e[r+1].type;)o=e[++r],s+="\n"+this.renderer.text(o);n+=t?this.renderer.paragraph({type:"paragraph",raw:s,text:s,tokens:[{type:"text",raw:s,text:s,escaped:!0}]}):s;continue}default:{const e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}parseInline(e,t=this.renderer){let n="";for(let r=0;r<e.length;r++){const o=e[r];if(this.options.extensions?.renderers?.[o.type]){const e=this.options.extensions.renderers[o.type].call({parser:this},o);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(o.type)){n+=e||"";continue}}const a=o;switch(a.type){case"escape":case"text":n+=t.text(a);break;case"html":n+=t.html(a);break;case"link":n+=t.link(a);break;case"image":n+=t.image(a);break;case"strong":n+=t.strong(a);break;case"em":n+=t.em(a);break;case"codespan":n+=t.codespan(a);break;case"br":n+=t.br(a);break;case"del":n+=t.del(a);break;default:{const e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}}class _Hooks{constructor(e){d(this,"options"),d(this,"block"),this.options=e||Pa}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?_Lexer.lex:_Lexer.lexInline}provideParser(){return this.block?_Parser.parse:_Parser.parseInline}}d(_Hooks,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"]));const Ys=new class Marked{constructor(...e){d(this,"defaults",{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}),d(this,"options",this.setOptions),d(this,"parse",this.parseMarkdown(!0)),d(this,"parseInline",this.parseMarkdown(!1)),d(this,"Parser",_Parser),d(this,"Renderer",_Renderer),d(this,"TextRenderer",_TextRenderer),d(this,"Lexer",_Lexer),d(this,"Tokenizer",_Tokenizer),d(this,"Hooks",_Hooks),this.use(...e)}walkTokens(e,t){let n=[];for(const r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{const e=r;for(const r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(const r of e.rows)for(const e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{const e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{const e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach((r=>{const o=e[r].flat(1/0);n=n.concat(this.walkTokens(o,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new _Renderer(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;const r=n,o=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=o.apply(t,e);return!1===n&&(n=a.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new _Tokenizer(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;const r=n,o=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=o.apply(t,e);return!1===n&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new _Hooks;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;const r=n,o=e.hooks[r],a=t[r];_Hooks.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(o.call(t,e)).then((e=>a.call(t,e)));const n=o.call(t,e);return a.call(t,n)}:t[r]=(...e)=>{let n=o.apply(t,e);return!1===n&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return _Lexer.lex(e,t??this.defaults)}parser(e,t){return _Parser.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{const r={...n},o={...this.defaults,...r},a=this.onError(!!o.silent,!!o.async);if(!0===this.defaults.async&&!1===r.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(null==t)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));o.hooks&&(o.hooks.options=o,o.hooks.block=e);const s=o.hooks?o.hooks.provideLexer():e?_Lexer.lex:_Lexer.lexInline,i=o.hooks?o.hooks.provideParser():e?_Parser.parse:_Parser.parseInline;if(o.async)return Promise.resolve(o.hooks?o.hooks.preprocess(t):t).then((e=>s(e,o))).then((e=>o.hooks?o.hooks.processAllTokens(e):e)).then((e=>o.walkTokens?Promise.all(this.walkTokens(e,o.walkTokens)).then((()=>e)):e)).then((e=>i(e,o))).then((e=>o.hooks?o.hooks.postprocess(e):e)).catch(a);try{o.hooks&&(t=o.hooks.preprocess(t));let e=s(t,o);o.hooks&&(e=o.hooks.processAllTokens(e)),o.walkTokens&&this.walkTokens(e,o.walkTokens);let n=i(e,o);return o.hooks&&(n=o.hooks.postprocess(n)),n}catch(l){return a(l)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="<p>An error occurred:</p><pre>"+As(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function zs(e,t){return Ys.parse(e,t)}zs.options=zs.setOptions=function(e){return Ys.setOptions(e),zs.defaults=Ys.defaults,$a(zs.defaults),zs},zs.getDefaults=La,zs.defaults=Pa,zs.use=function(...e){return Ys.use(...e),zs.defaults=Ys.defaults,$a(zs.defaults),zs},zs.walkTokens=function(e,t){return Ys.walkTokens(e,t)},zs.parseInline=Ys.parseInline,zs.Parser=_Parser,zs.parser=_Parser.parse,zs.Renderer=_Renderer,zs.TextRenderer=_TextRenderer,zs.Lexer=_Lexer,zs.lexer=_Lexer.lex,zs.Tokenizer=_Tokenizer,zs.Hooks=_Hooks,zs.parse=zs,zs.options,zs.setOptions,zs.use,zs.walkTokens,zs.parseInline,_Parser.parse;const Us=_Lexer.lex;function Fs(e,t,n){if(0===e.length)return[];let r=[];const o=e.indexOf(t),a=e.indexOf(n,o);return o>=0&&a>o?(r.push(e.substring(0,o)),r.push(e.substring(o,a+n.length)),r=r.concat(Fs(e.substring(a+n.length),t,n)),r):[e]}function js(e){if(qs(e)){const t=Fs(e.text,"{{","}}"),n=Fs(e.raw,"{{","}}");if(t.length===n.length)return t.map(((e,r)=>({type:"text",text:t[r],raw:n[r]})));throw new Error("Error parsing markdown")}return[e]}function Hs(e){let t=[];if(qs(e)){const n=Fs(e.text,"{{","}}"),r=Fs(e.raw,"{{","}}");if(n.length===r.length){for(let e=0;e<n.length;e++){const o={type:"text",text:n[e],raw:r[e]};Ws(o)?t.push(o):Us(r[e]).forEach((e=>{"paragraph"===e.type?t=t.concat(e.tokens):t.push(e)}))}return t}throw new Error("Error parsing Markdown")}return t.push(e),t}function qs(e){if("text"===e.type||"paragraph"===e.type){const t=e.raw.indexOf("{{"),n=e.raw.indexOf("}}");return-1!==t&&-1!==n&&n>t}return!1}function Ws(e){return"text"===e.type&&e.text.startsWith("{{")&&e.text.endsWith("}}")}function Gs(e){if(e.length>1e4)return null;const t=e.match(/^\{\{\s*<([\w-]+)((?:\s+[\w-]+="[^"]*")*)\s*\/>\s*\}\}$/);if(!t)return null;const n=t[1],r=t[2],o={};if(r){const e=/\s+([\w-]+)="([^"]*)"/g;let t;for(;null!==(t=e.exec(r));)o[t[1]]=t[2]}return{componentName:n,props:o}}const Zs=vr(t.defineComponent({__name:"AudioAutoPlayer",props:{src:{}},setup(e){const n=e,r=t.ref([]),o=t.ref([]),a=t.ref(!1);let s=null;const i=e=>{if((e=>{try{return!isNaN(r.value[e].duration)}catch(t){throw new Error("AudioPlayer does not have an element at this index:",t)}})(e))if(r.value[e].play(),e+1<r.value.length){const t=1e3*(r.value[e].duration+.7);o.value.push(setTimeout((()=>{a.value&&i(e+1)}),t))}else setTimeout((()=>{a.value=!1}),1e3*r.value[e].duration),setTimeout((()=>{s=null}),1e3*r.value[e].duration+500);else setTimeout(i,100,e)},l=()=>{null===s||s===t.getCurrentInstance()?(s=t.getCurrentInstance(),a.value=!0,i(0)):setTimeout(l,100)};return t.onMounted((()=>{s=null,"string"==typeof n.src?r.value.push(new Audio(n.src)):n.src.forEach((e=>{r.value.push(new Audio(e))}));const e=[{hotkey:"up",callback:l,command:"Replay Audio"}];Ir.addBinding(e),l()})),t.onBeforeUnmount((()=>{Ir.removeBinding("up"),a.value=!1,setTimeout((()=>{s=null}),500),o.value.forEach(clearTimeout),console.log("Audio stopping..."),r.value.forEach((e=>{e.paused||(e.pause(),e.currentTime=0)}))})),(e,n)=>{const r=t.resolveComponent("v-icon"),o=t.resolveComponent("v-btn");return t.openBlock(),t.createBlock(o,{size:"large",icon:"",color:a.value?"primary lighten-3":"primary",class:t.normalizeClass({playing:a.value}),onClick:l},{default:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-volume-high")]))),_:1})])),_:1},8,["color","class"])}}}),[["__scopeId","data-v-e1a0f62c"]]);var Ks,Qs;function Js(){if(Qs)return Ks;function e(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{const r=t[n],o=typeof r;"object"!==o&&"function"!==o||Object.isFrozen(r)||e(r)})),t}Qs=1;class Response{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function t(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function n(e,...t){const n=Object.create(null);for(const r in e)n[r]=e[r];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const r=e=>!!e.scope;class HTMLRenderer{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!r(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){r(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class TokenTree{constructor(){this.rootNode=o(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=o({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{TokenTree._collapse(e)})))}}class TokenTreeEmitter extends TokenTree{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function a(e){return e?"string"==typeof e?e:e.source:null}function s(e){return c("(?=",e,")")}function i(e){return c("(?:",e,")*")}function l(e){return c("(?:",e,")?")}function c(...e){return e.map((e=>a(e))).join("")}function d(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map((e=>a(e))).join("|")+")"}function u(e){return new RegExp(e.toString()+"|").exec("").length-1}const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function p(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let r=a(e),o="";for(;r.length>0;){const e=h.exec(r);if(!e){o+=r;break}o+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?o+="\\"+String(Number(e[1])+t):(o+=e[0],"("===e[0]&&n++)}return o})).map((e=>`(${e})`)).join(t)}const m="[a-zA-Z]\\w*",g="[a-zA-Z_]\\w*",f="\\b\\d+(\\.\\d+)?",k="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",y="\\b(0b[01]+)",b={begin:"\\\\[\\s\\S]",relevance:0},w={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[b]},v={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[b]},x=function(e,t,r={}){const o=n({scope:"comment",begin:e,end:t,contains:[]},r);o.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=d("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return o.contains.push({begin:c(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),o},_=x("//","$"),C=x("/\\*","\\*/"),S=x("#","$"),N={scope:"number",begin:f,relevance:0},E={scope:"number",begin:k,relevance:0},T={scope:"number",begin:y,relevance:0},M={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[b,{begin:/\[/,end:/\]/,relevance:0,contains:[b]}]},D={scope:"title",begin:m,relevance:0},B={scope:"title",begin:g,relevance:0},R={begin:"\\.\\s*"+g,relevance:0};var V=Object.freeze({__proto__:null,APOS_STRING_MODE:w,BACKSLASH_ESCAPE:b,BINARY_NUMBER_MODE:T,BINARY_NUMBER_RE:y,COMMENT:x,C_BLOCK_COMMENT_MODE:C,C_LINE_COMMENT_MODE:_,C_NUMBER_MODE:E,C_NUMBER_RE:k,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:S,IDENT_RE:m,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:R,NUMBER_MODE:N,NUMBER_RE:f,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:v,REGEXP_MODE:M,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=c(t,/.*\b/,e.binary,/\b.*/)),n({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:D,UNDERSCORE_IDENT_RE:g,UNDERSCORE_TITLE_MODE:B});function I(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function A(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function O(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function L(e,t){Array.isArray(e.illegal)&&(e.illegal=d(...e.illegal))}function P(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function $(e,t){void 0===e.relevance&&(e.relevance=1)}const Y=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]})),e.keywords=n.keywords,e.begin=c(n.beforeMatch,s(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},z=["of","and","for","in","not","or","if","then","parent","list","value"];function U(e,t,n="keyword"){const r=Object.create(null);return"string"==typeof e?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach((function(n){Object.assign(r,U(e[n],t,n))})),r;function o(e,n){t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((function(t){const n=t.split("|");r[n[0]]=[e,F(n[0],n[1])]}))}}function F(e,t){return t?Number(t):function(e){return z.includes(e.toLowerCase())}(e)?0:1}const j={},H=e=>{console.error(e)},q=(e,...t)=>{console.log(`WARN: ${e}`,...t)},W=(e,t)=>{j[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),j[`${e}/${t}`]=!0)},G=new Error;function Z(e,t,{key:n}){let r=0;const o=e[n],a={},s={};for(let i=1;i<=t.length;i++)s[i+r]=o[i],a[i+r]=!0,r+=u(t[i-1]);e[n]=s,e[n]._emit=a,e[n]._multi=!0}function K(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw H("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),G;if("object"!=typeof e.beginScope||null===e.beginScope)throw H("beginScope must be object"),G;Z(e,e.begin,{key:"beginScope"}),e.begin=p(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw H("skip, excludeEnd, returnEnd not compatible with endScope: {}"),G;if("object"!=typeof e.endScope||null===e.endScope)throw H("endScope must be object"),G;Z(e,e.end,{key:"endScope"}),e.end=p(e.end,{joinWith:""})}}(e)}function Q(e){function t(t,n){return new RegExp(a(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=u(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=t(p(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new MultiRegex;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=n(e.classNameAliases||{}),function r(o,s){const i=o;if(o.isCompiled)return i;[A,P,K,Y].forEach((e=>e(o,s))),e.compilerExtensions.forEach((e=>e(o,s))),o.__beforeBegin=null,[O,L,$].forEach((e=>e(o,s))),o.isCompiled=!0;let l=null;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),l=o.keywords.$pattern,delete o.keywords.$pattern),l=l||/\w+/,o.keywords&&(o.keywords=U(o.keywords,e.case_insensitive)),i.keywordPatternRe=t(l,!0),s&&(o.begin||(o.begin=/\B|\b/),i.beginRe=t(i.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),o.end&&(i.endRe=t(i.end)),i.terminatorEnd=a(i.end)||"",o.endsWithParent&&s.terminatorEnd&&(i.terminatorEnd+=(o.end?"|":"")+s.terminatorEnd)),o.illegal&&(i.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return n(e,{variants:null},t)})));if(e.cachedVariants)return e.cachedVariants;if(J(e))return n(e,{starts:e.starts?n(e.starts):null});if(Object.isFrozen(e))return n(e);return e}("self"===e?o:e)}))),o.contains.forEach((function(e){r(e,i)})),o.starts&&r(o.starts,s),i.matcher=function(e){const t=new ResumableMultiRegex;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(i),i}(e)}function J(e){return!!e&&(e.endsWithParent||J(e.starts))}class HTMLInjectionError extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const X=t,ee=n,te=Symbol("nomatch"),ne=function(t){const n=Object.create(null),r=Object.create(null),o=[];let a=!0;const u="Could not find the language '{}', did you forget to load/include a language module?",h={disableAutodetect:!0,name:"Plain text",contains:[]};let p={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:TokenTreeEmitter};function m(e){return p.noHighlightRe.test(e)}function g(e,t,n){let r="",o="";"object"==typeof t?(r=e,n=t.ignoreIllegals,o=t.language):(W("10.7.0","highlight(lang, code, ...args) has been deprecated."),W("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),o=e,r=t),void 0===n&&(n=!0);const a={code:r,language:o};C("before:highlight",a);const s=a.result?a.result:f(a.language,a.code,n);return s.code=a.code,C("after:highlight",s),s}function f(e,t,r,o){const s=Object.create(null);function i(){if(!S.keywords)return void E.addText(T);let e=0;S.keywordPatternRe.lastIndex=0;let t=S.keywordPatternRe.exec(T),n="";for(;t;){n+=T.substring(e,t.index);const o=x.case_insensitive?t[0].toLowerCase():t[0],a=(r=o,S.keywords[r]);if(a){const[e,r]=a;if(E.addText(n),n="",s[o]=(s[o]||0)+1,s[o]<=7&&(M+=r),e.startsWith("_"))n+=t[0];else{const n=x.classNameAliases[e]||e;c(t[0],n)}}else n+=t[0];e=S.keywordPatternRe.lastIndex,t=S.keywordPatternRe.exec(T)}var r;n+=T.substring(e),E.addText(n)}function l(){null!=S.subLanguage?function(){if(""===T)return;let e=null;if("string"==typeof S.subLanguage){if(!n[S.subLanguage])return void E.addText(T);e=f(S.subLanguage,T,!0,N[S.subLanguage]),N[S.subLanguage]=e._top}else e=k(T,S.subLanguage.length?S.subLanguage:null);S.relevance>0&&(M+=e.relevance),E.__addSublanguage(e._emitter,e.language)}():i(),T=""}function c(e,t){""!==e&&(E.startScope(t),E.addText(e),E.endScope())}function d(e,t){let n=1;const r=t.length-1;for(;n<=r;){if(!e._emit[n]){n++;continue}const r=x.classNameAliases[e[n]]||e[n],o=t[n];r?c(o,r):(T=o,i(),T=""),n++}}function h(e,t){return e.scope&&"string"==typeof e.scope&&E.openNode(x.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(c(T,x.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),T=""):e.beginScope._multi&&(d(e.beginScope,t),T="")),S=Object.create(e,{parent:{value:S}}),S}function m(e,t,n){let r=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(r){if(e["on:end"]){const n=new Response(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return m(e.parent,t,n)}function g(e){return 0===S.matcher.regexIndex?(T+=e[0],1):(R=!0,0)}function y(e){const n=e[0],r=t.substring(e.index),o=m(S,e,r);if(!o)return te;const a=S;S.endScope&&S.endScope._wrap?(l(),c(n,S.endScope._wrap)):S.endScope&&S.endScope._multi?(l(),d(S.endScope,e)):a.skip?T+=n:(a.returnEnd||a.excludeEnd||(T+=n),l(),a.excludeEnd&&(T=n));do{S.scope&&E.closeNode(),S.skip||S.subLanguage||(M+=S.relevance),S=S.parent}while(S!==o.parent);return o.starts&&h(o.starts,e),a.returnEnd?0:n.length}let b={};function w(n,o){const s=o&&o[0];if(T+=n,null==s)return l(),0;if("begin"===b.type&&"end"===o.type&&b.index===o.index&&""===s){if(T+=t.slice(o.index,o.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=b.rule,t}return 1}if(b=o,"begin"===o.type)return function(e){const t=e[0],n=e.rule,r=new Response(n),o=[n.__beforeBegin,n["on:begin"]];for(const a of o)if(a&&(a(e,r),r.isMatchIgnored))return g(t);return n.skip?T+=t:(n.excludeBegin&&(T+=t),l(),n.returnBegin||n.excludeBegin||(T=t)),h(n,e),n.returnBegin?0:t.length}(o);if("illegal"===o.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(S.scope||"<unnamed>")+'"');throw e.mode=S,e}if("end"===o.type){const e=y(o);if(e!==te)return e}if("illegal"===o.type&&""===s)return T+="\n",1;if(B>1e5&&B>3*o.index){throw new Error("potential infinite loop, way more iterations than matches")}return T+=s,s.length}const x=v(e);if(!x)throw H(u.replace("{}",e)),new Error('Unknown language: "'+e+'"');const _=Q(x);let C="",S=o||_;const N={},E=new p.__emitter(p);!function(){const e=[];for(let t=S;t!==x;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach((e=>E.openNode(e)))}();let T="",M=0,D=0,B=0,R=!1;try{if(x.__emitTokens)x.__emitTokens(t,E);else{for(S.matcher.considerAll();;){B++,R?R=!1:S.matcher.considerAll(),S.matcher.lastIndex=D;const e=S.matcher.exec(t);if(!e)break;const n=w(t.substring(D,e.index),e);D=e.index+n}w(t.substring(D))}return E.finalize(),C=E.toHTML(),{language:e,value:C,relevance:M,illegal:!1,_emitter:E,_top:S}}catch(V){if(V.message&&V.message.includes("Illegal"))return{language:e,value:X(t),illegal:!0,relevance:0,_illegalBy:{message:V.message,index:D,context:t.slice(D-100,D+100),mode:V.mode,resultSoFar:C},_emitter:E};if(a)return{language:e,value:X(t),illegal:!1,relevance:0,errorRaised:V,_emitter:E,_top:S};throw V}}function k(e,t){t=t||p.languages||Object.keys(n);const r=function(e){const t={value:X(e),illegal:!1,relevance:0,_top:h,_emitter:new p.__emitter(p)};return t._emitter.addText(e),t}(e),o=t.filter(v).filter(_).map((t=>f(t,e,!1)));o.unshift(r);const a=o.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(v(e.language).supersetOf===t.language)return 1;if(v(t.language).supersetOf===e.language)return-1}return 0})),[s,i]=a,l=s;return l.secondBest=i,l}function y(e){let t=null;const n=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=p.languageDetectRe.exec(t);if(n){const t=v(n[1]);return t||(q(u.replace("{}",n[1])),q("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>m(e)||v(e)))}(e);if(m(n))return;if(C("before:highlightElement",{el:e,language:n}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),p.throwUnescapedHTML)){throw new HTMLInjectionError("One of your code blocks includes unescaped HTML.",e.innerHTML)}t=e;const o=t.textContent,a=n?g(o,{language:n,ignoreIllegals:!0}):k(o);e.innerHTML=a.value,e.dataset.highlighted="yes",function(e,t,n){const o=t&&r[t]||n;e.classList.add("hljs"),e.classList.add(`language-${o}`)}(e,n,a.language),e.result={language:a.language,re:a.relevance,relevance:a.relevance},a.secondBest&&(e.secondBest={language:a.secondBest.language,relevance:a.secondBest.relevance}),C("after:highlightElement",{el:e,result:a,text:o})}let b=!1;function w(){if("loading"===document.readyState)return b||window.addEventListener("DOMContentLoaded",(function(){w()}),!1),void(b=!0);document.querySelectorAll(p.cssSelector).forEach(y)}function v(e){return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function x(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e.toLowerCase()]=t}))}function _(e){const t=v(e);return t&&!t.disableAutodetect}function C(e,t){const n=e;o.forEach((function(e){e[n]&&e[n](t)}))}Object.assign(t,{highlight:g,highlightAuto:k,highlightAll:w,highlightElement:y,highlightBlock:function(e){return W("10.7.0","highlightBlock will be removed entirely in v12.0"),W("10.7.0","Please use highlightElement now."),y(e)},configure:function(e){p=ee(p,e)},initHighlighting:()=>{w(),W("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){w(),W("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(e,r){let o=null;try{o=r(t)}catch(s){if(H("Language definition for '{}' could not be registered.".replace("{}",e)),!a)throw s;H(s),o=h}o.name||(o.name=e),n[e]=o,o.rawDefinition=r.bind(null,t),o.aliases&&x(o.aliases,{languageName:e})},unregisterLanguage:function(e){delete n[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]},listLanguages:function(){return Object.keys(n)},getLanguage:v,registerAliases:x,autoDetection:_,inherit:ee,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),o.push(e)},removePlugin:function(e){const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),t.debugMode=function(){a=!1},t.safeMode=function(){a=!0},t.versionString="11.11.1",t.regex={concat:c,lookahead:s,either:d,optional:l,anyNumberOfTimes:i};for(const s in V)"object"==typeof V[s]&&e(V[s]);return Object.assign(t,V),t},re=ne({});return re.newInstance=()=>ne({}),Ks=re,re.HighlightJS=re,re.default=re,Ks}const Xs=Nr(Js());var ei={component:t.defineComponent({props:{code:{type:String,required:!0},language:{type:String,default:""},autodetect:{type:Boolean,default:!0},ignoreIllegals:{type:Boolean,default:!0}},setup:function(e){var n=t.ref(e.language);t.watch((function(){return e.language}),(function(e){n.value=e}));var r=t.computed((function(){return e.autodetect||!n.value})),o=t.computed((function(){return!r.value&&!Xs.getLanguage(n.value)}));return{className:t.computed((function(){return o.value?"":"hljs "+n.value})),highlightedCode:t.computed((function(){var t;if(o.value)return console.warn('The language "'+n.value+'" you specified could not be found.'),e.code.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");if(r.value){var a=Xs.highlightAuto(e.code);return n.value=null!==(t=a.language)&&void 0!==t?t:"",a.value}return(a=Xs.highlight(e.code,{language:n.value,ignoreIllegals:e.ignoreIllegals})).value}))}},render:function(){return t.h("pre",{},[t.h("code",{class:this.className,innerHTML:this.highlightedCode,tabindex:"0"})])}})};const ti="[A-Za-z$_][0-9A-Za-z$_]*",ni=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],ri=["true","false","null","undefined","NaN","Infinity"],oi=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],ai=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],si=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ii=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],li=[].concat(si,oi,ai);function ci(e){const t=e.regex,n=ti,r="<>",o="</>",a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];if("<"===r||","===r)return void t.ignoreMatch();let o;">"===r&&(((e,{after:t})=>{const n="</"+e[0].slice(1);return-1!==e.input.indexOf(n,t)})(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);((o=a.match(/^\s*=/))||(o=a.match(/^\s+extends\s+/))&&0===o.index)&&t.ignoreMatch()}},s={$pattern:ti,keyword:ni,literal:ri,built_in:li,"variable.language":ii},i="[0-9](_?[0-9])*",l=`\\.(${i})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${i})\\b`},{begin:`\\b(${c})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},p={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},f={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,p,m,g,{match:/\$\d+/},d];u.contains=k.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(k)});const y=[].concat(f,u.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(y)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},v={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,t.concat(n,"(",t.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...oi,...ai]}},_={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/};const C={match:t.concat(/\b/,(S=[...si,"super","import"].map((e=>`${e}\\s*\\(`)),t.concat("(?!",S.join("|"),")")),n,t.lookahead(/\s*\(/)),className:"title.function",relevance:0};var S;const N={begin:t.concat(/\./,t.lookahead(t.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},E={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},T="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",M={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(T)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,p,m,g,f,{match:/\$\d+/},d,x,{scope:"attr",match:n+t.lookahead(":"),relevance:0},M,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,e.REGEXP_MODE,{className:"function",begin:T,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r,end:o},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},_,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[w,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},N,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},C,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,E,{match:/\$[(.]/}]}}const di="[A-Za-z$_][0-9A-Za-z$_]*",ui=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],hi=["true","false","null","undefined","NaN","Infinity"],pi=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],mi=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],gi=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],fi=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],ki=[].concat(gi,pi,mi);function yi(e){const t=e.regex,n=function(e){const t=e.regex,n=di,r="<>",o="</>",a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];if("<"===r||","===r)return void t.ignoreMatch();let o;">"===r&&(((e,{after:t})=>{const n="</"+e[0].slice(1);return-1!==e.input.indexOf(n,t)})(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);((o=a.match(/^\s*=/))||(o=a.match(/^\s+extends\s+/))&&0===o.index)&&t.ignoreMatch()}},s={$pattern:di,keyword:ui,literal:hi,built_in:ki,"variable.language":fi},i="[0-9](_?[0-9])*",l=`\\.(${i})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${i})\\b`},{begin:`\\b(${c})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},p={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},f={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,p,m,g,{match:/\$\d+/},d];u.contains=k.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(k)});const y=[].concat(f,u.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(y)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},v={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,t.concat(n,"(",t.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...pi,...mi]}},_={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/},C={match:t.concat(/\b/,(S=[...gi,"super","import"].map((e=>`${e}\\s*\\(`)),t.concat("(?!",S.join("|"),")")),n,t.lookahead(/\s*\(/)),className:"title.function",relevance:0};var S;const N={begin:t.concat(/\./,t.lookahead(t.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},E={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},T="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",M={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(T)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,h,p,m,g,f,{match:/\$\d+/},d,x,{scope:"attr",match:n+t.lookahead(":"),relevance:0},M,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,e.REGEXP_MODE,{className:"function",begin:T,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r,end:o},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},_,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[w,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},N,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},C,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,E,{match:/\$[(.]/}]}}(e),r=di,o=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:o},contains:[n.exports.CLASS_REFERENCE]},i={$pattern:di,keyword:ui.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]),literal:hi,built_in:ki.concat(o),"variable.language":fi},l={className:"meta",begin:"@"+r},c=(e,t,n)=>{const r=e.contains.findIndex((e=>e.label===t));if(-1===r)throw new Error("can not find mode to replace");e.contains.splice(r,1,n)};Object.assign(n.keywords,i),n.exports.PARAMS_CONTAINS.push(l);const d=n.contains.find((e=>"attr"===e.scope)),u=Object.assign({},d,{match:t.concat(r,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,u]),n.contains=n.contains.concat([l,a,s,u]),c(n,"shebang",e.SHEBANG()),c(n,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/});return n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}const bi=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],wi=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),vi=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),xi=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),_i=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function Ci(e){const t=e.regex,n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}))(e),r=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+vi.join("|")+")"},{begin:":(:)?("+xi.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+_i.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...r,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...r,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:wi.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...r,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+bi.join("|")+")\\b"}]}}function Si(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(o,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:"string"}),i=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[o,i,s,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[o,a,i,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[i]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:l}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function Ni(e){const t=e.regex,n={},r={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},r]});const o={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},a=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},i={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,o]};o.contains.push(i);const l={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},c=e.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),d={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],literal:["true","false"],built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]},contains:[c,e.SHEBANG(),d,l,a,s,{match:/(\/[a-z._-]+)+/},i,{match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},n]}}function Ei(e){const t=["true","false","null"],n={scope:"literal",beginKeywords:t.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:t},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function Ti(e){const t={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,illegal:/["']/}]}]}}function Mi(e){const t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,r=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],o={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},a={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/,end:/\}/,keywords:o,illegal:/#/},i={begin:/\{\{/,relevance:0},l={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,i,s]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,i,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},c="[0-9](_?[0-9])*",d=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,u=`\\b|${r.join("|")}`,h={className:"number",relevance:0,variants:[{begin:`(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${u})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${u})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${u})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${u})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${u})`},{begin:`\\b(${c})[jJ](?=${u})`}]},p={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:o,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:["self",a,h,l,e.HASH_COMMENT_MODE]}]};return s.contains=[l,h,a],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:o,illegal:/(<\/|\?)|=>/,contains:[a,h,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},l,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[m]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[h,m,l]}]}}const Di={class:"code-block-wrapper pa-2"},Bi={key:0,class:"language-indicator"},Ri=t.defineComponent({__name:"CodeBlockRenderer",props:{code:{type:String,required:!0},language:{type:String,default:""}},setup(e){Xs.registerLanguage("js",ci),Xs.registerLanguage("javascript",ci),Xs.registerLanguage("ts",yi),Xs.registerLanguage("typescript",yi),Xs.registerLanguage("css",Ci),Xs.registerLanguage("html",Si),Xs.registerLanguage("bash",Ni),Xs.registerLanguage("sh",Ni),Xs.registerLanguage("json",Ei),Xs.registerLanguage("go",Ti),Xs.registerLanguage("golang",Ti),Xs.registerLanguage("python",Mi);const n=t.getCurrentInstance();return n&&n.appContext.app.component("highlightjs",ei.component),(n,r)=>{const o=t.resolveComponent("highlightjs");return t.openBlock(),t.createElementBlock("div",Di,[e.language?(t.openBlock(),t.createElementBlock("div",Bi,t.toDisplayString(e.language),1)):t.createCommentVNode("",!0),t.createVNode(o,{language:e.language,code:e.code},null,8,["language","code"])])}}}),Vi={key:0},Ii={key:0},Ai={key:0},Oi={key:1,class:"error--text"},Li={key:1},Pi={key:2},$i={key:1},Yi={key:1},zi={key:0,class:"text-h2"},Ui={key:1,class:"text-h3"},Fi={key:2,class:"text-h4"},ji={key:3},Hi={key:4},qi={key:5},Wi={key:2},Gi={key:3,class:"text-h5"},Zi={key:0},Ki=["href","title"],Qi={key:5},Ji={key:6},Xi={key:7},el=["src","alt"],tl={key:9},nl={key:10},rl={key:11},ol=["align"],al=["innerHTML"],sl=["innerHTML"],il={key:16},ll={key:17},cl={key:18},dl=vr(t.defineComponent({__name:"MdTokenRenderer",props:{token:{type:Object,required:!0},last:{type:Boolean,required:!1,default:!1}},setup(e,{expose:n}){const r=t.inject("markdownComponents",{}),o={fillIn:t.markRaw(Aa),...r};function a(e){return Ws(e)}function s(e){return qs(e)}function i(e){return js(e)}function l(e){return Hs(e)}function c(e){let t="";"text"in e&&"string"==typeof e.text?t=e.text:"raw"in e&&"string"==typeof e.raw&&(t=e.raw);const n=Gs(t);return n?{is:n.componentName,text:"",props:n.props}:{is:"fillIn",text:t,props:{}}}function d(e){const t=o[e];return t||(console.warn(`[MarkdownRenderer] Unknown component: "${e}". Available components: ${Object.keys(o).join(", ")}`),null)}function u(e){return e.replace(/'/g,"'").replace(/"/g,'"').replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function h(e){return void 0===e.inLink&&"text"===e.type}return n({isComponent:a,containsComponent:s,splitTextToken:i,splitParagraphToken:l,parsedComponent:c,decodeBasicEntities:u,isText:h,components:o,getComponent:d}),(n,r)=>{const o=t.resolveComponent("md-token-renderer",!0);return h(e.token)?(t.openBlock(),t.createElementBlock("span",Vi,[e.token.tokens&&0!==e.token.tokens.length?e.token.tokens&&0!==e.token.tokens.length?(t.openBlock(),t.createElementBlock("span",$i,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("span",Ii,[a(e.token)?(t.openBlock(),t.createElementBlock("span",Ai,[!e.last&&d(c(e.token).is)?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(d(c(e.token).is)),t.mergeProps({key:0,text:c(e.token).text},c(e.token).props),null,16,["text"])):e.last||d(c(e.token).is)?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("span",Oi," [Unknown component: "+t.toDisplayString(c(e.token).is)+"] ",1))])):s(e.token)?(t.openBlock(),t.createElementBlock("span",Li,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(i(e.token),((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):(t.openBlock(),t.createElementBlock("span",Pi,t.toDisplayString(u(e.token.text)),1))]))])):"heading"===e.token.type?(t.openBlock(),t.createElementBlock("span",Yi,[1===e.token.depth?(t.openBlock(),t.createElementBlock("h1",zi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):2===e.token.depth?(t.openBlock(),t.createElementBlock("h2",Ui,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):3===e.token.depth?(t.openBlock(),t.createElementBlock("h3",Fi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):4===e.token.depth?(t.openBlock(),t.createElementBlock("h4",ji,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):5===e.token.depth?(t.openBlock(),t.createElementBlock("h5",Hi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):6===e.token.depth?(t.openBlock(),t.createElementBlock("h6",qi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0)])):"strong"===e.token.type?(t.openBlock(),t.createElementBlock("strong",Wi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):"paragraph"===e.token.type?(t.openBlock(),t.createElementBlock("p",Gi,[s(e.token)?(t.openBlock(),t.createElementBlock("span",Zi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l(e.token),((n,r)=>(t.openBlock(),t.createBlock(o,{key:r,token:n,last:e.last&&1===e.token.tokens.length&&r===l(e.token).length-1},null,8,["token","last"])))),128))])):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(e.token.tokens,((n,r)=>(t.openBlock(),t.createBlock(o,{key:r,token:n,last:e.last&&1===e.token.tokens.length},null,8,["token","last"])))),128))])):"link"===e.token.type?(t.openBlock(),t.createElementBlock("a",{key:4,href:e.token.href,title:e.token.title},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))],8,Ki)):"list"===e.token.type&&!1===e.token.ordered?(t.openBlock(),t.createElementBlock("ul",Qi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.items,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):"list"===e.token.type&&!0===e.token.ordered?(t.openBlock(),t.createElementBlock("ol",Ji,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.items,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):"list_item"===e.token.type?(t.openBlock(),t.createElementBlock("li",Xi,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):"image"===e.token.type?(t.openBlock(),t.createElementBlock("img",{key:8,src:e.token.href,alt:e.token.title},null,8,el)):"hr"===e.token.type?(t.openBlock(),t.createElementBlock("hr",tl)):"br"===e.token.type?(t.openBlock(),t.createElementBlock("br",nl)):"del"===e.token.type?(t.openBlock(),t.createElementBlock("del",rl)):"table"===e.token.type?(t.openBlock(),t.createElementBlock("table",{key:12,align:e.token.align},[t.createElementVNode("thead",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.header,((e,n)=>(t.openBlock(),t.createElementBlock("th",{key:n},t.toDisplayString(e.text),1)))),128))]),t.createElementVNode("tbody",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.rows,((e,n)=>(t.openBlock(),t.createElementBlock("tr",{key:n},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e,((e,n)=>(t.openBlock(),t.createElementBlock("td",{key:n},t.toDisplayString(e.text),1)))),128))])))),128))])],8,ol)):"html"===e.token.type?(t.openBlock(),t.createElementBlock("span",{key:13,innerHTML:e.token.raw},null,8,al)):"code"===e.token.type?(t.openBlock(),t.createBlock(Ri,{key:14,code:e.token.text,language:e.token.lang},null,8,["code","language"])):"codespan"===e.token.type?(t.openBlock(),t.createElementBlock("code",{key:15,class:"codespan",innerHTML:e.token.text},null,8,sl)):"blockquote"===e.token.type?(t.openBlock(),t.createElementBlock("blockquote",il,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):"escape"===e.token.type?(t.openBlock(),t.createElementBlock("span",ll,t.toDisplayString(e.token.text),1)):"em"===e.token.type?(t.openBlock(),t.createElementBlock("em",cl,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(o,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0)}}}),[["__scopeId","data-v-de3eebd6"]]);const ul=vr(t.defineComponent({name:"MarkdownRenderer",components:{MdTokenRenderer:dl,AudioAutoPlayer:Zs},props:{md:{type:String,required:!0}},computed:{tokens(){return Us(this.md)}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("md-token-renderer"),l=t.resolveComponent("audio-auto-player");return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.tokens,((n,r)=>(t.openBlock(),t.createElementBlock("span",{key:r},[n.type?(t.openBlock(),t.createBlock(i,{key:0,token:n,last:r===e.tokens.length-1},null,8,["token","last"])):n.audio?(t.openBlock(),t.createBlock(l,{key:1,src:n.audio},null,8,["src"])):t.createCommentVNode("",!0)])))),128))])}]]),hl=Object.freeze(Object.defineProperty({__proto__:null,default:ul},Symbol.toStringTag,{value:"Module"}));async function pl(){const e=ml();if(!e.onLoadComplete){let t=200;const n=50;for(;!e.onLoadComplete&&t>0;)await new Promise((e=>setTimeout(e,n))),t--;if(!e.onLoadComplete)throw new Error("User initialization timed out")}return r.getDataLayer().getUserDB()}const ml=()=>{const e=ka();return e&&o.setActivePinia(e),o.defineStore("auth",{state:()=>({_user:void 0,loginAndRegistration:{init:!1,loggedIn:!1,regDialogOpen:!1,loginDialogOpen:!1},onLoadComplete:!1}),actions:{async init(){try{this._user=r.getDataLayer().getUserDB(),this.loginAndRegistration.loggedIn=!!this._user&&this._user.isLoggedIn(),this.onLoadComplete=!0,this.loginAndRegistration.init=!0}catch(e){console.error("Failed to initialize auth store:",e),this.loginAndRegistration.loggedIn=!1,this.onLoadComplete=!0,this.loginAndRegistration.init=!0}},setLoginDialog(e){this.loginAndRegistration.loginDialogOpen=e},setRegDialog(e){this.loginAndRegistration.regDialogOpen=e},async resetUserData(){try{if(!this._user)throw new Error("No user available for data reset");const e=await this._user.resetUserData();if("ok"!==e.status)throw new Error(e.error||"Reset failed");return console.log("User data reset successfully"),e}catch(e){throw console.error("Failed to reset user data:",e),e}}},getters:{currentUser:async()=>pl(),isLoggedIn:e=>e.loginAndRegistration.loggedIn,isInitialized:e=>e.loginAndRegistration.init,status:e=>({loggedIn:e.loginAndRegistration.loggedIn,init:e.loginAndRegistration.init,user:e._user})}})()},gl=()=>{const e=ka();return e&&o.setActivePinia(e),o.defineStore("config",{state:()=>({config:{darkMode:!1,likesConfetti:!1,sessionTimeLimit:5}}),actions:{updateConfig(e){this.config=e},async updateDarkMode(e){this.config.darkMode=e;const t=await pl();t&&await t.setConfig({darkMode:e})},async updateLikesConfetti(e){this.config.likesConfetti=e;const t=await pl();t&&await t.setConfig({likesConfetti:e})},async updateSessionTimeLimit(e){this.config.sessionTimeLimit=e;const t=await pl();t&&await t.setConfig({sessionTimeLimit:e})},async hydrate(){try{const e=await pl();if(e){const t=await e.getConfig();console.log(`user config: ${JSON.stringify(t)}`),this.updateConfig(t)}else console.log("No user logged in, using default config")}catch(e){console.warn("Failed to hydrate config store, using defaults:",e)}},async init(){await this.hydrate()},resetDefaults(){this.config={darkMode:!1,likesConfetti:!1,sessionTimeLimit:5}}}})()};function fl(){const e=t.ref(!0),n=t.ref(!1),r=t.ref(!1);return{config:t.computed((()=>r.value?{showLoginRegistration:!1,showLogout:!1,showResetData:!0,logoutLabel:"",resetLabel:"Reset User Data"}:{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""})),isLoading:e,syncStrategyDetected:n,isLocalOnlyMode:r,detectSyncStrategy:async()=>{try{e.value=!0;const t=await pl(),o=t.syncStrategy?.canCreateAccount?.();r.value=!o,n.value=!0}catch(t){console.error("Failed to detect sync strategy:",t),r.value=!1,n.value=!0}finally{e.value=!1}}}}const kl=vr(t.defineComponent({__name:"UserChip",props:{showLoginButton:{type:Boolean},redirectToPath:{}},setup(e){const n=a.useRouter(),r=ml(),o=gl(),s=fl(),i=t.ref(""),l=t.ref([]),c=t.ref(!1),d=t.ref(""),u=t.computed((()=>"reset"===d.value)),h=()=>{d.value="",c.value=!1},p=t.computed((()=>l.value.length>0)),m=t.computed((()=>s.config.value||{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""}));t.onMounted((async()=>{const e=await pl();i.value=e.getUsername(),await s.detectSyncStrategy()}));const g=async()=>{n.push(`/u/${(await pl()).getUsername()}`)},f=async()=>{n.push(`/u/${(await pl()).getUsername()}/stats`)},k=async()=>{(await r._user.logout()).ok&&(r.loginAndRegistration={init:!0,loggedIn:!1,regDialogOpen:!1,loginDialogOpen:!1},o.resetDefaults(),n.push("/home"))},y=async()=>{try{await r.resetUserData(),o.resetDefaults(),h(),n.push("/home")}catch(e){console.error("Failed to reset user data:",e)}};return(e,n)=>{const r=t.resolveComponent("v-icon"),o=t.resolveComponent("v-avatar"),a=t.resolveComponent("v-chip"),s=t.resolveComponent("v-list-item-title"),b=t.resolveComponent("v-list-item"),w=t.resolveComponent("v-divider"),v=t.resolveComponent("v-list"),x=t.resolveComponent("v-menu"),_=t.resolveComponent("v-badge"),C=t.resolveComponent("v-card-title"),S=t.resolveComponent("v-text-field"),N=t.resolveComponent("v-card-text"),E=t.resolveComponent("v-spacer"),T=t.resolveComponent("v-btn"),M=t.resolveComponent("v-card-actions"),D=t.resolveComponent("v-card"),B=t.resolveComponent("v-dialog");return t.openBlock(),t.createElementBlock(t.Fragment,null,[t.createVNode(_,{content:l.value.length,"model-value":p.value,color:"accent",location:"end top"},{default:t.withCtx((()=>[t.createVNode(x,{location:"bottom end",transition:"scale-transition"},{activator:t.withCtx((({props:e})=>[t.createVNode(a,t.mergeProps(e,{class:"ma-2"}),{default:t.withCtx((()=>[t.createVNode(o,{start:"",class:"bg-primary"},{default:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-school")]))),_:1})])),_:1}),t.createTextVNode(" "+t.toDisplayString(i.value),1)])),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(v,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.value,(e=>(t.openBlock(),t.createBlock(b,{key:e,onClick:t=>(e=>{const t=l.value.indexOf(e);l.value.splice(t,1)})(e)},{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e),1)])),_:2},1024)])),_:2},1032,["onClick"])))),128)),l.value.length?(t.openBlock(),t.createBlock(w,{key:0})):t.createCommentVNode("",!0),t.createVNode(b,{onClick:f},{prepend:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-trending-up")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Stats")]))),_:1})])),_:1}),t.createVNode(b,{onClick:g},{prepend:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-cog")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("Settings")]))),_:1})])),_:1}),m.value.showLogout?(t.openBlock(),t.createBlock(b,{key:1,onClick:k},{prepend:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[9]||(n[9]=[t.createTextVNode("mdi-logout")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(m.value.logoutLabel),1)])),_:1})])),_:1})):t.createCommentVNode("",!0),m.value.showResetData?(t.openBlock(),t.createBlock(b,{key:2,onClick:n[0]||(n[0]=e=>c.value=!0)},{prepend:t.withCtx((()=>[t.createVNode(r,null,{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("mdi-delete-sweep")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(m.value.resetLabel),1)])),_:1})])),_:1})):t.createCommentVNode("",!0)])),_:1})])),_:1})])),_:1},8,["content","model-value"]),t.createVNode(B,{modelValue:c.value,"onUpdate:modelValue":n[3]||(n[3]=e=>c.value=e),"max-width":"500px",persistent:""},{default:t.withCtx((()=>[t.createVNode(D,null,{default:t.withCtx((()=>[t.createVNode(C,{class:"text-h5 d-flex align-center"},{default:t.withCtx((()=>[t.createVNode(r,{color:"warning",class:"mr-3"},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[12]||(n[12]=t.createTextVNode(" Reset All User Data "))])),_:1}),t.createVNode(N,null,{default:t.withCtx((()=>[n[13]||(n[13]=t.createElementVNode("p",{class:"mb-4"},"This will permanently delete:",-1)),n[14]||(n[14]=t.createElementVNode("ul",{class:"mb-4"},[t.createElementVNode("li",null,"All course progress and history"),t.createElementVNode("li",null,"Scheduled card reviews"),t.createElementVNode("li",null,"Course registrations"),t.createElementVNode("li",null,"User preferences")],-1)),n[15]||(n[15]=t.createElementVNode("p",{class:"mb-4 text-error font-weight-bold"},"This cannot be undone.",-1)),t.createVNode(S,{modelValue:d.value,"onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e),label:'Type "reset" to confirm',outlined:"",dense:"",onKeyup:n[2]||(n[2]=t.withKeys((e=>u.value&&y()),["enter"]))},null,8,["modelValue"])])),_:1}),t.createVNode(M,null,{default:t.withCtx((()=>[t.createVNode(E),t.createVNode(T,{text:"",onClick:h},{default:t.withCtx((()=>n[16]||(n[16]=[t.createTextVNode("Cancel")]))),_:1}),t.createVNode(T,{color:"error",disabled:!u.value,onClick:y},{default:t.withCtx((()=>n[17]||(n[17]=[t.createTextVNode(" Reset All Data ")]))),_:1},8,["disabled"])])),_:1})])),_:1})])),_:1},8,["modelValue"])],64)}}}),[["__scopeId","data-v-9a38a213"]]),yl={class:"d-flex flex-column align-start"},bl={class:"mb-2"},wl=vr(t.defineComponent({__name:"UserLogin",props:{redirectTo:{default:"/study"}},emits:["toggle","loginSuccess","forgotPassword"],setup(e,{emit:r}){const o=e,s=r,i=a.useRouter(),l=a.useRoute(),c=ml(),d=gl(),u=t.ref(""),h=t.ref(""),p=t.ref(!1),m=t.ref(!1),g=t.ref(!1),f=t.ref(7e3),k=t.ref(void 0),y=t.computed((()=>"login"===l.name)),b=t.computed((()=>({color:g.value?"error":"success",text:g.value?"Try again":"Log In"}))),w=async()=>{m.value=!0,n.log("Starting login attempt"),n.log(`Login attempt for username: ${u.value}`);try{n.log("Attempting to get User instance"),k.value=await pl(),n.log("Got User instance, attempting login"),await k.value.login(u.value,h.value),n.log("Login successful"),n.log("Initializing user config"),d.init(),n.log("User config initialized"),n.log("Setting authentication state"),c.loginAndRegistration.loggedIn=!0,n.log(`Authentication state set, redirecting to: ${o.redirectTo}`),s("loginSuccess",o.redirectTo),i.push(o.redirectTo),n.log("Login and redirect complete")}catch(e){n.log("Login attempt failed"),n.log(`Login error details: ${JSON.stringify(e)}`),console.log(`login error: ${JSON.stringify(e)}`),n.log("Initiating bad login feedback"),g.value=!0,zr({text:"Username or password was incorrect.",status:n.Status.error,timeout:f.value}),setTimeout((()=>{g.value=!1}),f.value)}n.log("Resetting awaiting response state"),m.value=!1},v=()=>{n.log("Toggling registration / login forms."),s("toggle")},x=()=>{n.log("Forgot password clicked"),y.value?i.push("/request-reset"):s("forgotPassword")};return(e,n)=>{const r=t.resolveComponent("v-card-title"),o=t.resolveComponent("v-text-field"),a=t.resolveComponent("v-btn"),s=t.resolveComponent("v-snackbar"),i=t.resolveComponent("v-icon"),l=t.resolveComponent("router-link"),c=t.resolveComponent("v-form"),d=t.resolveComponent("v-card-text"),k=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(k,null,{default:t.withCtx((()=>[y.value?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(r,{key:0,class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("Log In")]))),_:1})),t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(c,{onsubmit:"return false;",onSubmit:t.withModifiers(w,["prevent"])},{default:t.withCtx((()=>[t.createVNode(o,{id:"",modelValue:u.value,"onUpdate:modelValue":n[0]||(n[0]=e=>u.value=e),autofocus:"",name:"username",label:"Username","prepend-icon":"mdi-account-circle"},null,8,["modelValue"]),t.createVNode(o,{modelValue:h.value,"onUpdate:modelValue":n[1]||(n[1]=e=>h.value=e),"prepend-icon":"mdi-lock",name:"password",hover:"Show password input",label:"Enter your password",hint:"",min:"0","append-icon":p.value?"mdi-eye-off":"mdi-eye",type:p.value?"text":"password","onClick:append":n[2]||(n[2]=()=>p.value=!p.value)},null,8,["modelValue","append-icon","type"]),t.createVNode(s,{modelValue:g.value,"onUpdate:modelValue":n[4]||(n[4]=e=>g.value=e),location:"bottom right",timeout:f.value},{default:t.withCtx((()=>[n[7]||(n[7]=t.createTextVNode(" Username or password was incorrect. ")),t.createVNode(a,{color:"pink",variant:"text",onClick:n[3]||(n[3]=e=>g.value=!1)},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Close")]))),_:1})])),_:1},8,["modelValue","timeout"]),t.createElementVNode("div",yl,[t.createElementVNode("div",bl,[t.createVNode(a,{class:"mr-2",type:"submit",loading:m.value,color:b.value.color},{default:t.withCtx((()=>[t.createVNode(i,{start:""},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-lock-open")]))),_:1}),n[9]||(n[9]=t.createTextVNode(" Log In "))])),_:1},8,["loading","color"]),y.value?(t.openBlock(),t.createBlock(l,{key:0,to:"signup"},{default:t.withCtx((()=>[t.createVNode(a,{variant:"text"},{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("Create New Account")]))),_:1})])),_:1})):(t.openBlock(),t.createBlock(a,{key:1,variant:"text",onClick:v},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode("Create New Account")]))),_:1}))]),t.renderSlot(e.$slots,"forgot-password",{},(()=>[t.createElementVNode("a",{href:"#",class:"text-caption text-decoration-none",onClick:t.withModifiers(x,["prevent"])}," Forgot password? ")]),!0)])])),_:3})])),_:3})])),_:3})}}}),[["__scopeId","data-v-563b0048"]]);function vl(e){if(!e)return"";if(e.length<6)return"Password must be at least 6 characters";return new Set(e).size<2?"Password must contain at least 2 different characters":""}const xl=vr(t.defineComponent({name:"UserRegistration",props:{onSignupSuccess:{type:Function,required:!1}},emits:["toggle","signup-success"],data:()=>({email:"",username:"",password:"",retypedPassword:"",passwordVisible:!1,emailError:!1,emailHint:"",usernameValidationInProgress:!1,usernameError:!1,usernameHint:"",awaitingResponse:!1,badLoginAttempt:!1,userSecret:"",secret:"goons",user:null,roles:["Student","Teacher","Author"],student:!0,teacher:!1,author:!1,authStore:ml()}),computed:{registrationRoute(){return"string"==typeof this.$route.name&&"signup"===this.$route.name.toLowerCase()},buttonStatus(){return{color:this.badLoginAttempt?"error":"success",text:this.badLoginAttempt?"Try again":"Log In"}},passwordError(){return vl(this.password)},passwordRetypeError(){return console.log("[RTE]"),this.password!==this.retypedPassword?"Passwords must match.":""}},async created(){this.user=await pl()},methods:{toggle(){n.log("Toggling registration / login forms."),this.$emit("toggle")},validateEmail(){this.emailError=!1;this.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)?(this.emailError=!0,this.emailHint="Please enter a valid email address"):this.emailHint=""},validateUsername(){this.usernameError=!1},async createUser(){if(this.awaitingResponse=!0,this.passwordError)return zr({text:this.passwordError,status:n.Status.error}),void(this.awaitingResponse=!1);if(n.log(`\nUser creation\n-------------\n\nName: ${this.username}\nStudent: ${this.student}\nTeacher: ${this.teacher}\nAuthor: ${this.author}\n`),this.password===this.retypedPassword){if(!this.user)return void console.error("ERROR: No user object available");this.user.createAccount(this.username,this.password).then((async e=>{if(e.status===n.Status.ok){if(this.authStore.loginAndRegistration.loggedIn=!0,this.authStore.loginAndRegistration.init=!1,this.authStore.loginAndRegistration.init=!0,this.email)try{const e=await pl();await e.setConfig({email:this.email});const t="undefined"!=typeof window?window.location.origin:void 0,r=await po(this.username,this.email,t);r.ok?zr({text:"Account created! Please check your email to verify your account.",status:n.Status.ok}):n.log(`Warning: Failed to send verification email: ${r.error}`)}catch(t){console.error("Email save/send error:",t),n.log(`Warning: Failed to save email or send verification: ${t}`)}this.onSignupSuccess&&(console.log("[UserRegistration] Calling onSignupSuccess callback"),this.onSignupSuccess({username:this.username})),this.$emit("signup-success",{username:this.username})}else"This username is taken!"===e.error?(this.usernameError=!0,this.usernameHint="Try a different name.",this.$refs.userNameTextField.focus(),zr({text:`The name ${this.username} is taken!`,status:e.status})):zr({text:e.error,status:e.status})})).catch((e=>{if(console.error("[UserRegistration] .catch() called with error:",e),e){const t=e?.message||e?.error||e?.toString()||"Account creation failed";zr({text:t,status:n.Status.error})}})),this.awaitingResponse=!1}else zr({text:"Passwords do not match.",status:n.Status.error}),this.awaitingResponse=!1}}}),[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-btn"),d=t.resolveComponent("v-snackbar"),u=t.resolveComponent("v-icon"),h=t.resolveComponent("router-link"),p=t.resolveComponent("v-form"),m=t.resolveComponent("v-card-text"),g=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(g,null,{default:t.withCtx((()=>[t.createVNode(i,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode(" Create an Account ")]))),_:1}),t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(p,{onSubmit:t.withModifiers(e.createUser,["prevent"])},{default:t.withCtx((()=>[t.createVNode(l,{modelValue:e.email,"onUpdate:modelValue":n[0]||(n[0]=t=>e.email=t),name:"email",label:"Email address",type:"email","prepend-icon":"mdi-email",error:e.emailError,hint:e.emailHint,onBlur:e.validateEmail},null,8,["modelValue","error","hint","onBlur"]),t.createVNode(l,{id:"",ref:"userNameTextField",modelValue:e.username,"onUpdate:modelValue":n[1]||(n[1]=t=>e.username=t),name:"username",label:"Choose a Username","prepend-icon":"mdi-account-circle",error:e.usernameError,hint:e.usernameHint,onBlur:e.validateUsername},null,8,["modelValue","error","hint","onBlur"]),t.createVNode(l,{modelValue:e.password,"onUpdate:modelValue":n[2]||(n[2]=t=>e.password=t),"prepend-icon":"mdi-lock",name:"password",hover:"Show password",label:"Create a password",hint:e.passwordError,error:!!e.passwordError,min:"4","append-icon":e.passwordVisible?"mdi-eye-off":"mdi-eye",type:e.passwordVisible?"text":"password","onClick:append":n[3]||(n[3]=()=>e.passwordVisible=!e.passwordVisible)},null,8,["modelValue","hint","error","append-icon","type"]),t.createVNode(l,{modelValue:e.retypedPassword,"onUpdate:modelValue":n[4]||(n[4]=t=>e.retypedPassword=t),"prepend-icon":"mdi-lock",name:"retypedPassword",hover:"Show password",label:"Retype your password",disabled:""===e.password||!!e.passwordError,hint:e.passwordRetypeError,min:"4",type:e.passwordVisible?"text":"password"},null,8,["modelValue","disabled","hint","type"]),t.createVNode(d,{modelValue:e.badLoginAttempt,"onUpdate:modelValue":n[6]||(n[6]=t=>e.badLoginAttempt=t),location:"bottom right",timeout:5e3},{default:t.withCtx((()=>[n[9]||(n[9]=t.createTextVNode(" Username or password was incorrect. ")),t.createVNode(c,{color:"pink",variant:"text",onClick:n[5]||(n[5]=t=>e.badLoginAttempt=!1)},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode(" Close ")]))),_:1})])),_:1},8,["modelValue"]),t.createVNode(c,{class:"mr-2 my-2",type:"submit",loading:e.awaitingResponse,color:e.buttonStatus.color,disabled:!!e.passwordError||e.password!==e.retypedPassword},{default:t.withCtx((()=>[t.createVNode(u,{start:""},{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("mdi-lock-open")]))),_:1}),n[11]||(n[11]=t.createTextVNode(" Create Account "))])),_:1},8,["loading","color","disabled"]),e.registrationRoute?(t.openBlock(),t.createBlock(h,{key:0,to:"login"},{default:t.withCtx((()=>[t.createVNode(c,{variant:"text"},{default:t.withCtx((()=>n[12]||(n[12]=[t.createTextVNode("Log In")]))),_:1})])),_:1})):(t.openBlock(),t.createBlock(c,{key:1,variant:"text",onClick:e.toggle},{default:t.withCtx((()=>n[13]||(n[13]=[t.createTextVNode(" Log In ")]))),_:1},8,["onClick"]))])),_:1},8,["onSubmit"])])),_:1})])),_:1})}]]),_l=t.defineComponent({name:"RequestPasswordReset",emits:["cancel","success"],data:()=>({email:"",emailError:!1,emailHint:"",isSubmitting:!1,requestSent:!1}),methods:{validateEmail(){if(this.emailError=!1,this.emailHint="",!this.email)return;/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)||(this.emailError=!0,this.emailHint="Please enter a valid email address")},async handleSubmit(){if(this.validateEmail(),!this.emailError&&this.email){this.isSubmitting=!0;try{const e="undefined"!=typeof window?window.location.origin:void 0,t=await fo(this.email,e);t.ok?(this.requestSent=!0,this.$emit("success",this.email)):zr({text:t.error||"Failed to send reset email",status:n.Status.error})}catch(e){zr({text:"An unexpected error occurred",status:n.Status.error})}finally{this.isSubmitting=!1}}}}}),Cl={key:1,class:"text-center"};const Sl=vr(_l,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-form"),h=t.resolveComponent("v-card-text"),p=t.resolveComponent("v-spacer"),m=t.resolveComponent("v-card-actions"),g=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(g,null,{default:t.withCtx((()=>[t.createVNode(i,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode(" Reset Password ")]))),_:1}),t.createVNode(h,{class:"pa-6"},{default:t.withCtx((()=>[e.requestSent?(t.openBlock(),t.createElementBlock("div",Cl,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-email-check")]))),_:1}),n[9]||(n[9]=t.createElementVNode("h3",{class:"mb-2"},"Check Your Email",-1)),t.createElementVNode("p",null,[n[7]||(n[7]=t.createTextVNode(" If an account exists with ")),t.createElementVNode("strong",null,t.toDisplayString(e.email),1),n[8]||(n[8]=t.createTextVNode(", you will receive a password reset link shortly. "))]),n[10]||(n[10]=t.createElementVNode("p",{class:"text-caption mt-4"},"Didn't receive an email? Check your spam folder.",-1))])):(t.openBlock(),t.createBlock(u,{key:0,onSubmit:t.withModifiers(e.handleSubmit,["prevent"])},{default:t.withCtx((()=>[n[5]||(n[5]=t.createElementVNode("p",{class:"mb-4"}," Enter your email address and we'll send you a link to reset your password. ",-1)),t.createVNode(l,{modelValue:e.email,"onUpdate:modelValue":n[0]||(n[0]=t=>e.email=t),name:"email",label:"Email address",type:"email","prepend-icon":"mdi-email",error:e.emailError,hint:e.emailHint,disabled:e.isSubmitting,onBlur:e.validateEmail},null,8,["modelValue","error","hint","disabled","onBlur"]),t.createVNode(d,{type:"submit",color:"primary",class:"mt-4",loading:e.isSubmitting,disabled:!e.email||e.emailError,block:""},{default:t.withCtx((()=>[t.createVNode(c,{start:""},{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("mdi-email-send")]))),_:1}),n[4]||(n[4]=t.createTextVNode(" Send Reset Link "))])),_:1},8,["loading","disabled"])])),_:1},8,["onSubmit"]))])),_:1}),e.requestSent?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(m,{key:0},{default:t.withCtx((()=>[t.renderSlot(e.$slots,"back-action",{},(()=>[t.createVNode(d,{variant:"text",onClick:n[1]||(n[1]=t=>e.$emit("cancel"))},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode(" Cancel ")]))),_:1})])),t.createVNode(p)])),_:3}))])),_:3})}]]),Nl={key:0},El={key:"login-buttons"},Tl={key:"user-chip"},Ml=vr(t.defineComponent({__name:"UserLoginAndRegistrationContainer",props:{showLoginButton:{type:Boolean},redirectToPath:{},showRegistration:{type:Boolean},onSignupSuccess:{type:Function}},emits:["signup-success"],setup(e,{emit:n}){const o=e,s=n,i=a.useRoute(),l=ml(),c=fl();t.onMounted((async()=>{await c.detectSyncStrategy()}));const d=t.computed((()=>{if(!i.name||"string"!=typeof i.name)return!0;const e=i.name.toLowerCase();return!("login"===e||"signup"===e)})),u=t.computed((()=>l.onLoadComplete)),h=t.computed((()=>l._user?l._user.getUsername().startsWith(r.GuestUsername):!l.loginAndRegistration.loggedIn)),p=t.computed((()=>({...c.config.value||{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""},...void 0!==o.showRegistration&&{showLoginRegistration:o.showRegistration}}))),m=t.computed({get:()=>l.loginAndRegistration.regDialogOpen,set:e=>{l.loginAndRegistration.regDialogOpen=e}}),g=t.computed({get:()=>l.loginAndRegistration.loginDialogOpen,set:e=>{l.loginAndRegistration.loginDialogOpen=e}}),f=t.ref(!1),k=()=>{if(m.value&&g.value)throw new Error("Registration / Login dialogs both activated.");if(m.value===g.value)throw new Error("Registration / Login dialogs toggled while both were dormant.");m.value=!m.value,g.value=!g.value},y=()=>{g.value=!1,f.value=!0},b=()=>{f.value=!1},w=e=>{m.value=!1,o.onSignupSuccess&&o.onSignupSuccess(e),s("signup-success",e)};return(e,n)=>{const r=t.resolveComponent("v-btn"),o=t.resolveComponent("v-dialog");return u.value&&d.value?(t.openBlock(),t.createElementBlock("div",Nl,[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[h.value?(t.openBlock(),t.createElementBlock("div",El,[p.value.showLoginRegistration?(t.openBlock(),t.createBlock(o,{key:0,modelValue:m.value,"onUpdate:modelValue":n[0]||(n[0]=e=>m.value=e),width:"500px"},{activator:t.withCtx((({props:e})=>[t.createVNode(r,t.mergeProps({class:"mr-2",size:"small",color:"success"},e),{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("Sign Up")]))),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(xl,{onToggle:k,onSignupSuccess:w,"on-signup-success":w})])),_:1},8,["modelValue"])):t.createCommentVNode("",!0),t.createVNode(o,{modelValue:g.value,"onUpdate:modelValue":n[1]||(n[1]=e=>g.value=e),width:"500px"},{activator:t.withCtx((({props:e})=>[t.createVNode(r,t.mergeProps({size:"small",color:"success"},e),{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("Log In")]))),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(wl,{onToggle:k,onForgotPassword:y})])),_:1},8,["modelValue"]),t.createVNode(o,{modelValue:f.value,"onUpdate:modelValue":n[2]||(n[2]=e=>f.value=e),width:"500px"},{default:t.withCtx((()=>[t.createVNode(Sl,{onCancel:b,onSuccess:b})])),_:1},8,["modelValue"])])):(t.openBlock(),t.createElementBlock("div",Tl,[t.createVNode(kl)]))])),_:1})])):t.createCommentVNode("",!0)}}}),[["__scopeId","data-v-5a55bdf0"]]),Dl=t.defineComponent({name:"VerifyEmail",emits:["verified","error"],props:{token:{type:String,default:null}},data:()=>({isVerifying:!1,verificationStatus:null,errorMessage:"",username:""}),async mounted(){await this.performVerification()},methods:{async performVerification(){const e=this.token||this.getTokenFromURL();if(!e)return this.verificationStatus="error",void(this.errorMessage="No verification token provided");this.isVerifying=!0;try{const t=await mo(e);t.ok?(this.verificationStatus="success",this.username=t.username||"",zr({text:"Email verified successfully!",status:n.Status.ok})):(this.verificationStatus="error",this.errorMessage=t.error||"Verification failed",zr({text:t.error||"Verification failed",status:n.Status.error}))}catch(t){this.verificationStatus="error",this.errorMessage="An unexpected error occurred",zr({text:"An unexpected error occurred",status:n.Status.error})}finally{this.isVerifying=!1}},getTokenFromURL(){if("undefined"==typeof window)return null;return new URLSearchParams(window.location.search).get("token")}}}),Bl={key:0,class:"text-center"},Rl={key:1,class:"text-center"},Vl={key:0},Il={key:2,class:"text-center"},Al={key:3,class:"text-center"};const Ol=vr(Dl,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-progress-circular"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-card-text"),u=t.resolveComponent("v-spacer"),h=t.resolveComponent("v-btn"),p=t.resolveComponent("v-card-actions"),m=t.resolveComponent("v-card"),g=t.resolveComponent("v-col"),f=t.resolveComponent("v-row"),k=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(k,{class:"fill-height",fluid:""},{default:t.withCtx((()=>[t.createVNode(f,{align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(g,{cols:"12",sm:"8",md:"6"},{default:t.withCtx((()=>[t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(i,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode(" Email Verification ")]))),_:1}),t.createVNode(d,{class:"pa-6"},{default:t.withCtx((()=>[e.isVerifying?(t.openBlock(),t.createElementBlock("div",Bl,[t.createVNode(l,{indeterminate:"",color:"primary",size:"64",class:"mb-4"}),n[3]||(n[3]=t.createElementVNode("p",null,"Verifying your email...",-1))])):"success"===e.verificationStatus?(t.openBlock(),t.createElementBlock("div",Rl,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-check-circle")]))),_:1}),n[5]||(n[5]=t.createElementVNode("h3",{class:"mb-2"},"Email Verified!",-1)),n[6]||(n[6]=t.createElementVNode("p",null,"Your account has been successfully verified.",-1)),e.username?(t.openBlock(),t.createElementBlock("p",Vl,"Welcome, "+t.toDisplayString(e.username)+"!",1)):t.createCommentVNode("",!0)])):"error"===e.verificationStatus?(t.openBlock(),t.createElementBlock("div",Il,[t.createVNode(c,{color:"error",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[8]||(n[8]=t.createElementVNode("h3",{class:"mb-2"},"Verification Failed",-1)),t.createElementVNode("p",null,t.toDisplayString(e.errorMessage),1)])):(t.openBlock(),t.createElementBlock("div",Al,[t.createVNode(c,{color:"warning",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[9]||(n[9]=[t.createTextVNode("mdi-help-circle")]))),_:1}),n[10]||(n[10]=t.createElementVNode("h3",{class:"mb-2"},"No Verification Token",-1)),n[11]||(n[11]=t.createElementVNode("p",null,"Please use the link from your verification email.",-1))]))])),_:1}),t.createVNode(p,null,{default:t.withCtx((()=>[t.createVNode(u),t.renderSlot(e.$slots,"actions",{status:e.verificationStatus,username:e.username},(()=>["success"===e.verificationStatus?(t.openBlock(),t.createBlock(h,{key:0,color:"primary",onClick:n[0]||(n[0]=t=>e.$emit("verified",e.username))},{default:t.withCtx((()=>n[12]||(n[12]=[t.createTextVNode(" Continue ")]))),_:1})):"error"===e.verificationStatus?(t.openBlock(),t.createBlock(h,{key:1,variant:"text",onClick:n[1]||(n[1]=t=>e.$emit("error",e.errorMessage))},{default:t.withCtx((()=>n[13]||(n[13]=[t.createTextVNode(" Close ")]))),_:1})):t.createCommentVNode("",!0)]))])),_:3})])),_:3})])),_:3})])),_:3})])),_:3})}]]),Ll=t.defineComponent({name:"ResetPassword",emits:["complete","error"],props:{token:{type:String,default:null}},data:()=>({password:"",confirmPassword:"",passwordVisible:!1,confirmPasswordError:!1,confirmPasswordHint:"",isSubmitting:!1,isComplete:!1}),computed:{canSubmit(){return this.password.length>=4&&this.confirmPassword.length>=4&&this.password===this.confirmPassword&&!this.confirmPasswordError}},methods:{validateConfirmPassword(){this.confirmPasswordError=!1,this.confirmPasswordHint="",this.confirmPassword&&this.password!==this.confirmPassword&&(this.confirmPasswordError=!0,this.confirmPasswordHint="Passwords do not match")},async handleSubmit(){if(this.validateConfirmPassword(),!this.canSubmit)return;const e=this.token||this.getTokenFromURL();if(!e)return zr({text:"No reset token provided. Please use the link from your email.",status:n.Status.error}),void this.$emit("error","No token");this.isSubmitting=!0;try{const t=await ko(e,this.password);t.ok?(this.isComplete=!0,zr({text:"Password reset successfully!",status:n.Status.ok})):(zr({text:t.error||"Failed to reset password",status:n.Status.error}),this.$emit("error",t.error))}catch(t){zr({text:"An unexpected error occurred",status:n.Status.error}),this.$emit("error","Unexpected error")}finally{this.isSubmitting=!1}},getTokenFromURL(){if("undefined"==typeof window)return null;return new URLSearchParams(window.location.search).get("token")}}}),Pl={key:1,class:"text-center"};const $l=vr(Ll,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-form"),h=t.resolveComponent("v-card-text"),p=t.resolveComponent("v-spacer"),m=t.resolveComponent("v-card-actions"),g=t.resolveComponent("v-card"),f=t.resolveComponent("v-col"),k=t.resolveComponent("v-row"),y=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(y,{class:"fill-height",fluid:""},{default:t.withCtx((()=>[t.createVNode(k,{align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(f,{cols:"12",sm:"8",md:"6"},{default:t.withCtx((()=>[t.createVNode(g,null,{default:t.withCtx((()=>[t.createVNode(i,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode(" Set New Password ")]))),_:1}),t.createVNode(h,{class:"pa-6"},{default:t.withCtx((()=>[e.isComplete?(t.openBlock(),t.createElementBlock("div",Pl,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-check-circle")]))),_:1}),n[9]||(n[9]=t.createElementVNode("h3",{class:"mb-2"},"Password Reset Successful!",-1)),n[10]||(n[10]=t.createElementVNode("p",null,"Your password has been updated. You can now log in with your new password.",-1))])):(t.openBlock(),t.createBlock(u,{key:0,onSubmit:t.withModifiers(e.handleSubmit,["prevent"])},{default:t.withCtx((()=>[n[7]||(n[7]=t.createElementVNode("p",{class:"mb-4"},"Enter your new password below.",-1)),t.createVNode(l,{modelValue:e.password,"onUpdate:modelValue":n[0]||(n[0]=t=>e.password=t),"prepend-icon":"mdi-lock",name:"password",label:"New password",min:"4","append-icon":e.passwordVisible?"mdi-eye-off":"mdi-eye",type:e.passwordVisible?"text":"password",disabled:e.isSubmitting,"onClick:append":n[1]||(n[1]=()=>e.passwordVisible=!e.passwordVisible)},null,8,["modelValue","append-icon","type","disabled"]),t.createVNode(l,{modelValue:e.confirmPassword,"onUpdate:modelValue":n[2]||(n[2]=t=>e.confirmPassword=t),"prepend-icon":"mdi-lock",name:"confirmPassword",label:"Confirm new password",min:"4",type:e.passwordVisible?"text":"password",error:e.confirmPasswordError,hint:e.confirmPasswordHint,disabled:e.isSubmitting,onBlur:e.validateConfirmPassword},null,8,["modelValue","type","error","hint","disabled","onBlur"]),t.createVNode(d,{type:"submit",color:"primary",class:"mt-4",loading:e.isSubmitting,disabled:!e.canSubmit,block:""},{default:t.withCtx((()=>[t.createVNode(c,{start:""},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-lock-reset")]))),_:1}),n[6]||(n[6]=t.createTextVNode(" Reset Password "))])),_:1},8,["loading","disabled"])])),_:1},8,["onSubmit"]))])),_:1}),e.isComplete?(t.openBlock(),t.createBlock(m,{key:0},{default:t.withCtx((()=>[t.createVNode(p),t.renderSlot(e.$slots,"success-action",{},(()=>[t.createVNode(d,{color:"primary",onClick:n[3]||(n[3]=t=>e.$emit("complete"))},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode(" Continue to Login ")]))),_:1})]))])),_:3})):t.createCommentVNode("",!0)])),_:3})])),_:3})])),_:3})])),_:3})}]]),Yl=t.defineComponent({name:"SkTagsInput",components:{VueTagsInput:s.VueTagsInput},props:{courseID:{type:String,required:!0,default:""},cardID:{type:String,required:!1,default:""},hideSubmit:{type:Boolean,required:!1,default:!1}},data:()=>({loading:!0,tag:"",tags:[],initialTags:[],availableCourseTags:[],separators:[";",","," "],courseDB:null}),computed:{autoCompleteSuggestions(){return this.availableCourseTags.filter((e=>-1!==e.name.toLowerCase().indexOf(this.tag.toLowerCase()))).map((e=>({text:e.name,data:{snippet:e.snippet}})))}},watch:{async cardID(){await this.getAppliedTags()},async courseID(){this.courseDB=r.getDataLayer().getCourseDB(this.courseID),await this.updateAvailableCourseTags()}},async created(){this.courseDB=r.getDataLayer().getCourseDB(this.courseID),await this.updateAvailableCourseTags(),await this.getAppliedTags()},methods:{tagsChanged(e){console.log(`[TagsInput] Tags changing: ${JSON.stringify(e)}`),this.tags=e},async getAppliedTags(){this.initialTags=[],this.tags=[];try{(await this.courseDB.getAppliedTags(this.cardID)).rows.forEach((e=>{console.log(`[TagsInput] The following tag is applied:\n\t${JSON.stringify(e)}`),this.tags.push({text:e.value.name,style:"",classes:""})})),this.initialTags=this.tags.map((e=>e.text))}catch(e){console.error(`Error in init-getAppliedTags: ${JSON.stringify(e)}, ${e}`)}finally{this.loading=!1}},async updateAvailableCourseTags(){try{this.availableCourseTags=(await this.courseDB.getCourseTagStubs()).rows.map((e=>e.doc))}catch(e){console.error(`Error in init-availableCourseTags: ${JSON.stringify(e)}`)}},async submit(){console.log("[TagsInput] tagsInput is submitting..."),this.loading=!0;try{await Promise.all(this.tags.map((async e=>{if(!this.initialTags.includes(e.text))try{await this.courseDB.addTagToCard(this.cardID,e.text),console.log(`[TagsInput] Successfully added tag: ${e.text}`)}catch(t){console.error(`Failed to add tag ${e.text}:`,t)}})))}catch(e){console.error(`Exception adding tags: ${JSON.stringify(e)}`)}try{await Promise.all(this.initialTags.map((async e=>{if(0===this.tags.filter((t=>t.text===e)).length)try{await this.courseDB.removeTagFromCard(this.cardID,e),console.log(`[TagsInput] Successfully removed tag: ${e}`)}catch(t){console.error(`Failed to remove tag ${e}:`,t)}})))}catch(e){console.error(`Exception removing tags: ${JSON.stringify(e)}`)}this.loading=!1}}}),zl={"data-cy":"tags-input"},Ul={class:"tag-name"},Fl={key:0,class:"tag-snippet"};const jl=vr(Yl,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("vue-tags-input"),l=t.resolveComponent("v-btn");return t.openBlock(),t.createElementBlock("div",zl,[t.createVNode(i,{modelValue:e.tag,"onUpdate:modelValue":n[0]||(n[0]=t=>e.tag=t),tags:e.tags,"autocomplete-items":e.autoCompleteSuggestions,separators:e.separators,"add-on-key":e.separators,onTagsChanged:e.tagsChanged},{"autocomplete-item":t.withCtx((e=>[t.createElementVNode("div",{class:t.normalizeClass(["autocomplete-item",{"is-active":e.selected}])},[t.createElementVNode("span",Ul,t.toDisplayString(e.item.text),1),e.item.data&&e.item.data.snippet?(t.openBlock(),t.createElementBlock("span",Fl," - "+t.toDisplayString(e.item.data.snippet),1)):t.createCommentVNode("",!0)],2)])),_:1},8,["modelValue","tags","autocomplete-items","separators","add-on-key","onTagsChanged"]),e.hideSubmit?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(l,{key:0,color:"success",loading:e.loading,onClick:e.submit},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("Save Changes")]))),_:1},8,["loading","onClick"]))])}],["__scopeId","data-v-f7373dc0"]]),Hl=t.defineComponent({name:"CourseCardBrowser",components:{CardLoader:Oa,TagsInput:jl,PaginatingToolbar:Wr},props:{courseId:{type:String,required:!0},tagId:{type:String,required:!1,default:""},viewLookupFunction:{type:Function,required:!0,default:()=>(console.warn("No viewLookupFunction provided to CourseCardBrowser"),null)},editMode:{type:String,required:!1,default:"full"}},data(){return{courseDB:null,page:1,pages:[],cards:[],cardData:{},cardPreview:{},cardElos:{},cardTags:{},internalEditMode:"none",delBtn:!1,updatePending:!0,userIsRegistered:!1,questionCount:0,tags:[],viewLookup:this.viewLookupFunction}},async created(){try{this.courseDB=r.getDataLayer().getCourseDB(this.courseId),this.tagId?this.questionCount=(await this.courseDB.getTag(this.tagId)).taggedCards.length:this.questionCount=(await this.courseDB.getCourseInfo()).cardCount;for(let e=1;25*(e-1)<this.questionCount;e++)this.pages.push(e);await this.populateTableData()}catch(e){console.error("Error initializing CourseCardBrowser:",e)}finally{this.updatePending=!1}},methods:{idQualify(e){return e.includes("-")?e:`${this.courseId}-${e}`},idToQualifiedObject(e){if(e.includes("-")){const t=e.split("-");return{courseID:t[0],cardID:t[1]}}return{courseID:this.courseId,cardID:e}},first(){this.page=1,this.populateTableData()},prev(){this.page--,this.populateTableData()},next(){this.page++,this.populateTableData()},last(){this.page=this.pages.length,this.populateTableData()},setPage(e){this.page=e,this.populateTableData()},async loadCardTags(e){try{await Promise.all(e.map((async e=>{const t=await this.courseDB.getAppliedTags(e);this.cardTags[e]=t.rows.map((e=>({name:e.value.name,snippet:e.value.snippet,count:e.value.count})))})))}catch(t){console.error("Error loading card tags:",t)}},clearSelections(e=""){this.cards.forEach((t=>{t.card.cardID!==e&&(t.isOpen=!1)})),this.internalEditMode="none",this.delBtn=!1},async deleteCard(e){console.log(`Deleting card ${e}`);const t=await this.courseDB.removeCard(e);t.ok?(this.cards=this.cards.filter((t=>t.card.cardID!=e)),this.clearSelections()):(console.error(`Failed to delete card:\n\n${JSON.stringify(t)}`),zr({text:"Failed to delete card",status:n.Status.error}))},async populateTableData(){if(this.updatePending=!0,this.tagId){const e=await this.courseDB.getTag(this.tagId);this.cards=e.taggedCards.map((e=>({card:{cardID:e,courseID:this.courseId},isOpen:!1,delBtn:!1})))}else this.cards=(await this.courseDB.getCardsByELO(0,25)).map((e=>({card:e,isOpen:!1,delBtn:!1})));const e=[],t=(await this.courseDB.getCourseDocs(this.cards.map((e=>e.card.cardID)),{include_docs:!0})).rows.filter((e=>!!e.doc||(console.error(`Card ${e.id}.doc not found.\ncard: ${JSON.stringify(e)}`),!1))).map((e=>e.doc));this.cards=this.cards.filter((t=>!e.includes(t.card.cardID))),t.forEach((e=>{e&&e.id_displayable_data&&(this.cardData[e._id]=e.id_displayable_data)}));try{await Promise.all(this.cards.map((async e=>{const r=e.card.cardID,o=t.find((e=>e._id==r));if(!o||!o.id_displayable_data)return void console.error(`No valid data found for card ${r}`);const a=this.viewLookupFunction(o.id_view||"default.question.BlanksCard.FillInView"),s=o.id_displayable_data.map((e=>this.courseDB.getCourseDoc(e,{attachments:!1,binary:!0}))),i=await Promise.all(s);await Promise.all(i.map((t=>{[].unshift(n.displayableDataToViewData(t)),this.cardPreview[e.card.cardID]=a.name?a.name:"Unknown"})))})));const e=this.cards.map((e=>e.card.cardID)),r=await this.courseDB.getCardEloData(e);e.forEach(((e,t)=>{this.cardElos[e]=r[t]})),await this.loadCardTags(e)}catch(r){console.error("Error populating table data:",r)}finally{this.updatePending=!1,this.$forceUpdate()}}}}),ql={key:0,class:"d-flex justify-center align-center pa-6"},Wl={key:1},Gl={key:0,class:"px-4 py-2 bg-blue-grey-lighten-5"},Zl={key:0,class:"mt-4"},Kl={class:"mt-4"},Ql={key:0,class:"ml-4"};const Jl=vr(Hl,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-progress-circular"),l=t.resolveComponent("paginating-toolbar"),c=t.resolveComponent("v-list-item-title"),d=t.resolveComponent("v-list-item-subtitle"),u=t.resolveComponent("v-btn"),h=t.resolveComponent("v-icon"),p=t.resolveComponent("v-speed-dial"),m=t.resolveComponent("v-list-item"),g=t.resolveComponent("card-loader"),f=t.resolveComponent("v-chip"),k=t.resolveComponent("v-chip-group"),y=t.resolveComponent("tags-input"),b=t.resolveComponent("v-list"),w=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(w,null,{default:t.withCtx((()=>[e.updatePending?(t.openBlock(),t.createElementBlock("div",ql,[t.createVNode(i,{indeterminate:"",color:"primary"})])):(t.openBlock(),t.createElementBlock("div",Wl,[t.createVNode(l,{title:"Exercises",page:e.page,pages:e.pages,subtitle:`(${e.questionCount})`,onFirst:e.first,onPrev:e.prev,onNext:e.next,onLast:e.last,onSetPage:n[0]||(n[0]=t=>e.setPage(t))},null,8,["page","pages","subtitle","onFirst","onPrev","onNext","onLast"]),t.createVNode(b,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cards,(r=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:r.card.cardID},[t.createVNode(m,{class:t.normalizeClass({"bg-blue-grey-lighten-5":r.isOpen,"elevation-4":r.isOpen}),density:"compact","data-cy":"course-card"},{prepend:t.withCtx((()=>[t.createElementVNode("div",null,[t.createVNode(c,{class:t.normalizeClass([{"text-blue-grey-darken-1":r.isOpen},"font-weight-medium"])},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.cardPreview[r.card.cardID]),1)])),_:2},1032,["class"]),t.createVNode(d,null,{default:t.withCtx((()=>[t.createTextVNode(" ELO: "+t.toDisplayString(e.cardElos[r.card.cardID]?.global?.score||"(unknown)"),1)])),_:2},1024)])])),append:t.withCtx((()=>[t.createVNode(p,{modelValue:r.isOpen,"onUpdate:modelValue":e=>r.isOpen=e,location:"left center",transition:"slide-x-transition",style:{display:"flex","flex-direction":"row-reverse"},persistent:""},{activator:t.withCtx((({props:n})=>[t.createVNode(u,t.mergeProps({ref_for:!0},n,{icon:r.isOpen?"mdi-close":"mdi-plus",size:"small",variant:"text",onClick:t=>e.clearSelections(r.card.cardID)}),null,16,["icon","onClick"])])),default:t.withCtx((()=>["full"===e.editMode?(t.openBlock(),t.createBlock(u,{key:"tags",icon:"",size:"small",variant:"tags"!==e.internalEditMode?"outlined":"elevated",color:"tags"===e.internalEditMode?"teal":"teal-darken-3",onClick:n[1]||(n[1]=t.withModifiers((t=>e.internalEditMode="tags"),["stop"]))},{default:t.withCtx((()=>[t.createVNode(h,null,{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-bookmark")]))),_:1})])),_:1},8,["variant","color"])):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(u,{key:"flag",icon:"",size:"small",variant:"flag"!==e.internalEditMode?"outlined":"elevated",color:"flag"===e.internalEditMode?"error":"error-darken-3",onClick:n[2]||(n[2]=t.withModifiers((t=>e.internalEditMode="flag"),["stop"]))},{default:t.withCtx((()=>[t.createVNode(h,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-flag")]))),_:1})])),_:1},8,["variant","color"])):t.createCommentVNode("",!0)])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:2},1032,["class"]),r.isOpen?(t.openBlock(),t.createElementBlock("div",Gl,[t.createVNode(g,{qualified_id:r.card,"view-lookup":e.viewLookup,class:"elevation-1"},null,8,["qualified_id","view-lookup"]),"readonly"===e.editMode&&e.cardTags[r.card.cardID]?(t.openBlock(),t.createElementBlock("div",Zl,[t.createVNode(k,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cardTags[r.card.cardID],(e=>(t.openBlock(),t.createBlock(f,{key:e.name,size:"small",color:"primary",variant:"outlined"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.name),1)])),_:2},1024)))),128))])),_:2},1024)])):t.createCommentVNode("",!0),t.withDirectives(t.createVNode(y,{"course-i-d":e.courseId,"card-i-d":r.card.cardID,class:"mt-4"},null,8,["course-i-d","card-i-d"]),[[t.vShow,"tags"===e.internalEditMode&&"full"===e.editMode]]),t.withDirectives(t.createElementVNode("div",Kl,[t.createVNode(u,{color:"error",variant:"outlined",onClick:e=>r.delBtn=!0},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode(" Delete this card ")]))),_:2},1032,["onClick"]),r.delBtn?(t.openBlock(),t.createElementBlock("span",Ql,[n[8]||(n[8]=t.createElementVNode("span",{class:"mr-2"},"Are you sure?",-1)),t.createVNode(u,{color:"error",variant:"elevated",onClick:t=>e.deleteCard(r.card.cardID)},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode(" Confirm ")]))),_:2},1032,["onClick"])])):t.createCommentVNode("",!0)],512),[[t.vShow,"flag"===e.internalEditMode&&"full"===e.editMode]])])):t.createCommentVNode("",!0)],64)))),128))])),_:1}),t.createVNode(l,{class:"elevation-0",page:e.page,pages:e.pages,onFirst:e.first,onPrev:e.prev,onNext:e.next,onLast:e.last,onSetPage:n[3]||(n[3]=t=>e.setPage(t))},null,8,["page","pages","onFirst","onPrev","onNext","onLast"])]))])),_:1})}],["__scopeId","data-v-5ecc9d21"]]),Xl=t.defineComponent({name:"CourseInformation",components:{CourseCardBrowser:Jl},props:{courseId:{type:String,required:!0},viewLookupFunction:{type:Function,required:!1,default:e=>(console.warn("No viewLookupFunction provided to CourseInformation"),null)},editMode:{type:String,required:!1,default:"full"}},data:()=>({courseDB:null,nameRules:[e=>!(e.length>30)||"Course name must be 30 characters or less"],updatePending:!0,courseConfig:{},userIsRegistered:!1,tags:[],user:null}),computed:{},async created(){this.courseDB=r.getDataLayer().getCourseDB(this.courseId),this.user=await pl();const e=await this.user.getCourseRegistrationsDoc();"admin"===this.user.getUsername()?this.userIsRegistered=!0:this.userIsRegistered=1===e.courses.filter((e=>e.courseID===this.courseId&&("active"===e.status||void 0===e.status))).length,this.courseConfig=await this.courseDB.getCourseConfig(),this.tags=(await this.courseDB.getCourseTagStubs()).rows.map((e=>e.doc)),this.updatePending=!1},methods:{async register(){n.log(`Registering for ${this.courseId}`);(await this.user.registerForCourse(this.courseId)).ok&&(this.userIsRegistered=!0)},async drop(){n.log(`Dropping course ${this.courseId}`);(await this.user.dropCourse(this.courseId)).ok&&(this.userIsRegistered=!1)}}}),ec={key:0},tc={class:"text-h4 mb-2"},nc={class:"text-body-2"},rc={key:0},oc={key:1};const ac=vr(Xl,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("v-btn"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-toolbar-title"),d=t.resolveComponent("v-toolbar-items"),u=t.resolveComponent("v-toolbar"),h=t.resolveComponent("v-chip"),p=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-card"),g=t.resolveComponent("course-card-browser");return e.updatePending?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",ec,[t.renderSlot(e.$slots,"header",{courseConfig:e.courseConfig,courseId:e.courseId},(()=>[t.createElementVNode("h1",tc,t.toDisplayString(e.courseConfig.name),1)]),!0),t.createElementVNode("p",nc,t.toDisplayString(e.courseConfig.description),1),t.renderSlot(e.$slots,"actions",{userIsRegistered:e.userIsRegistered,courseId:e.courseId,editMode:e.editMode,register:e.register,drop:e.drop},(()=>[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[e.userIsRegistered?(t.openBlock(),t.createElementBlock("div",rc,[t.createVNode(i,{color:"success",class:"me-2"},{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("Start a study session")]))),_:1}),"full"===e.editMode?(t.openBlock(),t.createBlock(i,{key:0,"data-cy":"add-content-btn",color:"indigo-lighten-1",class:"me-2"},{default:t.withCtx((()=>[t.createVNode(l,{start:""},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-plus")]))),_:1}),n[2]||(n[2]=t.createTextVNode(" Add content "))])),_:1})):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(i,{key:1,color:"green-darken-2",title:"Rank course content for difficulty",class:"me-2"},{default:t.withCtx((()=>[t.createVNode(l,{start:""},{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("mdi-format-list-numbered")]))),_:1}),n[4]||(n[4]=t.createTextVNode(" Arrange "))])),_:1})):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(i,{key:2,color:"error",size:"small",variant:"outlined",onClick:e.drop},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode(" Drop this course ")]))),_:1},8,["onClick"])):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",oc,[t.createVNode(i,{"data-cy":"register-btn",color:"primary",class:"me-2",onClick:e.register},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Register")]))),_:1},8,["onClick"]),t.createVNode(i,{variant:"outlined",color:"primary",class:"me-2"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("Start a trial study session")]))),_:1})]))])),_:1})]),!0),t.renderSlot(e.$slots,"additional-content",{},void 0,!0),t.createVNode(m,{class:"my-2"},{default:t.withCtx((()=>[t.createVNode(u,{density:"compact"},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("Tags")]))),_:1}),t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(i,{variant:"text"},{default:t.withCtx((()=>[t.createTextVNode("("+t.toDisplayString(e.tags.length)+")",1)])),_:1})])),_:1})])),_:1}),t.createVNode(p,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.tags,((n,r)=>(t.openBlock(),t.createElementBlock("span",{key:r},[t.renderSlot(e.$slots,"tag-link",{tag:n,courseId:e.courseId},(()=>[t.createVNode(h,{variant:"tonal",class:"me-2 mb-2"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n.name),1)])),_:2},1024)]),!0)])))),128))])),_:3})])),_:3}),t.createVNode(g,{class:"my-3","course-id":e.courseId,"view-lookup-function":e.viewLookupFunction,"edit-mode":e.editMode},null,8,["course-id","view-lookup-function","edit-mode"])]))}],["__scopeId","data-v-689a95c9"]]),sc=t.defineComponent({name:"CardBrowser",components:{CardViewer:bo},props:{views:{type:Array,required:!0},data:{type:Array,required:!0},suppressSpinner:{type:Boolean,default:!1}},data:()=>({viewIndex:0,previewMode:ba()}),computed:{spinner(){return this.views.length>1}},created(){console.log("[CardBrowser] Card browser created. Cards now in 'prewviewMode'"),this.previewMode.setPreviewMode(!0)},unmounted(){console.log("[CardBrowser] Card browser unmounted. Cards no longer in 'prewviewMode'"),this.previewMode.setPreviewMode(!1)},methods:{incrementView(){this.viewIndex++,this.viewIndex=(this.viewIndex+this.views.length)%this.views.length},decrementView(){this.viewIndex--,this.viewIndex=(this.viewIndex+this.views.length)%this.views.length}}}),ic={key:0,class:"text-subtitle-1 pa-2"};const lc=vr(sc,[["render",function(e,n,r,o,a,s){const i=t.resolveComponent("CardViewer"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-btn"),d=t.resolveComponent("v-row");return t.openBlock(),t.createBlock(d,{column:"",align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(i,{view:e.views[e.viewIndex],data:e.data,course_id:"[browsing]",card_id:"[browsing]"},null,8,["view","data"]),n[2]||(n[2]=t.createElementVNode("br",null,null,-1)),n[3]||(n[3]=t.createElementVNode("br",null,null,-1)),e.suppressSpinner?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",ic,[e.spinner?(t.openBlock(),t.createBlock(c,{key:0,icon:"",variant:"outlined",color:"primary",onClick:e.decrementView},{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-chevron-left")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0),t.createTextVNode(" "+t.toDisplayString(e.views[e.viewIndex].name)+" ",1),e.spinner?(t.openBlock(),t.createBlock(c,{key:1,icon:"",variant:"outlined",color:"primary",onClick:e.incrementView},{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-chevron-right")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0)]))])),_:1})}]]);e.AudioAutoPlayer=Zs,e.CardBrowser=lc,e.CardHistoryViewer=co,e.CardLoader=Oa,e.CardSearch=Kr,e.CardSearchResults=no,e.CardViewer=bo,e.CodeBlockRenderer=Ri,e.CourseCardBrowser=Jl,e.CourseInformation=ac,e.Displayable=Displayable,e.FillInInput=Aa,e.HeatMap=Sr,e.MarkdownRenderer=ul,e.MdTokenRenderer=dl,e.MultipleChoiceOption=va,e.PaginatingToolbar=Wr,e.Question=class Question extends Displayable{displayedSkill(e,t){console.warn("Question is running the reference implementation of displayedSkill.\n Consider overriding!");const n=5e3,r=Math.min(t,5e4),o=r/n,a=r>n?Math.pow(.8,o):1;let s=this.isCorrect(e)?1:0;return s*=a,Math.min(s,1)}evaluate(e,t){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e,t)}}},e.RadioMultipleChoice=Ca,e.RequestPasswordReset=Sl,e.ResetPassword=$l,e.SessionControllerDebug=sa,e.SkMouseTrap=Lr,e.SkMouseTrapToolTip=Pr,e.SkldrMouseTrap=Ir,e.SnackbarService=jr,e.StudySession=ga,e.StudySessionTimer=yo,e.TFSelect=Ea,e.TagsInput=jl,e.UserChip=kl,e.UserInputNumber=Ta,e.UserInputString=Ra,e.UserLogin=wl,e.UserLoginAndRegistrationContainer=Ml,e.UserRegistration=xl,e.VerifyEmail=Ol,e.alertUser=zr,e.containsComponent=qs,e.getCurrentUser=pl,e.getUserStatus=go,e.isComponent=Ws,e.isDefineComponent=function(e){return void 0!==e.__isFragment},e.isInlineComponent=function(e){if(e.length>1e4)return!1;const t=e.trim();return/^<[\w-]+(?:\s+[\w-]+="[^"]*")*\s*\/?>$/.test(t)},e.isPasswordValid=function(e){return""===vl(e)},e.isQuestionView=uo,e.parseComponentSyntax=Gs,e.parseComponentToken=function(e){return Gs("text"in e?e.text:"raw"in e?e.raw:"")},e.piniaPlugin=ya,e.requestPasswordReset=fo,e.resetPassword=ko,e.sendVerificationEmail=po,e.splitByDelimiters=Fs,e.splitParagraphToken=Hs,e.splitTextToken=js,e.useAuthStore=ml,e.useCardPreviewModeStore=ba,e.useConfigStore=gl,e.useEntitlements=function(e){const n=t.ref({}),r=t.ref(!1),o=t.ref(null),a=t.computed((()=>{const t=n.value[e];if(!t)return{isActive:!1,isPaid:!1,daysRemaining:null,expiresDate:null};if("paid"===t.status)return{isActive:!0,isPaid:!0,daysRemaining:null,expiresDate:null};const r=t.expires;if(!r)return{isActive:!0,isPaid:!1,daysRemaining:null,expiresDate:null};const o=new Date(r),a=new Date,s=Math.ceil((o.getTime()-a.getTime())/864e5);return{isActive:s>0,isPaid:!1,daysRemaining:Math.max(0,s),expiresDate:r}})),s=t.computed((()=>a.value.isPaid));return{entitlements:n,trialStatus:a,hasPremiumAccess:s,loading:r,error:o,fetchEntitlements:async function(){r.value=!0,o.value=null;try{const e=await go();e.ok?n.value=e.entitlements||{}:(o.value=e.error||"Failed to fetch entitlements",console.error("[useEntitlements] Error:",o.value))}catch(e){o.value=e instanceof Error?e.message:"Unknown error",console.error("[useEntitlements] Exception:",e)}finally{r.value=!1}}}},e.useQuestionView=function(e){const n=t.ref(0),r=t.ref(0),o=t.ref([]),a=t.ref(3),s=t.ref(2),i=t.ref();return{priorSessionViews:n,priorAttempts:r,priorAnswers:o,maxAttemptsPerView:a,maxSessionViews:s,question:i,submitAnswer:(t,n)=>{if(e.logger.log("submitAnswer called..."),!i.value)throw new Error("Question not initialized");o.value.push([t,n??""]);const a=i.value.evaluate(t,e.timeSpent.value);e.logger.log(`evaluation of answer ${t}:`,a);const s={...a,priorAttemps:r.value,courseID:"",cardID:"",timeSpent:e.timeSpent.value,timeStamp:e.startTime.value,userAnswer:t};return a.isCorrect||r.value++,e.emitResponse(s),s}}},e.useViewable=function(e,n,r){const o=t.ref(h.utc()),a=t.ref([]),s={log:(e,...t)=>console.log(`[${r}]: `,e,...t),error:(e,...t)=>console.error(`[${r}]: `,e,...t),warn:(e,...t)=>console.warn(`[${r}]: `,e,...t)},i=t.computed((()=>Math.abs(h.utc().diff(o.value,"milliseconds"))));return{startTime:o,hotKeys:a,timeSpent:i,logger:s,getURL:(t,n=0)=>{try{if(e.data[n]?.[t])return URL.createObjectURL(e.data[n][t])}catch(r){s.error("Error creating URL for item:",t,r)}return""},emitResponse:e=>{n("emitResponse",e)}}},e.validatePassword=vl,e.verifyEmail=mo,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("moment"),require("@vue-skuilder/common"),require("@vue-skuilder/db"),require("pinia"),require("vue-router"),require("@vojtechlanka/vue-tags-input")):"function"==typeof define&&define.amd?define(["exports","vue","moment","@vue-skuilder/common","@vue-skuilder/db","pinia","vue-router","@vojtechlanka/vue-tags-input"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VueSkuilderCommonUI={},e.Vue,e.moment,e.VueSkuilderCommon,e.VueSkuilderDb,e.Pinia,e.VueRouter,e.VueTagsInput)}(this,(function(e,t,n,o,r,a,i,s){"use strict";var l=Object.defineProperty,c=(e,t,n)=>((e,t,n)=>t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),d=document.createElement("style");d.textContent=".tooltip[data-v-ca46239a]{background-color:#000c;color:#fff;padding:5px;border-radius:3px;font-size:12px}.sk-mousetrap-tooltip-wrapper[data-v-5d6fb09c]{display:inline-block;position:relative}.sk-mousetrap-tooltip[data-v-5d6fb09c]{position:absolute;background-color:#000c;color:#fff;padding:2px 6px;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:9999}.sk-mt-tooltip-top[data-v-5d6fb09c]{bottom:100%;margin-bottom:5px;left:50%;transform:translate(-50%)}.sk-mt-tooltip-bottom[data-v-5d6fb09c]{top:100%;margin-top:5px;left:50%;transform:translate(-50%)}.sk-mt-tooltip-left[data-v-5d6fb09c]{right:100%;margin-right:5px;top:50%;transform:translateY(-50%)}.sk-mt-tooltip-right[data-v-5d6fb09c]{left:100%;margin-left:5px;top:50%;transform:translateY(-50%)}.sk-mousetrap-highlight-glow[data-v-5d6fb09c]{box-shadow:0 0 8px 2px #1976d299;transition:box-shadow .25s ease}.sk-mousetrap-highlight-scale[data-v-5d6fb09c]{transform:scale(1.03);transition:transform .25s ease}.sk-mousetrap-highlight-border[data-v-5d6fb09c]{outline:2px solid rgba(25,118,210,.8);outline-offset:2px;border-radius:4px;transition:outline .25s ease,outline-offset .25s ease}.fade-enter-active[data-v-5d6fb09c],.fade-leave-active[data-v-5d6fb09c]{transition:opacity .25s ease}.fade-enter-from[data-v-5d6fb09c],.fade-leave-to[data-v-5d6fb09c]{opacity:0}.pageSelect[data-v-a75fea7e]{max-width:60px}.selected-card[data-v-285e13bd]{background-color:#e0f2f7;border-left:4px solid #2196f3}.cursor-pointer[data-v-285e13bd]{cursor:pointer}.error-message[data-v-a4bdfdfb]{color:#f44336;padding:16px;background-color:#ffebee;border-radius:4px;margin:8px 0}.negative-interval[data-v-a4bdfdfb]{color:#f44336;font-weight:700;background-color:#ffebee;padding:2px 4px;border-radius:3px}.invalid-timestamp[data-v-a4bdfdfb]{color:#f44336;font-weight:700}.card-history-viewer[data-v-a4bdfdfb]{margin:16px 0}.timer-container[data-v-5960940a]{display:inline-flex;cursor:pointer}.cardView[data-v-318fb94f]{padding:15px;border-radius:8px}.session-debug[data-v-1a6ac7a1]{font-family:Courier New,monospace;font-size:.75rem;max-height:400px;overflow-y:auto}.debug-section[data-v-1a6ac7a1]{padding:8px;background-color:#ffffff0d;border-radius:4px;min-height:120px}.debug-header[data-v-1a6ac7a1]{display:flex;align-items:center;margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.1)}.debug-stats[data-v-1a6ac7a1]{margin-bottom:8px;display:flex;gap:8px}.debug-items[data-v-1a6ac7a1]{margin-top:4px;padding-left:8px}.debug-item[data-v-1a6ac7a1]{border-left:2px solid rgba(255,255,255,.2);padding:2px 0 2px 6px;margin-bottom:2px}.footer-controls[data-v-dc537be7]{position:fixed;bottom:0;background-color:var(--v-background);z-index:100}.footer-right[data-v-dc537be7]{position:fixed;bottom:0;right:0;background-color:var(--v-background);z-index:100}.correct[data-v-dc537be7]{animation:varFade-dc537be7 1.25s ease-out}.incorrect[data-v-dc537be7]{animation:purpleFade-dc537be7 1.25s ease-out}a[data-v-dc537be7]{text-decoration:underline}.component-fade-enter-active[data-v-dc537be7],.component-fade-leave-active[data-v-dc537be7]{transition:opacity .2s ease}.component-fade-enter-from[data-v-dc537be7],.component-fade-leave-to[data-v-dc537be7]{opacity:0}@keyframes varFade-dc537be7{0%{box-shadow:rgba(var(--r),var(--g),0,.25) 0 7px 8px -4px,rgba(var(--r),var(--g),0,.25) 0 12px 17px 2px,rgba(var(--r),var(--g),0,.25) 0 5px 22px 4px}to{box-shadow:#00960000 0 0}}@keyframes greenFade-dc537be7{0%{box-shadow:#00960040 0 7px 8px -4px,#00960040 0 12px 17px 2px,#00960040 0 5px 22px 4px}to{box-shadow:#00960000 0 0}}@keyframes purpleFade-dc537be7{0%{box-shadow:#73004b40 0 7px 8px -4px,#73004b40 0 12px 17px 2px,#73004b40 0 5px 22px 4px}to{box-shadow:#73004b00 0 0}}.choice[data-v-96de7172]{text-align:center;display:inline-block;border-radius:4px;padding:5px 15px;margin:10px;min-width:75px;transition:all .2s ease-in-out}.selected[data-v-96de7172]{transform:translateY(-10px) scale(1.15);z-index:1}.not-selected[data-v-96de7172]{z-index:0}.userInput[data-v-a56dcd1c]{border:none;text-align:center;border-bottom:1px black}.user-input-container[data-v-aa14961f]{display:inline-block;min-width:6em;vertical-align:baseline}.user-input-string[data-v-aa14961f]{display:inline-block;background:transparent;border:none;border-bottom:1px solid currentColor;color:currentColor;font-family:inherit;font-size:inherit;line-height:inherit;padding:0;margin:0;text-align:center;width:100%;outline:none}.user-input-string[data-v-aa14961f]:focus{border-bottom:2px solid currentColor}#input[data-v-486ac035]{display:inline-block;min-width:4em;text-align:center}.underline[data-v-486ac035]{text-decoration:underline;text-decoration-style:solid 14px}.cardView[data-v-93f758b5]{padding:15px;border-radius:8px}.component-fade-enter-active[data-v-93f758b5],.component-fade-leave-active[data-v-93f758b5]{transition:opacity .3s ease}.component-fade-enter[data-v-93f758b5],.component-fade-leave-to[data-v-93f758b5]{opacity:0}.playing[data-v-e1a0f62c]{animation:.85s ease-in-out infinite alternate pulse-e1a0f62c;z-index:1}@keyframes pulse-e1a0f62c{0%{transform:scale(1)}to{transform:scale(1.15)}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.code-block-wrapper{margin:1rem 0;border-radius:4px;background-color:#f6f8fa;overflow:auto;position:relative}.language-indicator{position:absolute;top:8px;right:10px;padding:2px 8px;font-size:.75rem;color:#666;background-color:#ffffffb3;border-radius:4px;z-index:1;font-family:monospace;text-transform:lowercase}blockquote[data-v-de3eebd6]{border-left:3px teal solid;padding-left:8px}.codespan[data-v-de3eebd6]{padding-left:3px;padding-right:3px;margin-left:1px;margin-right:1px}p[data-v-de3eebd6]{margin-bottom:15px;margin-top:15px}.component-fade-enter-active[data-v-9a38a213],.component-fade-leave-active[data-v-9a38a213]{transition:opacity .5s ease}.component-fade-enter[data-v-9a38a213],.component-fade-leave-to[data-v-9a38a213]{opacity:0}.login[data-v-563b0048]{max-width:650px}.component-fade-enter-active[data-v-5a55bdf0],.component-fade-leave-active[data-v-5a55bdf0]{transition:opacity .5s ease}.component-fade-enter[data-v-5a55bdf0],.component-fade-leave-to[data-v-5a55bdf0]{opacity:0}.vue-tags-input[data-v-f7373dc0]{max-width:100%}.autocomplete-item[data-v-f7373dc0]{display:flex;align-items:center;padding:5px}.autocomplete-item.is-active[data-v-f7373dc0]{background-color:#e8e8e8}.autocomplete-item.is-active>.tag-name[data-v-f7373dc0]{background-color:#5c6bc0;color:#fff}.tag-name[data-v-f7373dc0]{background-color:#e0e0e0;color:#333;padding:2px 6px;border-radius:3px;font-weight:700;margin-right:5px}.tag-snippet[data-v-f7373dc0]{color:#666;font-size:.9em}.autocomplete-item.is-active .tag-snippet[data-v-f7373dc0]{color:#333}.component-fade-enter-active[data-v-5ecc9d21],.component-fade-leave-active[data-v-5ecc9d21]{transition:opacity .5s ease}.component-fade-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{opacity:0}.component-scale-enter-active[data-v-5ecc9d21],.component-scale-leave-active[data-v-5ecc9d21]{max-height:auto;transform:scale(1);transform-origin:top;transition:transform .3s ease,max-height .3s ease}.component-scale-enter[data-v-5ecc9d21],.component-fade-leave-to[data-v-5ecc9d21]{max-height:0px;transform:scaleY(0);overflow:hidden}.component-fade-enter-active[data-v-38e9efe1],.component-fade-leave-active[data-v-38e9efe1]{transition:opacity .5s ease}.component-fade-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{opacity:0}.component-scale-enter-active[data-v-38e9efe1],.component-scale-leave-active[data-v-38e9efe1]{max-height:auto;transform:scale(1);transform-origin:top;transition:transform .3s ease,max-height .3s ease}.component-scale-enter[data-v-38e9efe1],.component-fade-leave-to[data-v-38e9efe1]{max-height:0px;transform:scaleY(0);overflow:hidden}.course-tag-filter-widget[data-v-e1ba963b]{width:100%}.filter-summary[data-v-e1ba963b]{color:rgba(var(--v-theme-on-surface),.7)}\n/*$vite$:1*/",document.head.appendChild(d);const u=t.defineComponent({name:"HeatMap",props:{activityRecords:{type:Array,default:()=>[]},activityRecordsGetter:{type:Function,default:null},inactiveColor:{type:Object,default:()=>({h:0,s:0,l:.9})},activeColor:{type:Object,default:()=>({h:155,s:1,l:.5})},cellSize:{type:Number,default:12},cellMargin:{type:Number,default:3},enableSeasonalColors:{type:Boolean,default:!0}},data:()=>({isLoading:!1,localActivityRecords:[],heatmapData:{},weeks:[],tooltipData:null,tooltipStyle:{},maxInRange:0}),computed:{width(){return 53*(this.cellSize+this.cellMargin)},height(){return 7*(this.cellSize+this.cellMargin)},effectiveActivityRecords(){const e=Array.isArray(this.localActivityRecords)&&this.localActivityRecords.length>0,t=e?this.localActivityRecords:this.activityRecords||[];return console.log("Using effectiveActivityRecords, count:",t.length,"source:",e?"local":"prop"),t}},watch:{activityRecords:{handler(){this.processRecords(),this.createWeeksData()},immediate:!0}},async created(){if(this.activityRecordsGetter)try{this.isLoading=!0,console.log("Fetching activity records using getter...");let e=await this.activityRecordsGetter();Array.isArray(e)?(this.localActivityRecords=e.filter((e=>{if(!e||!e.timeStamp)return!1;try{const t=n(e.timeStamp);return t.isValid()&&t.year()>2e3&&t.year()<2100}catch(t){return!1}})),console.log(`Received ${e.length} records, ${this.localActivityRecords.length} valid after filtering`),this.processRecords(),this.createWeeksData()):(console.error("Activity records getter did not return an array:",e),this.localActivityRecords=[])}catch(e){console.error("Error fetching activity records:",e),this.localActivityRecords=[]}finally{this.isLoading=!1}else console.log("No activityRecordsGetter provided, using direct activityRecords prop")},methods:{toDateString(e){const t=n(e);return n.months()[t.month()]+" "+t.date()},processRecords(){const e=this.effectiveActivityRecords||[];console.log(`Processing ${e.length} records`);const t={};if(0===e.length)return console.log("No records to process"),void(this.heatmapData=t);const o=new Set,r={};let a=0,i=0;for(let l=0;l<e.length;l++){const c=e[l];if(c&&"object"==typeof c&&c.timeStamp)try{let e;if("string"==typeof c.timeStamp)e=n(c.timeStamp).format("YYYY-MM-DD");else if("number"==typeof c.timeStamp)e=n(new Date(c.timeStamp)).format("YYYY-MM-DD");else{if("object"!=typeof c.timeStamp){i++;continue}e="function"==typeof c.timeStamp.format?c.timeStamp.format("YYYY-MM-DD"):c.timeStamp instanceof Date?n(c.timeStamp).format("YYYY-MM-DD"):n(String(c.timeStamp)).format("YYYY-MM-DD")}if(n(e,"YYYY-MM-DD",!0).isValid()){t[e]=(t[e]||0)+1,o.add(e);const n=e.substring(0,7);r[n]=(r[n]||0)+1,a++}else i++}catch(s){i++}else i++}console.log(`Processed ${a} valid dates, ${i} invalid dates`),console.log(`Found ${o.size} unique dates`),console.log("Date distribution by month:",r),this.heatmapData=t},createWeeksData(){this.weeks=[],this.maxInRange=0;const e=n(),t=e.clone().subtract(52,"weeks"),o=t.clone().startOf("week");console.log("Creating weeks data from",t.format("YYYY-MM-DD"),"to",e.format("YYYY-MM-DD")),0===Object.keys(this.heatmapData).length&&console.log("No heatmap data available to display");const r=Object.keys(this.heatmapData).slice(0,5);for(console.log("Sample dates in heatmap data:",r);o.isSameOrBefore(e);){const e=[];for(let t=0;t<7;t++){const t=o.format("YYYY-MM-DD"),n={date:t,count:this.heatmapData[t]||0};e.push(n),n.count>this.maxInRange&&(this.maxInRange=n.count),o.add(1,"day")}this.weeks.push(e)}console.log("Weeks data created, maxInRange:",this.maxInRange);let a=0,i=0;Object.values(this.heatmapData).forEach((e=>{a++,i+=e})),console.log(`Activity summary: ${i} activities across ${a} days`)},getColor(e){if(0===this.maxInRange)return this.hslToString(this.inactiveColor);const t=0===e?0:Math.min(2*e/this.maxInRange,1);let o=this.activeColor;if(this.enableSeasonalColors){const e=n();11===e.month()&&e.date()>=5?o=Math.random()>.5?{h:350,s:.8,l:.5}:{h:135,s:.8,l:.4}:9===e.month()&&e.date()>=25&&(o=Math.random()>.5?{h:0,s:0,l:0}:Math.random()>.5?{h:30,s:1,l:.5}:{h:270,s:1,l:.5})}const r=o.h,a=this.interpolate(this.inactiveColor.s,o.s,t),i=this.interpolate(this.inactiveColor.l,o.l,t);return this.hslToString({h:r,s:a,l:i})},interpolate:(e,t,n)=>e+(t-e)*n,hslToString:e=>`hsl(${e.h}, ${100*e.s}%, ${100*e.l}%)`,showTooltip(e,t){this.tooltipData=e,this.tooltipStyle={position:"absolute",left:`${t.pageX+10}px`,top:`${t.pageY+10}px`}},hideTooltip(){this.tooltipData=null}}}),p=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},h=["width","height"],m=["transform"],g=["y","width","height","fill","onMouseover"];const f=p(u,[["render",function(e,n,o,r,a,i){return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(),t.createElementBlock("svg",{width:e.width,height:e.height},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.weeks,((o,r)=>(t.openBlock(),t.createElementBlock("g",{key:r,transform:`translate(${r*(e.cellSize+e.cellMargin)}, 0)`},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(o,((o,r)=>(t.openBlock(),t.createElementBlock("rect",{key:o.date,x:0,y:r*(e.cellSize+e.cellMargin),width:e.cellSize,height:e.cellSize,fill:e.getColor(o.count),onMouseover:t=>e.showTooltip(o,t),onMouseout:n[0]||(n[0]=(...t)=>e.hideTooltip&&e.hideTooltip(...t))},null,40,g)))),128))],8,m)))),128))],8,h)),e.tooltipData?(t.openBlock(),t.createElementBlock("div",{key:0,class:"tooltip",style:t.normalizeStyle(e.tooltipStyle)},t.toDisplayString(e.tooltipData.count)+" review"+t.toDisplayString(1!==e.tooltipData.count?"s":"")+" on "+t.toDisplayString(e.toDateString(e.tooltipData.date)),5)):t.createCommentVNode("",!0)])}],["__scopeId","data-v-ca46239a"]]);function k(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var b,y={exports:{}};var v,w=(b||(b=1,v=y,function(e,t){if(e){for(var n,o={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},r={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},a={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},i={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},s=1;s<20;++s)o[111+s]="f"+s;for(s=0;s<=9;++s)o[s+96]=s.toString();m.prototype.bind=function(e,t,n){var o=this;return e=e instanceof Array?e:[e],o._bindMultiple.call(o,e,t,n),o},m.prototype.unbind=function(e,t){return this.bind.call(this,e,(function(){}),t)},m.prototype.trigger=function(e,t){var n=this;return n._directMap[e+":"+t]&&n._directMap[e+":"+t]({},e),n},m.prototype.reset=function(){var e=this;return e._callbacks={},e._directMap={},e},m.prototype.stopCallback=function(e,t){if((" "+t.className+" ").indexOf(" mousetrap ")>-1)return!1;if(h(t,this.target))return!1;if("composedPath"in e&&"function"==typeof e.composedPath){var n=e.composedPath()[0];n!==e.target&&(t=n)}return"INPUT"==t.tagName||"SELECT"==t.tagName||"TEXTAREA"==t.tagName||t.isContentEditable},m.prototype.handleKey=function(){return this._handleKey.apply(this,arguments)},m.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(o[t]=e[t]);n=null},m.init=function(){var e=m(t);for(var n in e)"_"!==n.charAt(0)&&(m[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n))},m.init(),e.Mousetrap=m,v.exports&&(v.exports=m)}function l(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function c(e){if("keypress"==e.type){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return o[e.which]?o[e.which]:r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}function d(e){return"shift"==e||"ctrl"==e||"alt"==e||"meta"==e}function u(e,t,r){return r||(r=function(){if(!n)for(var e in n={},o)e>95&&e<112||o.hasOwnProperty(e)&&(n[o[e]]=e);return n}()[e]?"keydown":"keypress"),"keypress"==r&&t.length&&(r="keydown"),r}function p(e,t){var n,o,r,s=[];for(n=function(e){return"+"===e?["+"]:(e=e.replace(/\+{2}/g,"+plus")).split("+")}(e),r=0;r<n.length;++r)o=n[r],i[o]&&(o=i[o]),t&&"keypress"!=t&&a[o]&&(o=a[o],s.push("shift")),d(o)&&s.push(o);return{key:o,modifiers:s,action:t=u(o,s,t)}}function h(e,n){return null!==e&&e!==t&&(e===n||h(e.parentNode,n))}function m(e){var n=this;if(e=e||t,!(n instanceof m))return new m(e);n.target=e,n._callbacks={},n._directMap={};var o,r={},a=!1,i=!1,s=!1;function u(e){e=e||{};var t,n=!1;for(t in r)e[t]?n=!0:r[t]=0;n||(s=!1)}function h(e,t,o,a,i,s){var l,c,u,p,h=[],m=o.type;if(!n._callbacks[e])return[];for("keyup"==m&&d(e)&&(t=[e]),l=0;l<n._callbacks[e].length;++l)if(c=n._callbacks[e][l],(a||!c.seq||r[c.seq]==c.level)&&m==c.action&&("keypress"==m&&!o.metaKey&&!o.ctrlKey||(u=t,p=c.modifiers,u.sort().join(",")===p.sort().join(",")))){var g=!a&&c.combo==i,f=a&&c.seq==a&&c.level==s;(g||f)&&n._callbacks[e].splice(l,1),h.push(c)}return h}function g(e,t,o,r){n.stopCallback(t,t.target||t.srcElement,o,r)||!1===e(t,o)&&(function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}(t),function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}(t))}function f(e){"number"!=typeof e.which&&(e.which=e.keyCode);var t=c(e);t&&("keyup"!=e.type||a!==t?n.handleKey(t,function(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}(e),e):a=!1)}function k(e,t,n,i){function l(t){return function(){s=t,++r[e],clearTimeout(o),o=setTimeout(u,1e3)}}function d(t){g(n,t,e),"keyup"!==i&&(a=c(t)),setTimeout(u,10)}r[e]=0;for(var h=0;h<t.length;++h){var m=h+1===t.length?d:l(i||p(t[h+1]).action);b(t[h],m,i,e,h)}}function b(e,t,o,r,a){n._directMap[e+":"+o]=t;var i,s=(e=e.replace(/\s+/g," ")).split(" ");s.length>1?k(e,s,t,o):(i=p(e,o),n._callbacks[i.key]=n._callbacks[i.key]||[],h(i.key,i.modifiers,{type:i.action},r,e,a),n._callbacks[i.key][r?"unshift":"push"]({callback:t,modifiers:i.modifiers,action:i.action,seq:r,level:a,combo:e}))}n._handleKey=function(e,t,n){var o,r=h(e,t,n),a={},l=0,c=!1;for(o=0;o<r.length;++o)r[o].seq&&(l=Math.max(l,r[o].level));for(o=0;o<r.length;++o)if(r[o].seq){if(r[o].level!=l)continue;c=!0,a[r[o].seq]=1,g(r[o].callback,n,r[o].combo,r[o].seq)}else c||g(r[o].callback,n,r[o].combo);var p="keypress"==n.type&&i;n.type!=s||d(e)||p||u(a),i=c&&"keydown"==n.type},n._bindMultiple=function(e,t,n){for(var o=0;o<e.length;++o)b(e[o],t,n)},l(e,"keypress",f),l(e,"keydown",f),l(e,"keyup",f)}}("undefined"!=typeof window?window:null,"undefined"!=typeof window?document:null)),y.exports);const x=k(w);var C;C||(C=1,function(e){if(e){var t={},n=e.prototype.stopCallback;e.prototype.stopCallback=function(e,o,r,a){return!!this.paused||!t[r]&&!t[a]&&n.call(this,e,o,r)},e.prototype.bindGlobal=function(e,n,o){if(this.bind(e,n,o),e instanceof Array)for(var r=0;r<e.length;r++)t[e[r]]=!0;else t[e]=!0},e.init()}}("undefined"!=typeof Mousetrap?Mousetrap:void 0));const S=class _SkldrMouseTrap{constructor(){c(this,"mouseTrap"),c(this,"hotkeys"),this.mouseTrap=new x,this.hotkeys=[]}static get commands(){return _SkldrMouseTrap.instance().hotkeys.map((e=>({command:e.command,hotkey:e.hotkey})))}static addBinding(e){const t=Array.isArray(e)?e:[e],n=_SkldrMouseTrap.instance();n.hotkeys=[...n.hotkeys,...t],t.forEach((e=>{x.bindGlobal(e.hotkey,((t,n)=>{!function(){const e=document.activeElement;return(!(e instanceof HTMLInputElement)||"checkbox"!==e.type&&"radio"!==e.type)&&e instanceof HTMLElement&&("INPUT"===e.tagName||"TEXTAREA"===e.tagName||"SELECT"===e.tagName||e.isContentEditable)}()?e.callback(t,n):console.log(`Ignoring hotkey ${e.hotkey} while input element is focused`)}))}))}static removeBinding(e){const t=_SkldrMouseTrap.instance(),n=[...t.hotkeys];Array.isArray(e)&&!e.every((e=>"string"==typeof e||"number"==typeof e))?e.forEach((e=>{t.hotkeys=t.hotkeys.filter((t=>JSON.stringify(t.hotkey)!==JSON.stringify(e))),x.unbind(e)})):(t.hotkeys=n.filter((t=>JSON.stringify(t.hotkey)!==JSON.stringify(e))),x.unbind(e))}static reset(){console.warn("SkldrMouseTrap.reset() may affect hotkeys registered by other components. Consider using removeBinding() with specific hotkeys for better component isolation."),x.reset(),_SkldrMouseTrap.instance().mouseTrap.reset(),_SkldrMouseTrap.instance().hotkeys=[]}static instance(){return _SkldrMouseTrap._instance||(_SkldrMouseTrap._instance=new _SkldrMouseTrap),_SkldrMouseTrap._instance}};c(S,"_instance");let _=S;const N=t.defineComponent({name:"SkMouseTrap",props:{refreshInterval:{type:Number,default:500}},data:()=>({commands:[],display:!1,intervalId:null}),created(){this.intervalId=window.setInterval(this.refreshState,this.refreshInterval)},beforeUnmount(){null!==this.intervalId&&clearInterval(this.intervalId)},methods:{refreshState(){this.commands=_.commands,this.display=this.commands.length>0}}}),E={class:"text-caption ml-2"};const B=p(N,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-toolbar-title"),d=t.resolveComponent("v-toolbar"),u=t.resolveComponent("v-spacer"),p=t.resolveComponent("v-list-item"),h=t.resolveComponent("v-list"),m=t.resolveComponent("v-card"),g=t.resolveComponent("v-dialog");return e.display?(t.openBlock(),t.createBlock(g,{key:0,"max-width":"500px",transition:"dialog-transition"},{activator:t.withCtx((({props:e})=>[t.createVNode(l,t.mergeProps({icon:"",color:"primary"},e),{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-keyboard")]))),_:1})])),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(d,{color:"secondary",dark:"",dense:""},{default:t.withCtx((()=>[t.createVNode(c,{class:"text-subtitle-1"},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("Shortcut keys:")]))),_:1})])),_:1}),t.createVNode(h,{dense:""},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.commands,(e=>(t.openBlock(),t.createBlock(p,{key:Array.isArray(e.hotkey)?e.hotkey.join(","):e.hotkey,class:"py-1"},{default:t.withCtx((()=>[t.createVNode(l,{variant:"outlined",color:"primary",class:"text-white",size:"small"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey),1)])),_:2},1024),t.createVNode(u),t.createElementVNode("span",E,t.toDisplayString(e.command),1)])),_:2},1024)))),128))])),_:1})])),_:1})])),_:1})):t.createCommentVNode("",!0)}]]);const T=p(t.defineComponent({name:"SkMouseTrapToolTip",props:{hotkey:{type:[String,Array],required:!0},command:{type:String,required:!0},disabled:{type:Boolean,default:!1},position:{type:String,default:"top"},showTooltip:{type:Boolean,default:!0},highlightEffect:{type:String,default:"glow"}},emits:["hotkey-triggered"],setup(e,{emit:n}){const o=t.ref(null),r=t.ref(!1);t.ref(`hotkey-${Math.random().toString(36).substring(2,15)}`);const a=t.computed((()=>{const t=Array.isArray(e.hotkey)?e.hotkey[0]:e.hotkey;return t.includes(" ")?t.toLowerCase().split(" ").map((e=>e.charAt(0)+e.slice(1))).join(", "):t.toLowerCase().split("+").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" + ")}));t.watch((()=>r.value),(t=>{if(!o.value||e.disabled)return;const n=o.value.querySelector('button, a, input[type="button"], [role="button"]');n&&(n.style.transition="all 250ms ease",t&&"none"!==e.highlightEffect?n.style.filter="brightness(1.1)":n.style.filter="")}));const i=e=>{"Control"===e.key&&(r.value=!0)},s=e=>{"Control"===e.key&&(r.value=!1)},l=()=>{if(e.disabled||!o.value)return;let t=o.value.querySelector('button, a, input[type="button"], [role="button"]');if(t||(t=o.value.querySelector("v-list-item, .v-list-item, router-link, .router-link, a, [to]")),t||!o.value.hasAttribute("to")&&"A"!==o.value.tagName&&!o.value.classList.contains("v-list-item")||(t=o.value),!t){const e=o.value.closest("v-list-item, .v-list-item, a, [to]");e&&(t=e)}if(t)if(t.hasAttribute("to")){const o=t.getAttribute("to");if(o&&window.location.pathname!==o){const e=window.$nuxt?.$router||window.$router;e&&"function"==typeof e.push?e.push(o):window.location.pathname=o}n("hotkey-triggered",e.hotkey)}else t.click(),n("hotkey-triggered",e.hotkey);else console.log("No clickable element found for hotkey",e.hotkey),n("hotkey-triggered",e.hotkey)},c=()=>{e.disabled||_.addBinding({hotkey:e.hotkey,command:e.command,callback:l})},d=()=>{e.disabled||_.removeBinding(e.hotkey)};return t.watch((()=>e.disabled),(e=>{e?d():c()})),t.onMounted((()=>{document.addEventListener("keydown",i),document.addEventListener("keyup",s),c()})),t.onBeforeUnmount((()=>{document.removeEventListener("keydown",i),document.removeEventListener("keyup",s),d()})),{wrapperElement:o,isControlKeyPressed:r,formattedHotkey:a}}}),[["render",function(e,n,o,r,a,i){return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["sk-mousetrap-tooltip-wrapper",[e.isControlKeyPressed&&!e.disabled&&"none"!==e.highlightEffect?`sk-mousetrap-highlight-${e.highlightEffect}`:""]]),ref:"wrapperElement"},[t.renderSlot(e.$slots,"default",{},void 0,!0),t.createVNode(t.Transition,{name:"fade"},{default:t.withCtx((()=>[e.showTooltip&&e.isControlKeyPressed&&!e.disabled?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["sk-mousetrap-tooltip",{"sk-mt-tooltip-top":"top"===e.position,"sk-mt-tooltip-bottom":"bottom"===e.position,"sk-mt-tooltip-left":"left"===e.position,"sk-mt-tooltip-right":"right"===e.position}])},t.toDisplayString(e.formattedHotkey),3)):t.createCommentVNode("",!0)])),_:1})],2)}],["__scopeId","data-v-5d6fb09c"]]),V=(()=>{let e=null;return{setInstance(t){e=t},getInstance:()=>e,alertUser(t){e?e.addSnack(t):console.error("SnackbarService not found")}}})(),{setInstance:R,alertUser:I}=V,A=t.defineComponent({name:"SnackbarService",data:()=>({snacks:[],show:[]}),mounted(){R(this)},methods:{addSnack(e){this.snacks.push(e),this.show.push(!0)},close(){this.show.pop(),this.show.push(!1)},getColor:e=>e.status===o.Status.ok?"success":e.status===o.Status.error?"error":e.status===o.Status.warning?"yellow":void 0}}),M={class:"d-flex align-center justify-space-between w-100"};const D=p(A,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-snackbar");return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.snacks,(o=>(t.openBlock(),t.createBlock(c,{key:e.snacks.indexOf(o),modelValue:e.show[e.snacks.indexOf(o)],"onUpdate:modelValue":t=>e.show[e.snacks.indexOf(o)]=t,timeout:o.timeout,location:"bottom right",color:e.getColor(o)},{default:t.withCtx((()=>[t.createElementVNode("div",M,[t.createElementVNode("span",null,t.toDisplayString(o.text),1),t.createVNode(l,{icon:"",variant:"text",onClick:n[0]||(n[0]=t=>e.close())},{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-close")]))),_:1})])),_:1})])])),_:2},1032,["modelValue","onUpdate:modelValue","timeout","color"])))),128))])}]]),L=t.defineComponent({name:"PaginatingToolbar",props:{pages:{type:Array,required:!0},page:{type:Number,required:!0},title:{type:String,required:!1,default:""},subtitle:{type:String,required:!1,default:""}},emits:["first","prev","next","last","set-page"]}),$={key:0,class:"ms-2 text-subtitle-2","data-cy":"paginating-toolbar-subtitle"};const O=p(L,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-toolbar-title"),l=t.resolveComponent("v-spacer"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-select"),p=t.resolveComponent("v-toolbar");return t.openBlock(),t.createBlock(p,{density:"compact"},{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.title),1),e.subtitle?(t.openBlock(),t.createElementBlock("span",$,t.toDisplayString(e.subtitle),1)):t.createCommentVNode("",!0)])),_:1}),t.createVNode(l),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:1==e.page,onClick:n[0]||(n[0]=t=>e.$emit("first"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-page-first")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:1==e.page,onClick:n[1]||(n[1]=t=>e.$emit("prev"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-chevron-left")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(u,{"model-value":e.page,items:e.pages,class:"pageSelect",density:"compact","hide-details":"","return-object":!1,variant:"outlined","onUpdate:modelValue":n[2]||(n[2]=t=>e.$emit("set-page",t))},{selection:t.withCtx((({item:e})=>[t.createTextVNode(t.toDisplayString(e.value),1)])),_:1},8,["model-value","items"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:e.page==e.pages.length,onClick:n[3]||(n[3]=t=>e.$emit("next"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-chevron-right")]))),_:1})])),_:1},8,["disabled"]),t.createVNode(d,{variant:"text",icon:"",color:"secondary",disabled:e.page==e.pages.length,onClick:n[4]||(n[4]=t=>e.$emit("last"))},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-page-last")]))),_:1})])),_:1},8,["disabled"])])),_:1})}],["__scopeId","data-v-a75fea7e"]]),P=t.defineComponent({name:"CardSearch",emits:{search:e=>"string"==typeof e},data:()=>({query:""}),methods:{search(){this.$emit("search",this.query)}}}),z={class:"card-search"};const j=p(P,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-text-field");return t.openBlock(),t.createElementBlock("div",z,[t.createVNode(s,{modelValue:e.query,"onUpdate:modelValue":n[0]||(n[0]=t=>e.query=t),label:"Search for cards...","append-icon":"mdi-magnify","onClick:append":e.search,onKeydown:t.withKeys(e.search,["enter"])},null,8,["modelValue","onClick:append","onKeydown"])])}]]),F=t.defineComponent({name:"CardSearchResults",emits:{"card-selected":e=>"string"==typeof e.cardId&&"string"==typeof e.courseId},props:{query:{type:String,required:!0},dataLayer:{type:Object,required:!0},courseFilter:{type:String,default:null}},data:()=>({cards:[],loading:!1,error:null,selectedCardId:null}),watch:{query:{immediate:!0,handler(e){e&&this.fetchResults(e)}}},methods:{async fetchResults(e){this.loading=!0,this.error=null;try{let t=[];if(this.courseFilter)t=[this.courseFilter],console.log(`Filtering search to course: ${this.courseFilter}`);else{const{CourseLookup:e}=await import("@vue-skuilder/db");t=(await e.allCourseWare()).map((e=>e._id)).filter(Boolean),console.log(`Searching across all ${t.length} courses`)}const n=[];for(const o of t){const t=this.dataLayer.getCourseDB(o),r=await t.searchCards(e);for(const e of r)n.push({...e,courseId:o})}this.cards=n,console.log(`Search completed: found ${n.length} cards across ${t.length} courses`)}catch(t){this.error="Error fetching search results.",console.error("Search error:",t)}finally{this.loading=!1}},selectCard(e){this.selectedCardId=e._id,this.$emit("card-selected",{cardId:e._id,courseId:e.courseId})}}}),U={class:"card-search-results"},q={key:0},H={key:1},Z={key:2};const K=p(F,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-list-item-title"),l=t.resolveComponent("v-list-item-subtitle"),c=t.resolveComponent("v-list-item"),d=t.resolveComponent("v-list");return t.openBlock(),t.createElementBlock("div",U,[e.loading?(t.openBlock(),t.createElementBlock("div",q,"Loading...")):e.error?(t.openBlock(),t.createElementBlock("div",H,t.toDisplayString(e.error),1)):(t.openBlock(),t.createElementBlock("div",Z,[t.createVNode(d,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cards,(n=>(t.openBlock(),t.createBlock(c,{key:n._id,onClick:t=>e.selectCard(n),class:t.normalizeClass([{"selected-card":n._id===e.selectedCardId},"cursor-pointer"])},{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n._id),1)])),_:2},1024),t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Course: "+t.toDisplayString(n.courseId),1)])),_:2},1024)])),_:2},1032,["onClick","class"])))),128))])),_:1})]))])}],["__scopeId","data-v-285e13bd"]]),G=t.defineComponent({name:"CardHistoryViewer",props:{cardId:{type:String,required:!0},courseId:{type:String,required:!0},userId:{type:String,required:!0},userDB:{type:Object,required:!0}},data:()=>({history:[],cardHistory:null,bestIntervalHumanized:"",loading:!1,error:null,headers:[{title:"Timestamp",key:"formattedTimeStamp"},{title:"Interval",key:"userFriendlyInterval"},{title:"Time Spent (s)",key:"timeSpentSeconds"},{title:"Correct?",key:"isCorrect"},{title:"Performance",key:"performance"},{title:"Prior Attempts",key:"priorAttemps"},{title:"User Answer",key:"userAnswer"}]}),watch:{cardId:{immediate:!0,handler(e){e&&this.userDB&&this.fetchHistory()}},userDB:{handler(e){e&&this.cardId&&this.fetchHistory()}}},methods:{async fetchHistory(){this.loading=!0,this.error=null;try{const e=r.getCardHistoryID(this.courseId,this.cardId),t=await this.userDB.get(e);this.cardHistory=t,this.bestIntervalHumanized=n.duration(t.bestInterval,"seconds").humanize();const o=[...t.records].sort(((e,t)=>n(e.timeStamp).valueOf()-n(t.timeStamp).valueOf()));this.history=o.map(((e,t)=>{const r=n(e.timeStamp),a={...e,formattedTimeStamp:r.format("YYYY-MM-DD HH:mm:ss"),timeSpentSeconds:Math.round(e.timeSpent/1e3),isCorrect:e.isCorrect,performance:e.performance,priorAttemps:e.priorAttemps,userAnswer:e.userAnswer};if(t>0){const e=n(o[t-1].timeStamp),i=r.diff(e,"seconds",!0);a.intervalFromPrevious=Math.round(100*i)/100,a.userFriendlyInterval=`${a.intervalFromPrevious} sec (${n.duration(i,"seconds").humanize()})`}return a}))}catch(e){this.error="Error fetching card history.",console.error(e)}finally{this.loading=!1}}}}),W={class:"card-history-viewer"},Q={key:0},Y={key:1},J={key:2,class:"error-message"},X={key:3};const ee=p(G,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-list-item-title"),c=t.resolveComponent("v-list-item-subtitle"),d=t.resolveComponent("v-list-item-content"),u=t.resolveComponent("v-list-item"),p=t.resolveComponent("v-card"),h=t.resolveComponent("v-data-table");return t.openBlock(),t.createElementBlock("div",W,[e.userId?(t.openBlock(),t.createElementBlock("h3",Q,"Card History for User: "+t.toDisplayString(e.userId),1)):t.createCommentVNode("",!0),e.loading?(t.openBlock(),t.createElementBlock("div",Y,"Loading...")):e.error?(t.openBlock(),t.createElementBlock("div",J,t.toDisplayString(e.error),1)):e.cardHistory?(t.openBlock(),t.createElementBlock("div",X,[t.createVNode(p,{class:"mb-4"},{default:t.withCtx((()=>[t.createVNode(s,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("Summary")]))),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Best Interval: "+t.toDisplayString(e.cardHistory.bestInterval)+" seconds ("+t.toDisplayString(e.bestIntervalHumanized)+")",1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("The to-date largest interval between successful card reviews.")]))),_:1})])),_:1})])),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Lapses: "+t.toDisplayString(e.cardHistory.lapses),1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("The number of times that a card has been failed in review.")]))),_:1})])),_:1})])),_:1}),t.createVNode(u,null,{default:t.withCtx((()=>[t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>[t.createTextVNode("Streak: "+t.toDisplayString(e.cardHistory.streak),1)])),_:1}),t.createVNode(c,null,{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("The number of consecutive successful impressions on this card.")]))),_:1})])),_:1})])),_:1})])),_:1}),t.createVNode(h,{headers:e.headers,items:e.history,class:"elevation-1"},null,8,["headers","items"])])):t.createCommentVNode("",!0)])}],["__scopeId","data-v-a4bdfdfb"]]);function te(e){return"object"==typeof e&&null!==e&&"submitAnswer"in e&&"priorAttempts"in e}class Displayable{constructor(e){if(0===e.length)throw new Error("\nDisplayable Constructor was called with no view Data.\n ");!function(e,t){for(let n=0;n<e.length;n++)e[n].fields.forEach(((e,r)=>{console.log(`[Displayable] shape[${n}].field[${r}]:\n ${JSON.stringify(e)}`),void 0===t[n][e.name]&&e.type!==o.FieldType.MEDIA_UPLOADS&&console.warn("[Displayable] missing data")}))}(this.dataShapes(),e)}}c(Displayable,"dataShapes"),c(Displayable,"views"),c(Displayable,"seedData"),c(Displayable,"acceptsUserData",!0);const ne=()=>{let e="fallback (empty string)",t="";if(!t&&"undefined"!=typeof window&&window.__SKUILDER_CONFIG__?.apiBase){const n=window.__SKUILDER_CONFIG__.apiBase.replace(/\/$/,"");t=n.startsWith("/")?n:`/${n}`,e="window.__SKUILDER_CONFIG__.apiBase"}return console.log("[authAPI] getApiBase() called"),console.log("[authAPI] source:",e),console.log("[authAPI] result:",t),t};async function oe(e,t,n){try{const o={username:e,email:t};n&&(o.origin=n);const r=await fetch(`${ne()}/auth/send-verification`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(o)});if(!r.ok){const e=await r.text();return console.error("Send verification email error:",e),{ok:!1,error:`HTTP ${r.status}: ${r.statusText}`}}return await r.json()}catch(o){return console.error("Send verification email fetch error:",o),{ok:!1,error:o instanceof Error?o.message:"Network error"}}}async function re(e){try{const t=await fetch(`${ne()}/auth/verify`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:e})});return t.ok?await t.json():{ok:!1,error:`HTTP ${t.status}: ${t.statusText}`}}catch(t){return{ok:!1,error:t instanceof Error?t.message:"Network error"}}}async function ae(){try{const e=await fetch(`${ne()}/auth/status`,{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"});return e.ok?await e.json():{ok:!1,error:`HTTP ${e.status}: ${e.statusText}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:"Network error"}}}async function ie(e,t){try{const n={email:e};t&&(n.origin=t);const o=await fetch(`${ne()}/auth/request-reset`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)});return o.ok?await o.json():{ok:!1,error:`HTTP ${o.status}: ${o.statusText}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:"Network error"}}}async function se(e,t){try{const n=await fetch(`${ne()}/auth/reset-password`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:e,newPassword:t})});return n.ok?await n.json():{ok:!1,error:`HTTP ${n.status}: ${n.statusText}`}}catch(n){return{ok:!1,error:n instanceof Error?n.message:"Network error"}}}const le=p(t.defineComponent({name:"StudySessionTimer",props:{timeRemaining:{type:Number,required:!0},sessionTimeLimit:{type:Number,required:!0,default:5}},emits:["add-time"],setup:(e,{emit:n})=>({hovered:t.ref(!1),formattedTimeRemaining:t.computed((()=>{let t="";const n=e.timeRemaining;n>60&&(t=Math.floor(n/60).toString()+":");const o=n%60;return t+=o>=10?o:"0"+o,n<=60&&(t+=" seconds"),t+=" left!",t})),percentageRemaining:t.computed((()=>e.timeRemaining>60?e.timeRemaining/(60*e.sessionTimeLimit)*100:e.timeRemaining/60*100)),timerColor:t.computed((()=>e.timeRemaining>60?"primary":"orange darken-3")),addSessionTime:()=>{n("add-time")}})}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-icon"),l=t.resolveComponent("v-btn"),c=t.resolveComponent("v-progress-circular"),d=t.resolveComponent("v-tooltip");return t.openBlock(),t.createBlock(d,{location:"right","open-delay":0,"close-delay":200,color:"secondary",class:"text-subtitle-1"},{activator:t.withCtx((({props:o})=>[t.createElementVNode("div",t.mergeProps({class:"timer-container"},o,{onMouseenter:n[0]||(n[0]=t=>e.hovered=!0),onMouseleave:n[1]||(n[1]=t=>e.hovered=!1)}),[t.createVNode(c,{alt:"Time remaining in study session",size:"64",width:"8",rotate:"0",color:e.timerColor,"model-value":e.percentageRemaining},{default:t.withCtx((()=>[e.timeRemaining>0&&e.hovered?(t.openBlock(),t.createBlock(l,{key:0,icon:"",color:"transparent",location:"bottom left",onClick:e.addSessionTime},{default:t.withCtx((()=>[t.createVNode(s,{size:"large"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("mdi-plus")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0)])),_:1},8,["color","model-value"])],16)])),default:t.withCtx((()=>[t.createTextVNode(" "+t.toDisplayString(e.formattedTimeRemaining),1)])),_:1})}],["__scopeId","data-v-5960940a"]]);const ce=p(t.defineComponent({name:"CardViewer",ref:{},props:{sessionOrder:{type:Number,required:!1,default:0},card_id:{type:String,required:!0,default:""},course_id:{type:String,required:!0,default:""},view:{type:[Function,Object],required:!0},data:{type:Array,required:!0},user_elo:{type:Object,default:()=>({global:{score:1e3,count:0},tags:{},misc:{}})},card_elo:{type:Number,default:1e3}},emits:["emitResponse"],methods:{processResponse(e){console.log(`\n Card was displayed at ${e.timeStamp}\n User spent ${e.timeSpent} milliseconds with the card.\n `),this.$emit("emitResponse",e)}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(s,{elevation:"12"},{default:t.withCtx((()=>[(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.view),{ref:"activeView",key:e.course_id+"-"+e.card_id+"-"+e.sessionOrder,data:e.data,"modify-difficulty":e.user_elo.global.score-e.card_elo,class:"cardView ma-2 pa-2",onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,40,["data","modify-difficulty"]))])),_:1})}],["__scopeId","data-v-318fb94f"]]),de=t.defineComponent({name:"SessionControllerDebug",props:{sessionController:{type:Object,required:!0}},setup(e){const n=t.ref(0);let o=null;t.onMounted((()=>{o=setInterval((()=>{n.value++}),500)})),t.onUnmounted((()=>{o&&clearInterval(o)}));return{debugInfo:t.computed((()=>(n.value,e.sessionController?e.sessionController.getDebugInfo():{reviewQueue:{length:0,dequeueCount:0,items:[]},newQueue:{length:0,dequeueCount:0,items:[]},failedQueue:{length:0,dequeueCount:0,items:[]},hydratedCache:{count:0,failedCacheSize:0,items:[]}})))}}}),ue={class:"debug-section"},pe={class:"debug-header"},he={class:"debug-stats"},me={class:"text-caption"},ge={class:"text-caption ml-2"},fe={key:0,class:"debug-items"},ke={class:"text-caption"},be={class:"text-caption text-grey ml-1"},ye={key:0,class:"text-caption text-grey"},ve={key:1,class:"text-caption text-grey"},we={class:"debug-section"},xe={class:"debug-header"},Ce={class:"debug-stats"},Se={class:"text-caption"},_e={class:"text-caption ml-2"},Ne={key:0,class:"debug-items"},Ee={class:"text-caption"},Be={class:"text-caption text-grey ml-1"},Te={key:0,class:"text-caption text-grey"},Ve={key:1,class:"text-caption text-grey"},Re={class:"debug-section"},Ie={class:"debug-header"},Ae={class:"debug-stats"},Me={class:"text-caption"},De={class:"text-caption ml-2"},Le={key:0,class:"debug-items"},$e={class:"text-caption"},Oe={class:"text-caption text-grey ml-1"},Pe={key:0,class:"text-caption text-grey"},ze={key:1,class:"text-caption text-grey"},je={class:"debug-section"},Fe={class:"debug-header"},Ue={class:"debug-stats"},qe={class:"text-caption"},He={class:"text-caption ml-2"},Ze={key:0,class:"debug-items"},Ke={class:"text-caption"},Ge={key:0,class:"text-caption text-grey"},We={key:1,class:"text-caption text-grey"};const Qe=p(de,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-card-title"),d=t.resolveComponent("v-col"),u=t.resolveComponent("v-row"),p=t.resolveComponent("v-divider"),h=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-card");return e.sessionController?(t.openBlock(),t.createBlock(m,{key:0,class:"session-debug ma-2",elevation:"2"},{default:t.withCtx((()=>[t.createVNode(c,{class:"text-caption bg-grey-darken-3"},{default:t.withCtx((()=>[n[1]||(n[1]=t.createTextVNode(" Session Controller Debug ")),t.createVNode(s),t.createVNode(l,{size:"small"},{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-bug")]))),_:1})])),_:1}),t.createVNode(h,{class:"pa-2"},{default:t.withCtx((()=>[t.createVNode(u,{dense:""},{default:t.withCtx((()=>[t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",ue,[t.createElementVNode("div",pe,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("mdi-calendar-check")]))),_:1}),n[3]||(n[3]=t.createElementVNode("strong",null,"Review Queue",-1))]),t.createElementVNode("div",he,[t.createElementVNode("span",me,"Length: "+t.toDisplayString(e.debugInfo.reviewQueue.length),1),t.createElementVNode("span",ge,"Dequeued: "+t.toDisplayString(e.debugInfo.reviewQueue.dequeueCount),1)]),e.debugInfo.reviewQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",fe,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.reviewQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",ke,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",be,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.reviewQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",ye," ... +"+t.toDisplayString(e.debugInfo.reviewQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",ve," (empty) "))])])),_:1}),t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",we,[t.createElementVNode("div",xe,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-file-document-plus")]))),_:1}),n[5]||(n[5]=t.createElementVNode("strong",null,"New Cards Queue",-1))]),t.createElementVNode("div",Ce,[t.createElementVNode("span",Se,"Length: "+t.toDisplayString(e.debugInfo.newQueue.length),1),t.createElementVNode("span",_e,"Dequeued: "+t.toDisplayString(e.debugInfo.newQueue.dequeueCount),1)]),e.debugInfo.newQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",Ne,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.newQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",Ee,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",Be,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.newQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",Te," ... +"+t.toDisplayString(e.debugInfo.newQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",Ve," (empty) "))])])),_:1}),t.createVNode(d,{cols:"12",md:"4"},{default:t.withCtx((()=>[t.createElementVNode("div",Re,[t.createElementVNode("div",Ie,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[7]||(n[7]=t.createElementVNode("strong",null,"Failed Cards Queue",-1))]),t.createElementVNode("div",Ae,[t.createElementVNode("span",Me,"Length: "+t.toDisplayString(e.debugInfo.failedQueue.length),1),t.createElementVNode("span",De,"Dequeued: "+t.toDisplayString(e.debugInfo.failedQueue.dequeueCount),1)]),e.debugInfo.failedQueue.items.length>0?(t.openBlock(),t.createElementBlock("div",Le,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.failedQueue.items.slice(0,5),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item"},[t.createElementVNode("span",$e,t.toDisplayString(n)+": "+t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1),t.createElementVNode("span",Oe,"("+t.toDisplayString(e.status)+")",1)])))),128)),e.debugInfo.failedQueue.items.length>5?(t.openBlock(),t.createElementBlock("div",Pe," ... +"+t.toDisplayString(e.debugInfo.failedQueue.items.length-5)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",ze," (empty) "))])])),_:1})])),_:1}),t.createVNode(u,{dense:""},{default:t.withCtx((()=>[t.createVNode(d,{cols:"12"},{default:t.withCtx((()=>[t.createVNode(p,{class:"my-2"}),t.createElementVNode("div",je,[t.createElementVNode("div",Fe,[t.createVNode(l,{size:"x-small",class:"mr-1"},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-database")]))),_:1}),n[9]||(n[9]=t.createElementVNode("strong",null,"Hydrated Cards Cache",-1))]),t.createElementVNode("div",Ue,[t.createElementVNode("span",qe,"Cached: "+t.toDisplayString(e.debugInfo.hydratedCache.count),1),t.createElementVNode("span",He,"Failed Cache: "+t.toDisplayString(e.debugInfo.hydratedCache.failedCacheSize),1)]),e.debugInfo.hydratedCache.items.length>0?(t.openBlock(),t.createElementBlock("div",Ze,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.debugInfo.hydratedCache.items.slice(0,8),((e,n)=>(t.openBlock(),t.createElementBlock("div",{key:n,class:"debug-item d-inline-block mr-3"},[t.createElementVNode("span",Ke,t.toDisplayString(e.courseID)+"::"+t.toDisplayString(e.cardID),1)])))),128)),e.debugInfo.hydratedCache.items.length>8?(t.openBlock(),t.createElementBlock("div",Ge," ... +"+t.toDisplayString(e.debugInfo.hydratedCache.items.length-8)+" more ",1)):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",We," (empty) "))])])),_:1})])),_:1})])),_:1})])),_:1})):t.createCommentVNode("",!0)}],["__scopeId","data-v-1a6ac7a1"]]);var Ye={};!function e(t,n,o,r){var a=!!(t.Worker&&t.Blob&&t.Promise&&t.OffscreenCanvas&&t.OffscreenCanvasRenderingContext2D&&t.HTMLCanvasElement&&t.HTMLCanvasElement.prototype.transferControlToOffscreen&&t.URL&&t.URL.createObjectURL),i="function"==typeof Path2D&&"function"==typeof DOMMatrix;function s(){}function l(e){var o=n.exports.Promise,r=void 0!==o?o:t.Promise;return"function"==typeof r?new r(e):(e(s,s),null)}var c,d,u,p,h,m,g=function(e,t){return{transform:function(n){if(e)return n;if(t.has(n))return t.get(n);var o=new OffscreenCanvas(n.width,n.height);return o.getContext("2d").drawImage(n,0,0),t.set(n,o),o},clear:function(){t.clear()}}}(function(){if(!t.OffscreenCanvas)return!1;var e=new OffscreenCanvas(1,1),n=e.getContext("2d");n.fillRect(0,0,1,1);var o=e.transferToImageBitmap();try{n.createPattern(o,"no-repeat")}catch(r){return!1}return!0}(),new Map),f=(u=Math.floor(1e3/60),p={},h=0,"function"==typeof requestAnimationFrame&&"function"==typeof cancelAnimationFrame?(c=function(e){var t=Math.random();return p[t]=requestAnimationFrame((function n(o){h===o||h+u-1<o?(h=o,delete p[t],e()):p[t]=requestAnimationFrame(n)})),t},d=function(e){p[e]&&cancelAnimationFrame(p[e])}):(c=function(e){return setTimeout(e,u)},d=function(e){return clearTimeout(e)}),{frame:c,cancel:d}),k=function(){var t,n,r={};return function(){if(t)return t;if(!o&&a){var i=["var CONFETTI, SIZE = {}, module = {};","("+e.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {"," if (msg.data.options) {"," CONFETTI(msg.data.options).then(function () {"," if (msg.data.callback) {"," postMessage({ callback: msg.data.callback });"," }"," });"," } else if (msg.data.reset) {"," CONFETTI && CONFETTI.reset();"," } else if (msg.data.resize) {"," SIZE.width = msg.data.resize.width;"," SIZE.height = msg.data.resize.height;"," } else if (msg.data.canvas) {"," SIZE.width = msg.data.canvas.width;"," SIZE.height = msg.data.canvas.height;"," CONFETTI = module.exports.create(msg.data.canvas);"," }","}"].join("\n");try{t=new Worker(URL.createObjectURL(new Blob([i])))}catch(s){return void 0!==typeof console&&"function"==typeof console.warn&&console.warn("🎊 Could not load worker",s),null}!function(e){function t(t,n){e.postMessage({options:t||{},callback:n})}e.init=function(t){var n=t.transferControlToOffscreen();e.postMessage({canvas:n},[n])},e.fire=function(o,a,i){if(n)return t(o,null),n;var s=Math.random().toString(36).slice(2);return n=l((function(a){function l(t){t.data.callback===s&&(delete r[s],e.removeEventListener("message",l),n=null,g.clear(),i(),a())}e.addEventListener("message",l),t(o,s),r[s]=l.bind(null,{data:{callback:s}})}))},e.reset=function(){for(var t in e.postMessage({reset:!0}),r)r[t](),delete r[t]}}(t)}return t}}(),b={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function y(e,t,n){return function(e,t){return t?t(e):e}(e&&null!=e[t]?e[t]:b[t],n)}function v(e){return e<0?0:Math.floor(e)}function w(e){return parseInt(e,16)}function x(e){return e.map(C)}function C(e){var t=String(e).replace(/[^0-9a-f]/gi,"");return t.length<6&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),{r:w(t.substring(0,2)),g:w(t.substring(2,4)),b:w(t.substring(4,6))}}function S(e){e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight}function _(e){var t=e.getBoundingClientRect();e.width=t.width,e.height=t.height}function N(e,t){t.x+=Math.cos(t.angle2D)*t.velocity+t.drift,t.y+=Math.sin(t.angle2D)*t.velocity+t.gravity,t.velocity*=t.decay,t.flat?(t.wobble=0,t.wobbleX=t.x+10*t.scalar,t.wobbleY=t.y+10*t.scalar,t.tiltSin=0,t.tiltCos=0,t.random=1):(t.wobble+=t.wobbleSpeed,t.wobbleX=t.x+10*t.scalar*Math.cos(t.wobble),t.wobbleY=t.y+10*t.scalar*Math.sin(t.wobble),t.tiltAngle+=.1,t.tiltSin=Math.sin(t.tiltAngle),t.tiltCos=Math.cos(t.tiltAngle),t.random=Math.random()+2);var n=t.tick++/t.totalTicks,o=t.x+t.random*t.tiltCos,r=t.y+t.random*t.tiltSin,a=t.wobbleX+t.random*t.tiltCos,s=t.wobbleY+t.random*t.tiltSin;if(e.fillStyle="rgba("+t.color.r+", "+t.color.g+", "+t.color.b+", "+(1-n)+")",e.beginPath(),i&&"path"===t.shape.type&&"string"==typeof t.shape.path&&Array.isArray(t.shape.matrix))e.fill(function(e,t,n,o,r,a,i){var s=new Path2D(e),l=new Path2D;l.addPath(s,new DOMMatrix(t));var c=new Path2D;return c.addPath(l,new DOMMatrix([Math.cos(i)*r,Math.sin(i)*r,-Math.sin(i)*a,Math.cos(i)*a,n,o])),c}(t.shape.path,t.shape.matrix,t.x,t.y,.1*Math.abs(a-o),.1*Math.abs(s-r),Math.PI/10*t.wobble));else if("bitmap"===t.shape.type){var l=Math.PI/10*t.wobble,c=.1*Math.abs(a-o),d=.1*Math.abs(s-r),u=t.shape.bitmap.width*t.scalar,p=t.shape.bitmap.height*t.scalar,h=new DOMMatrix([Math.cos(l)*c,Math.sin(l)*c,-Math.sin(l)*d,Math.cos(l)*d,t.x,t.y]);h.multiplySelf(new DOMMatrix(t.shape.matrix));var m=e.createPattern(g.transform(t.shape.bitmap),"no-repeat");m.setTransform(h),e.globalAlpha=1-n,e.fillStyle=m,e.fillRect(t.x-u/2,t.y-p/2,u,p),e.globalAlpha=1}else if("circle"===t.shape)e.ellipse?e.ellipse(t.x,t.y,Math.abs(a-o)*t.ovalScalar,Math.abs(s-r)*t.ovalScalar,Math.PI/10*t.wobble,0,2*Math.PI):function(e,t,n,o,r,a,i,s,l){e.save(),e.translate(t,n),e.rotate(a),e.scale(o,r),e.arc(0,0,1,i,s,l),e.restore()}(e,t.x,t.y,Math.abs(a-o)*t.ovalScalar,Math.abs(s-r)*t.ovalScalar,Math.PI/10*t.wobble,0,2*Math.PI);else if("star"===t.shape)for(var f=Math.PI/2*3,k=4*t.scalar,b=8*t.scalar,y=t.x,v=t.y,w=5,x=Math.PI/w;w--;)y=t.x+Math.cos(f)*b,v=t.y+Math.sin(f)*b,e.lineTo(y,v),f+=x,y=t.x+Math.cos(f)*k,v=t.y+Math.sin(f)*k,e.lineTo(y,v),f+=x;else e.moveTo(Math.floor(t.x),Math.floor(t.y)),e.lineTo(Math.floor(t.wobbleX),Math.floor(r)),e.lineTo(Math.floor(a),Math.floor(s)),e.lineTo(Math.floor(o),Math.floor(t.wobbleY));return e.closePath(),e.fill(),t.tick<t.totalTicks}function E(e,n){var i,s=!e,c=!!y(n||{},"resize"),d=!1,u=y(n,"disableForReducedMotion",Boolean),p=a&&!!y(n||{},"useWorker")?k():null,h=s?S:_,m=!(!e||!p)&&!!e.__confetti_initialized,b="function"==typeof matchMedia&&matchMedia("(prefers-reduced-motion)").matches;function w(t,n,a){for(var s,c,d,u,p,m=y(t,"particleCount",v),k=y(t,"angle",Number),b=y(t,"spread",Number),w=y(t,"startVelocity",Number),C=y(t,"decay",Number),S=y(t,"gravity",Number),_=y(t,"drift",Number),E=y(t,"colors",x),B=y(t,"ticks",Number),T=y(t,"shapes"),V=y(t,"scalar"),R=!!y(t,"flat"),I=function(e){var t=y(e,"origin",Object);return t.x=y(t,"x",Number),t.y=y(t,"y",Number),t}(t),A=m,M=[],D=e.width*I.x,L=e.height*I.y;A--;)M.push((s={x:D,y:L,angle:k,spread:b,startVelocity:w,color:E[A%E.length],shape:T[(u=0,p=T.length,Math.floor(Math.random()*(p-u))+u)],ticks:B,decay:C,gravity:S,drift:_,scalar:V,flat:R},c=void 0,d=void 0,c=s.angle*(Math.PI/180),d=s.spread*(Math.PI/180),{x:s.x,y:s.y,wobble:10*Math.random(),wobbleSpeed:Math.min(.11,.1*Math.random()+.05),velocity:.5*s.startVelocity+Math.random()*s.startVelocity,angle2D:-c+(.5*d-Math.random()*d),tiltAngle:(.5*Math.random()+.25)*Math.PI,color:s.color,shape:s.shape,tick:0,totalTicks:s.ticks,decay:s.decay,drift:s.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:3*s.gravity,ovalScalar:.6,scalar:s.scalar,flat:s.flat}));return i?i.addFettis(M):(i=function(e,t,n,a,i){var s,c,d=t.slice(),u=e.getContext("2d"),p=l((function(t){function l(){s=c=null,u.clearRect(0,0,a.width,a.height),g.clear(),i(),t()}s=f.frame((function t(){!o||a.width===r.width&&a.height===r.height||(a.width=e.width=r.width,a.height=e.height=r.height),a.width||a.height||(n(e),a.width=e.width,a.height=e.height),u.clearRect(0,0,a.width,a.height),(d=d.filter((function(e){return N(u,e)}))).length?s=f.frame(t):l()})),c=l}));return{addFettis:function(e){return d=d.concat(e),p},canvas:e,promise:p,reset:function(){s&&f.cancel(s),c&&c()}}}(e,M,h,n,a),i.promise)}function C(n){var o=u||y(n,"disableForReducedMotion",Boolean),r=y(n,"zIndex",Number);if(o&&b)return l((function(e){e()}));s&&i?e=i.canvas:s&&!e&&(e=function(e){var t=document.createElement("canvas");return t.style.position="fixed",t.style.top="0px",t.style.left="0px",t.style.pointerEvents="none",t.style.zIndex=e,t}(r),document.body.appendChild(e)),c&&!m&&h(e);var a={width:e.width,height:e.height};function g(){if(p){var t={getBoundingClientRect:function(){if(!s)return e.getBoundingClientRect()}};return h(t),void p.postMessage({resize:{width:t.width,height:t.height}})}a.width=a.height=null}function f(){i=null,c&&(d=!1,t.removeEventListener("resize",g)),s&&e&&(document.body.contains(e)&&document.body.removeChild(e),e=null,m=!1)}return p&&!m&&p.init(e),m=!0,p&&(e.__confetti_initialized=!0),c&&!d&&(d=!0,t.addEventListener("resize",g,!1)),p?p.fire(n,a,f):w(n,a,f)}return C.reset=function(){p&&p.reset(),i&&i.reset()},C}function B(){return m||(m=E(null,{useWorker:!0,resize:!0})),m}n.exports=function(){return B().apply(this,arguments)},n.exports.reset=function(){B().reset()},n.exports.create=E,n.exports.shapeFromPath=function(e){if(!i)throw new Error("path confetti are not supported in this browser");var t,n;"string"==typeof e?t=e:(t=e.path,n=e.matrix);var o=new Path2D(t),r=document.createElement("canvas").getContext("2d");if(!n){for(var a,s,l=1e3,c=l,d=l,u=0,p=0,h=0;h<l;h+=2)for(var m=0;m<l;m+=2)r.isPointInPath(o,h,m,"nonzero")&&(c=Math.min(c,h),d=Math.min(d,m),u=Math.max(u,h),p=Math.max(p,m));a=u-c,s=p-d;var g=Math.min(10/a,10/s);n=[g,0,0,g,-Math.round(a/2+c)*g,-Math.round(s/2+d)*g]}return{type:"path",path:t,matrix:n}},n.exports.shapeFromText=function(e){var t,n=1,o="#000000",r='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';"string"==typeof e?t=e:(t=e.text,n="scalar"in e?e.scalar:n,r="fontFamily"in e?e.fontFamily:r,o="color"in e?e.color:o);var a=10*n,i=a+"px "+r,s=new OffscreenCanvas(a,a),l=s.getContext("2d");l.font=i;var c=l.measureText(t),d=Math.ceil(c.actualBoundingBoxRight+c.actualBoundingBoxLeft),u=Math.ceil(c.actualBoundingBoxAscent+c.actualBoundingBoxDescent),p=c.actualBoundingBoxLeft+2,h=c.actualBoundingBoxAscent+2;d+=4,u+=4,(l=(s=new OffscreenCanvas(d,u)).getContext("2d")).font=i,l.fillStyle=o,l.fillText(t,p,h);var m=1/n;return{type:"bitmap",bitmap:s.transferToImageBitmap(),matrix:[m,0,0,m,-d*m/2,-u*m/2]}}}(function(){return"undefined"!=typeof window?window:"undefined"!=typeof self?self:this||{}}(),Ye,!1);const Je=Ye.exports;Ye.exports.create;const Xe=t.defineComponent({name:"StudySession",ref:{},components:{CardViewer:ce,StudySessionTimer:le,SkMouseTrap:B,HeatMap:f,SessionControllerDebug:Qe},props:{sessionTimeLimit:{type:Number,required:!0},contentSources:{type:Array,required:!0},user:{type:Object,required:!0},dataLayer:{type:Object,required:!0},sessionConfig:{type:Object,default:()=>({likesConfetti:!1})},getViewComponent:{type:Function,required:!0}},emits:["session-finished","session-started","card-loaded","card-response","time-changed","session-prepared","session-error"],data:()=>({cardID:"",view:null,data:[],courseID:"",card_elo:1e3,courseNames:{},cardCount:1,sessionController:null,sessionPrepared:!1,sessionFinished:!1,sessionRecord:[],percentageRemaining:100,timerIsActive:!0,loading:!1,userCourseRegDoc:null,sessionContentSources:[],timeRemaining:300,intervalHandler:null,cardType:"",debugMode:!0===window.debugMode}),computed:{currentCard(){return this.sessionRecord[this.sessionRecord.length-1]}},async created(){this.userCourseRegDoc=await this.user.getCourseRegistrationsDoc(),console.log("[StudySession] Created lifecycle hook - starting initSession"),await this.initSession(),console.log("[StudySession] InitSession completed in created hook")},methods:{user_elo(e){const t=this.userCourseRegDoc.courses.find((t=>t.courseID===e));return t?o.toCourseElo(t.elo):o.toCourseElo(void 0)},handleClassroomMessage(){return e=>(I({text:this.user?.getUsername()||"[Unknown user]",status:o.Status.ok}),console.log("[StudySession] There was a change in the classroom DB:"),console.log(`[StudySession] change: ${e}`),console.log(`[StudySession] Stringified change: ${JSON.stringify(e)}`),{})},incrementSessionClock(){const e=60*this.sessionTimeLimit-this.timeRemaining;this.sessionController.addTime(Math.min(e,60)),this.tick()},tick(){this.timeRemaining=this.sessionController.secondsRemaining,this.percentageRemaining=this.timeRemaining>60?this.timeRemaining/(60*this.sessionTimeLimit)*100:this.timeRemaining/60*100,this.$emit("time-changed",this.timeRemaining),0===this.timeRemaining&&clearInterval(this.intervalHandler)},async initSession(){let e=[];try{console.log(`[StudySession] starting study session w/ sources: ${JSON.stringify(this.contentSources)}`),console.log("[StudySession] Beginning preparation process"),this.sessionContentSources=t.markRaw((await Promise.all(this.contentSources.map((async e=>{try{return await r.getStudySource(e,this.user)}catch(t){return console.error(`Failed to load study source: ${e.type}/${e.id}`,t),null}})))).filter((e=>null!==e))),this.timeRemaining=60*this.sessionTimeLimit,e=await Promise.all(this.contentSources.filter((e=>"classroom"===e.type)).map((async e=>await this.dataLayer.getClassroomDB(e.id,"student")))),e.forEach((e=>{})),this.sessionController=t.markRaw(new r.SessionController(this.sessionContentSources,60*this.sessionTimeLimit,this.dataLayer,this.getViewComponent)),this.sessionController.sessionRecord=this.sessionRecord,await this.sessionController.prepareSession(),this.intervalHandler=setInterval(this.tick,1e3),this.sessionPrepared=!0,console.log("[StudySession] Session preparation complete, emitting session-prepared event"),this.$emit("session-prepared"),console.log("[StudySession] Event emission completed")}catch(n){console.error("[StudySession] Error during session preparation:",n),this.$emit("session-error",{message:"Failed to prepare study session",error:n})}try{this.contentSources.filter((e=>"course"===e.type)).forEach((async e=>this.courseNames[e.id]=(await this.dataLayer.getCoursesDB().getCourseConfig(e.id)).name)),console.log(`[StudySession] Session created:\n ${this.sessionController?.toString()||"Session controller not initialized"}\n User courses: ${this.contentSources.filter((e=>"course"===e.type)).map((e=>e.id)).toString()}\n User classrooms: ${e.map((e=>e._id)).toString()||"No classrooms"}\n `)}catch(n){console.error("[StudySession] Error during final session setup:",n)}if(this.sessionController)try{this.$emit("session-started"),this.loadCard(await this.sessionController.nextCard())}catch(n){console.error("[StudySession] Error loading next card:",n),this.$emit("session-error",{message:"Failed to load study card",error:n})}else console.error("[StudySession] Cannot load card: session controller not initialized"),this.$emit("session-error",{message:"Study session initialization failed"})},countCardViews(e,t){return this.sessionRecord.filter((n=>n.card.course_id===e&&n.card.card_id===t)).length},async processResponse(e){let t;this.$emit("card-response",e),this.timerIsActive=!0,e.cardID=this.cardID,e.courseID=this.courseID,this.currentCard.records.push(e),console.log("[StudySession] StudySession.processResponse is running...");try{t=this.logCardRecord(e)}catch(i){console.log(`Caught ${i} during putCardHistory...`)}let n=1,o=1;if(te(this.$refs.cardViewer?.$refs.activeView)){const e=this.$refs.cardViewer.$refs.activeView;n=e.maxAttemptsPerView,o=e.maxSessionViews}const r=this.countCardViews(this.courseID,this.cardID),a=await this.sessionController.submitResponse(e,t,this.userCourseRegDoc,this.currentCard,this.courseID,this.cardID,n,o,r);try{this.handleUIFeedback(a)}catch(s){console.error(`[StudySession] Error handling UI feedback: ${s}.\n\nResult: ${JSON.stringify(a)}`)}a.shouldLoadNextCard&&this.loadCard(await this.sessionController.nextCard(a.nextCardAction)),a.shouldClearFeedbackShadow&&this.clearFeedbackShadow()},handleUIFeedback(e){if(e.isCorrect){try{this.$refs.shadowWrapper&&void 0!==e.performanceScore&&(this.$refs.shadowWrapper.setAttribute("style",`--r: ${255*(1-e.performanceScore)}; --g:255`),this.$refs.shadowWrapper.classList.add("correct"))}catch(t){console.warn(`[StudySession] Error setting shadowWrapper style: ${t}`)}this.sessionConfig.likesConfetti&&Je({origin:{y:1,x:.25+.5*Math.random()},disableForReducedMotion:!0,angle:60+60*Math.random()})}else try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.add("incorrect")}catch(t){console.warn(`[StudySession] Error setting shadowWrapper style: ${t}`)}},clearFeedbackShadow(){setTimeout((()=>{try{this.$refs.shadowWrapper&&this.$refs.shadowWrapper.classList.remove("correct","incorrect")}catch(e){console.warn(`[StudySession] Error clearing shadowWrapper style: ${e}`)}}),1250)},async logCardRecord(e){console.log("[StudySession] About to call user.putCardRecord...");const t=await this.user.putCardRecord(e);return console.log("[StudySession] user.putCardRecord completed"),t},async loadCard(e){if(this.loading)console.warn("Attempted to load card while loading another...");else{if(console.log(`[StudySession] loading: ${JSON.stringify(e)}`),null===e)return this.sessionFinished=!0,void this.$emit("session-finished",this.sessionRecord);this.cardType=e.item.status,this.loading=!0;try{this.cardCount++,this.data=e.data,this.view=t.markRaw(e.view),this.cardID=e.item.cardID,this.courseID=e.item.courseID,this.card_elo=e.item.elo||1e3,this.sessionRecord.push({card:{course_id:e.item.courseID,card_id:e.item.cardID,card_elo:this.card_elo},item:e.item,records:[]}),this.$emit("card-loaded",{courseID:e.item.courseID,cardID:e.item.cardID,cardCount:this.cardCount})}catch(n){console.warn(`[StudySession] Error loading card ${JSON.stringify(e)}:\n\t${JSON.stringify(n)}, ${n}`),this.loading=!1;const t=n;r.docIsDeleted(t)&&r.isReview(e.item)&&(console.warn(`Card was deleted: ${e.item.courseID}::${e.item.cardID}`),this.user.removeScheduledCardReview(e.item.reviewID)),this.loadCard(await this.sessionController.nextCard("dismiss-error"))}finally{this.loading=!1}}}}}),et={key:0,class:"StudySession"},tt={key:1,class:"text-h4"},nt={key:0},ot={key:2,ref:"shadowWrapper"},rt={key:3};const at=p(Xe,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-progress-circular"),c=t.resolveComponent("v-row"),d=t.resolveComponent("session-controller-debug"),u=t.resolveComponent("heat-map"),p=t.resolveComponent("card-viewer"),h=t.resolveComponent("StudySessionTimer"),m=t.resolveComponent("v-col"),g=t.resolveComponent("SkMouseTrap");return e.sessionPrepared?(t.openBlock(),t.createElementBlock("div",et,[t.createVNode(c,{align:"center"},{default:t.withCtx((()=>[t.createVNode(s),e.loading?(t.openBlock(),t.createBlock(l,{key:0,color:"primary",indeterminate:"",size:"32",width:"4"})):t.createCommentVNode("",!0)])),_:1}),e.debugMode?(t.openBlock(),t.createBlock(d,{key:0,"session-controller":e.sessionController},null,8,["session-controller"])):t.createCommentVNode("",!0),n[2]||(n[2]=t.createElementVNode("br",null,null,-1)),e.sessionFinished?(t.openBlock(),t.createElementBlock("div",tt,[n[1]||(n[1]=t.createElementVNode("p",null,"Study session finished! Great job!",-1)),e.sessionController?(t.openBlock(),t.createElementBlock("p",nt,t.toDisplayString(e.sessionController.report),1)):t.createCommentVNode("",!0),t.createVNode(u,{"activity-records-getter":()=>e.user.getActivityRecords()},null,8,["activity-records-getter"])])):(t.openBlock(),t.createElementBlock("div",ot,[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[(t.openBlock(),t.createBlock(p,{ref:"cardViewer",key:e.cardID,class:t.normalizeClass(e.loading?"muted":""),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.cardCount,user_elo:e.user_elo(e.courseID),card_elo:e.card_elo,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,8,["class","view","data","card_id","course_id","session-order","user_elo","card_elo"]))])),_:1})],512)),n[3]||(n[3]=t.createElementVNode("br",null,null,-1)),e.sessionController?(t.openBlock(),t.createElementBlock("div",rt,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.sessionController.failedCount,(e=>(t.openBlock(),t.createElementBlock("span",{key:e,class:"text-h5"},"•")))),128))])):t.createCommentVNode("",!0),t.createVNode(c,{align:"center",class:"footer-controls pa-5"},{default:t.withCtx((()=>[t.createVNode(m,{cols:"auto",class:"d-flex flex-grow-0 mr-auto"},{default:t.withCtx((()=>[t.createVNode(h,{"time-remaining":e.timeRemaining,"session-time-limit":e.sessionTimeLimit,onAddTime:e.incrementSessionClock},null,8,["time-remaining","session-time-limit","onAddTime"])])),_:1}),t.createVNode(s),t.createVNode(m,{cols:"auto",class:"footer-right"},{default:t.withCtx((()=>[t.createVNode(g)])),_:1})])),_:1})])):t.createCommentVNode("",!0)}],["__scopeId","data-v-dc537be7"]]);let it=null;const st=()=>it,lt={install(e,t){const n=t?.pinia;n&&(e=>{it=e})(n)}},ct=()=>{const e=st();return e&&a.setActivePinia(e),a.defineStore("previewMode",{state:()=>({previewMode:!1}),actions:{setPreviewMode(e){this.previewMode=e}},getters:{isPreviewMode(){return this.previewMode}}})()},dt=t.defineComponent({name:"UserInput",data:()=>({answer:"",previewModeStore:null}),mounted(){this.previewModeStore=ct()},computed:{autofocus(){return!this.previewModeStore?.previewMode},autoFocus(){return this.autofocus}},methods:{submitAnswer(e){return this.submit(e)},submit(e){return this.getQuestionViewAncestor().submitAnswer(e,this.$options.name??"UserInput")},getQuestionViewAncestor(){let e=this.$parent,t=0;for(;e&&!te(e);){const n=e.$parent;if(!n){const e="\nUserInput.submit() has failed.\nThe input element has no QuestionView ancestor element.";throw o.log(e),new Error(e)}if(e=n,t++,t>100){const e="\nUserInput.submit() has failed.\nExceeded maximum ancestor lookup depth.";throw o.log(e),new Error(e)}}if(!e)throw new Error("No QuestionView ancestor found");return e}}});const ut=p(t.defineComponent({name:"MultipleChoiceOption",components:{MarkdownRenderer:t.defineAsyncComponent((()=>Promise.resolve().then((()=>rr))))},props:{content:{type:String,required:!0},selected:{type:Boolean,required:!0},number:{type:Number,required:!0},setSelection:{type:Function,required:!0},submit:{type:Function,required:!0},markedWrong:{type:Boolean,required:!0}},computed:{className(){let e;switch(this.number){case 0:e="bg-red";break;case 1:e="bg-purple";break;case 2:e="bg-indigo";break;case 3:e="bg-light-blue";break;case 4:e="bg-teal";break;case 5:e="bg-deep-orange";break;default:e="bg-grey"}if(this.selected&&!this.markedWrong)return`choice selected ${e} lighten-3 elevation-8`;if(this.selected||this.markedWrong){if(this.selected&&this.markedWrong)return"choice selected grey lighten-2 elevation-8";if(!this.selected&&this.markedWrong)return"choice not-selected grey lighten-2 elevation-0";throw new Error("'selected' and 'markedWrong' props in MultipleChoiceOption are in an impossible configuration.")}return`choice not-selected ${e} lighten-4 elevation-1`}},methods:{select(){this.setSelection(this.number)},submitThisOption(){this.markedWrong||(this.select(),this.submit())}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("markdown-renderer"),l=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(l,{class:t.normalizeClass(`${e.className}`),onMouseover:e.select,onClick:e.submitThisOption},{default:t.withCtx((()=>[t.createVNode(s,{md:e.content},null,8,["md"])])),_:1},8,["class","onMouseover","onClick"])}],["__scopeId","data-v-96de7172"]]),pt=t.defineComponent({name:"RadioMultipleChoice",components:{MultipleChoiceOption:ut},extends:dt,props:{choiceList:{type:Array,required:!0}},data:()=>({currentSelection:-1,incorrectSelections:[],containerRef:null,_registeredHotkeys:[]}),watch:{choiceList:{immediate:!0,handler(e){e?.length&&this.bindKeys()}}},mounted(){this.containerRef&&this.containerRef.focus()},unmounted(){this.unbindKeys()},methods:{forwardSelection(){if(!this.choiceIsWrong(this.choiceList[this.currentSelection])&&-1!==this.currentSelection){const e={choiceList:this.choiceList,selection:this.currentSelection};this.submitAnswer(e).isCorrect||this.incorrectSelections.push(this.currentSelection)}},setSelection(e){e<this.choiceList.length&&(this.currentSelection=e)},incrementSelection(){-1===this.currentSelection?this.currentSelection=Math.ceil(this.choiceList.length/2):this.currentSelection=Math.min(this.choiceList.length-1,this.currentSelection+1)},decrementSelection(){-1===this.currentSelection?this.currentSelection=Math.floor(this.choiceList.length/2-1):this.currentSelection=Math.max(0,this.currentSelection-1)},choiceIsWrong(e){let t=!1;return this.incorrectSelections.forEach((n=>{this.choiceList[n]===e&&(t=!0)})),t},bindKeys(){const e=[{hotkey:"left",callback:this.decrementSelection,command:"Move selection left"},{hotkey:"right",callback:this.incrementSelection,command:"Move selection right"},{hotkey:"enter",callback:this.forwardSelection,command:"Submit selection"},...Array.from({length:this.choiceList.length},((e,t)=>({hotkey:(t+1).toString(),callback:()=>this.setSelection(t),command:`Select ${(e=>{switch(e){case 0:return"first";case 1:return"second";case 2:return"third";case 3:return"fourth";case 4:return"fifth";case 5:return"sixth";default:return`${e+1}th`}})(t)} option`})))];_.addBinding(e),this._registeredHotkeys=e.map((e=>e.hotkey))},unbindKeys(){this._registeredHotkeys&&this._registeredHotkeys.forEach((e=>{_.removeBinding(e)}))}}}),ht={ref:"containerRef",class:"multipleChoice"};const mt=p(pt,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("MultipleChoiceOption");return t.openBlock(),t.createElementBlock("div",ht,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.choiceList,((n,o)=>(t.openBlock(),t.createBlock(s,{key:o,content:n,selected:e.choiceList.indexOf(n)===e.currentSelection,number:e.choiceList.indexOf(n),"set-selection":e.setSelection,submit:e.forwardSelection,"marked-wrong":e.choiceIsWrong(n)},null,8,["content","selected","number","set-selection","submit","marked-wrong"])))),128))],512)}]]),gt=t.defineComponent({name:"TrueFalse",components:{RadioMultipleChoice:mt},props:{MouseTrap:{type:Object,required:!0},submit:{type:Function,required:!0}}}),ft={"data-viewable":"TrueFalse"};const kt=p(gt,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("RadioMultipleChoice");return t.openBlock(),t.createElementBlock("div",ft,[t.createVNode(s,{"choice-list":["True","False"],MouseTrap:e.MouseTrap,submit:e.submit},null,8,["MouseTrap","submit"])])}]]);const bt=p(t.defineComponent({name:"UserInputNumber",ref:{},extends:dt,methods:{mounted(){this.$refs.input.focus()},isNumeric:e=>!isNaN(Number.parseFloat(e)),makeNumeric(e){if("string"==typeof e)return Number.parseFloat(e);throw new Error("Expected a string, got "+typeof e)}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-text-field"),l=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(l,{class:"pa-0"},{default:t.withCtx((()=>[t.createVNode(s,{ref:"input",modelValue:e.answer,"onUpdate:modelValue":n[0]||(n[0]=t=>e.answer=t),"prepend-icon":"edit",autofocus:e.autofocus,"row-height":"24","toggle-keys":"[13,32]",class:"text-h5",rules:[e.isNumeric],onKeyup:n[1]||(n[1]=t.withKeys((t=>e.submitAnswer(e.makeNumeric(e.answer))),["enter"]))},null,8,["modelValue","autofocus","rules"])])),_:1})}],["__scopeId","data-v-a56dcd1c"]]),yt=t.defineComponent({name:"UserInputString",extends:dt,props:{icon:{type:Boolean,required:!1}},computed:{prependIcon(){return this.icon?"edit":""}},mounted(){this.$refs.input?.focus()},methods:{}}),vt={class:"user-input-container"},wt=["autofocus"];const xt=p(yt,[["render",function(e,n,o,r,a,i){return t.openBlock(),t.createElementBlock("span",vt,[t.withDirectives(t.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=t=>e.answer=t),autofocus:e.autofocus,type:"text",class:"user-input-string",ref:"input",onKeyup:n[1]||(n[1]=t.withKeys((t=>e.submitAnswer(e.answer)),["enter"]))},null,40,wt),[[t.vModelText,e.answer]])])}],["__scopeId","data-v-aa14961f"]]),Ct=t.defineComponent({name:"FillInInput",components:{UserInputString:xt},props:{text:{type:String,required:!0}},setup(e){const n=t.ref("text"),o=t.ref(""),r=t.computed((()=>e.text.split("||").length>1));return t.onMounted((()=>{console.log(`fillinCreated w/ text: ${e.text}`),o.value=e.text.substring(2,e.text.length-2),console.log(`fillin text trimmed to: ${o.value}`);o.value.split("||").length>1&&(n.value="radio")})),{inputType:n,radioType:r,processedText:o}}}),St={key:0,class:"text-h5 underline"};const _t=p(Ct,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("user-input-string");return e.radioType?(t.openBlock(),t.createElementBlock("span",St," ")):(t.openBlock(),t.createBlock(s,{key:1,id:"input",icon:!1,type:"text",value:e.processedText},null,8,["value"]))}],["__scopeId","data-v-486ac035"]]);const Nt=p(t.defineComponent({name:"CardLoader",components:{CardViewer:ce},props:{sessionOrder:{type:Number,required:!1,default:0},qualified_id:{type:Object,required:!0},viewLookup:{type:Function,required:!0}},data:()=>({loading:!0,view:null,data:[],courseID:"",cardID:""}),created(){this.loadCard()},watch:{qualified_id:{immediate:!0,handler(){this.loadCard()}}},methods:{processResponse(e){o.log(`\n Card was displayed at ${e.timeStamp}\n User spent ${e.timeSpent} milliseconds with the card.\n `),this.$emit("emitResponse",e)},async loadCard(){const e=this.qualified_id;console.log(`Card Loader displaying: ${e.courseID}::${e.cardID}`),this.loading=!0;const n=e.courseID,a=e.cardID,i=r.getDataLayer().getCourseDB(n);try{const e=await i.getCourseDoc(a),r=this.viewLookup(e.id_view),s=e.id_displayable_data.map((e=>i.getCourseDoc(e,{attachments:!0,binary:!0}))),l=[];for(const t of s){const e=await t;l.unshift(o.displayableDataToViewData(e))}this.data=l,this.view=t.markRaw(r),this.cardID=a,this.courseID=n}catch(s){throw new Error(`[CardLoader] Error loading card: ${JSON.stringify(s)}, ${s}`)}finally{this.loading=!1,this.$emit("card-loaded")}}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("card-viewer");return e.loading?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(s,{key:0,class:t.normalizeClass(["ma-2",e.loading?"muted":""]),view:e.view,data:e.data,card_id:e.cardID,course_id:e.courseID,"session-order":e.sessionOrder,onEmitResponse:n[0]||(n[0]=t=>e.processResponse(t))},null,8,["class","view","data","card_id","course_id","session-order"]))}],["__scopeId","data-v-93f758b5"]]);function Et(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let Bt={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function Tt(e){Bt=e}const Vt={exec:()=>null};function Rt(e,t=""){let n="string"==typeof e?e:e.source;const o={replace:(e,t)=>{let r="string"==typeof t?t:t.source;return r=r.replace(It.caret,"$1"),n=n.replace(e,r),o},getRegex:()=>new RegExp(n,t)};return o}const It={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},At=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Mt=/(?:[*+-]|\d{1,9}[.)])/,Dt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Lt=Rt(Dt).replace(/bull/g,Mt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),$t=Rt(Dt).replace(/bull/g,Mt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ot=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Pt=/(?!\s*\])(?:\\.|[^\[\]\\])+/,zt=Rt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Pt).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),jt=Rt(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Mt).getRegex(),Ft="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ut=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,qt=Rt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Ut).replace("tag",Ft).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ht=Rt(Ot).replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex(),Zt={blockquote:Rt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ht).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:zt,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:At,html:qt,lheading:Lt,list:jt,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:Ht,table:Vt,text:/^[^\n]+/},Kt=Rt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex(),Gt={...Zt,lheading:$t,table:Kt,paragraph:Rt(Ot).replace("hr",At).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Kt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ft).getRegex()},Wt={...Zt,html:Rt("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ut).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Vt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Rt(Ot).replace("hr",At).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Lt).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Qt=/^( {2,}|\\)\n(?!\s*$)/,Yt=/[\p{P}\p{S}]/u,Jt=/[\s\p{P}\p{S}]/u,Xt=/[^\s\p{P}\p{S}]/u,en=Rt(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Jt).getRegex(),tn=/(?!~)[\p{P}\p{S}]/u,nn=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,on=Rt(nn,"u").replace(/punct/g,Yt).getRegex(),rn=Rt(nn,"u").replace(/punct/g,tn).getRegex(),an="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",sn=Rt(an,"gu").replace(/notPunctSpace/g,Xt).replace(/punctSpace/g,Jt).replace(/punct/g,Yt).getRegex(),ln=Rt(an,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,tn).getRegex(),cn=Rt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Xt).replace(/punctSpace/g,Jt).replace(/punct/g,Yt).getRegex(),dn=Rt(/\\(punct)/,"gu").replace(/punct/g,Yt).getRegex(),un=Rt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),pn=Rt(Ut).replace("(?:--\x3e|$)","--\x3e").getRegex(),hn=Rt("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",pn).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),mn=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,gn=Rt(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",mn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),fn=Rt(/^!?\[(label)\]\[(ref)\]/).replace("label",mn).replace("ref",Pt).getRegex(),kn=Rt(/^!?\[(ref)\](?:\[\])?/).replace("ref",Pt).getRegex(),bn={_backpedal:Vt,anyPunctuation:dn,autolink:un,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,br:Qt,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:Vt,emStrongLDelim:on,emStrongRDelimAst:sn,emStrongRDelimUnd:cn,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:gn,nolink:kn,punctuation:en,reflink:fn,reflinkSearch:Rt("reflink|nolink(?!\\()","g").replace("reflink",fn).replace("nolink",kn).getRegex(),tag:hn,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:Vt},yn={...bn,link:Rt(/^!?\[(label)\]\((.*?)\)/).replace("label",mn).getRegex(),reflink:Rt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",mn).getRegex()},vn={...bn,emStrongRDelimAst:ln,emStrongLDelim:rn,url:Rt(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},wn={...vn,br:Rt(Qt).replace("{2,}","*").getRegex(),text:Rt(vn.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},xn={normal:Zt,gfm:Gt,pedantic:Wt},Cn={normal:bn,gfm:vn,breaks:wn,pedantic:yn},Sn={"&":"&","<":"<",">":">",'"':""","'":"'"},_n=e=>Sn[e];function Nn(e,t){if(t){if(It.escapeTest.test(e))return e.replace(It.escapeReplace,_n)}else if(It.escapeTestNoEncode.test(e))return e.replace(It.escapeReplaceNoEncode,_n);return e}function En(e){try{e=encodeURI(e).replace(It.percentDecode,"%")}catch{return null}return e}function Bn(e,t){const n=e.replace(It.findPipe,((e,t,n)=>{let o=!1,r=t;for(;--r>=0&&"\\"===n[r];)o=!o;return o?"|":" |"})).split(It.splitPipe);let o=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;o<n.length;o++)n[o]=n[o].trim().replace(It.slashPipe,"|");return n}function Tn(e,t,n){const o=e.length;if(0===o)return"";let r=0;for(;r<o;){if(e.charAt(o-r-1)!==t)break;r++}return e.slice(0,o-r)}function Vn(e,t,n,o,r){const a=t.href,i=t.title||null,s=e[1].replace(r.other.outputLinkReplace,"$1");if("!"!==e[0].charAt(0)){o.state.inLink=!0;const e={type:"link",raw:n,href:a,title:i,text:s,tokens:o.inlineTokens(s)};return o.state.inLink=!1,e}return{type:"image",raw:n,href:a,title:i,text:s}}class _Tokenizer{constructor(e){c(this,"options"),c(this,"rules"),c(this,"lexer"),this.options=e||Bt}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Tn(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t,n){const o=e.match(n.other.indentCodeCompensation);if(null===o)return t;const r=o[1];return t.split("\n").map((e=>{const t=e.match(n.other.beginningSpace);if(null===t)return e;const[o]=t;return o.length>=r.length?e.slice(r.length):e})).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){const t=Tn(e,"#");this.options.pedantic?e=t.trim():t&&!this.rules.other.endingSpaceChar.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Tn(t[0],"\n")}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=Tn(t[0],"\n").split("\n"),n="",o="";const r=[];for(;e.length>0;){let t=!1;const a=[];let i;for(i=0;i<e.length;i++)if(this.rules.other.blockquoteStart.test(e[i]))a.push(e[i]),t=!0;else{if(t)break;a.push(e[i])}e=e.slice(i);const s=a.join("\n"),l=s.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}\n${s}`:s,o=o?`${o}\n${l}`:l;const c=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,r,!0),this.lexer.state.top=c,0===e.length)break;const d=r.at(-1);if("code"===d?.type)break;if("blockquote"===d?.type){const t=d,a=t.raw+"\n"+e.join("\n"),i=this.blockquote(a);r[r.length-1]=i,n=n.substring(0,n.length-t.raw.length)+i.raw,o=o.substring(0,o.length-t.text.length)+i.text;break}if("list"!==d?.type);else{const t=d,a=t.raw+"\n"+e.join("\n"),i=this.list(a);r[r.length-1]=i,n=n.substring(0,n.length-d.raw.length)+i.raw,o=o.substring(0,o.length-t.raw.length)+i.raw,e=a.substring(r.at(-1).raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:r,text:o}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const o=n.length>1,r={type:"list",raw:"",ordered:o,start:o?+n.slice(0,-1):"",loose:!1,items:[]};n=o?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=o?n:"[*+-]");const a=this.rules.other.listItemRegex(n);let i=!1;for(;e;){let n=!1,o="",s="";if(!(t=a.exec(e)))break;if(this.rules.block.hr.test(e))break;o=t[0],e=e.substring(o.length);let l=t[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],d=!l.trim(),u=0;if(this.options.pedantic?(u=2,s=l.trimStart()):d?u=t[1].length+1:(u=t[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,s=l.slice(u),u+=t[1].length),d&&this.rules.other.blankLine.test(c)&&(o+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=this.rules.other.nextBulletRegex(u),n=this.rules.other.hrRegex(u),r=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),i=this.rules.other.htmlBeginRegex(u);for(;e;){const p=e.split("\n",1)[0];let h;if(c=p,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),h=c):h=c.replace(this.rules.other.tabCharGlobal," "),r.test(c))break;if(a.test(c))break;if(i.test(c))break;if(t.test(c))break;if(n.test(c))break;if(h.search(this.rules.other.nonSpaceChar)>=u||!c.trim())s+="\n"+h.slice(u);else{if(d)break;if(l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4)break;if(r.test(l))break;if(a.test(l))break;if(n.test(l))break;s+="\n"+c}d||c.trim()||(d=!0),o+=p+"\n",e=e.substring(p.length+1),l=h.slice(u)}}r.loose||(i?r.loose=!0:this.rules.other.doubleBlankLine.test(o)&&(i=!0));let p,h=null;this.options.gfm&&(h=this.rules.other.listIsTask.exec(s),h&&(p="[ ] "!==h[0],s=s.replace(this.rules.other.listReplaceTask,""))),r.items.push({type:"list_item",raw:o,task:!!h,checked:p,loose:!1,text:s,tokens:[]}),r.raw+=o}const s=r.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e<r.items.length;e++)if(this.lexer.state.top=!1,r.items[e].tokens=this.lexer.blockTokens(r.items[e].text,[]),!r.loose){const t=r.items[e].tokens.filter((e=>"space"===e.type)),n=t.length>0&&t.some((e=>this.rules.other.anyLine.test(e.raw)));r.loose=n}if(r.loose)for(let e=0;e<r.items.length;e++)r.items[e].loose=!0;return r}}html(e){const t=this.rules.block.html.exec(e);if(t){return{type:"html",block:!0,raw:t[0],pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:t[0]}}}def(e){const t=this.rules.block.def.exec(e);if(t){const e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",o=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:o}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!this.rules.other.tableDelimiter.test(t[2]))return;const n=Bn(t[1]),o=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],a={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===o.length){for(const e of o)this.rules.other.tableAlignRight.test(e)?a.align.push("right"):this.rules.other.tableAlignCenter.test(e)?a.align.push("center"):this.rules.other.tableAlignLeft.test(e)?a.align.push("left"):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(const e of r)a.rows.push(Bn(e,a.header.length).map(((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]}))));return a}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;const t=Tn(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let o=0;o<e.length;o++)if("\\"===e[o])o++;else if(e[o]===t[0])n++;else if(e[o]===t[1]&&(n--,n<0))return o;return-1}(t[2],"()");if(e>-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],o="";if(this.options.pedantic){const e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],o=e[3])}else o=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),Vn(t,{href:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n,title:o?o.replace(this.rules.inline.anyPunctuation,"$1"):o},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return Vn(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let o=this.rules.inline.emStrongLDelim.exec(e);if(!o)return;if(o[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(o[1]||o[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const n=[...o[0]].length-1;let r,a,i=n,s=0;const l="*"===o[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+n);null!=(o=l.exec(t));){if(r=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!r)continue;if(a=[...r].length,o[3]||o[4]){i+=a;continue}if((o[5]||o[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(i-=a,i>0)continue;a=Math.min(a,a+i+s);const t=[...o[0]][0].length,l=e.slice(0,n+o.index+t+a);if(Math.min(n,a)%2){const e=l.slice(1,-1);return{type:"em",raw:l,text:e,tokens:this.lexer.inlineTokens(e)}}const c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," ");const n=this.rules.other.nonSpaceChar.test(e),o=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&o&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let o;do{o=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(o!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){const e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}}class _Lexer{constructor(e){c(this,"tokens"),c(this,"options"),c(this,"state"),c(this,"tokenizer"),c(this,"inlineQueue"),this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Bt,this.options.tokenizer=this.options.tokenizer||new _Tokenizer,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const t={other:It,block:xn.normal,inline:Cn.normal};this.options.pedantic?(t.block=xn.pedantic,t.inline=Cn.pedantic):this.options.gfm&&(t.block=xn.gfm,this.options.breaks?t.inline=Cn.breaks:t.inline=Cn.gfm),this.tokenizer.rules=t}static get rules(){return{block:xn,inline:Cn}}static lex(e,t){return new _Lexer(t).lex(e)}static lexInline(e,t){return new _Lexer(t).inlineTokens(e)}lex(e){e=e.replace(It.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){const e=this.inlineQueue[t];this.inlineTokens(e.src,e.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(It.tabCharGlobal," ").replace(It.spaceLine,""));e;){let o;if(this.options.extensions?.block?.some((n=>!!(o=n.call({lexer:this},e,t))&&(e=e.substring(o.raw.length),t.push(o),!0))))continue;if(o=this.tokenizer.space(e)){e=e.substring(o.raw.length);const n=t.at(-1);1===o.raw.length&&void 0!==n?n.raw+="\n":t.push(o);continue}if(o=this.tokenizer.code(e)){e=e.substring(o.raw.length);const n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+="\n"+o.raw,n.text+="\n"+o.text,this.inlineQueue.at(-1).src=n.text):t.push(o);continue}if(o=this.tokenizer.fences(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.heading(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.hr(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.blockquote(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.list(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.html(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.def(e)){e=e.substring(o.raw.length);const n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+="\n"+o.raw,n.text+="\n"+o.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title});continue}if(o=this.tokenizer.table(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.lheading(e)){e=e.substring(o.raw.length),t.push(o);continue}let r=e;if(this.options.extensions?.startBlock){let t=1/0;const n=e.slice(1);let o;this.options.extensions.startBlock.forEach((e=>{o=e.call({lexer:this},n),"number"==typeof o&&o>=0&&(t=Math.min(t,o))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(this.state.top&&(o=this.tokenizer.paragraph(r))){const a=t.at(-1);n&&"paragraph"===a?.type?(a.raw+="\n"+o.raw,a.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(o),n=r.length!==e.length,e=e.substring(o.raw.length)}else if(o=this.tokenizer.text(e)){e=e.substring(o.raw.length);const n=t.at(-1);"text"===n?.type?(n.raw+="\n"+o.raw,n.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(o)}else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,o=null;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(o=this.tokenizer.rules.inline.reflinkSearch.exec(n));)e.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(o=this.tokenizer.rules.inline.blockSkip.exec(n));)n=n.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(o=this.tokenizer.rules.inline.anyPunctuation.exec(n));)n=n.slice(0,o.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r=!1,a="";for(;e;){let o;if(r||(a=""),r=!1,this.options.extensions?.inline?.some((n=>!!(o=n.call({lexer:this},e,t))&&(e=e.substring(o.raw.length),t.push(o),!0))))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);const n=t.at(-1);"text"===o.type&&"text"===n?.type?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0;const n=e.slice(1);let o;this.options.extensions.startInline.forEach((e=>{o=e.call({lexer:this},n),"number"==typeof o&&o>=0&&(t=Math.min(t,o))})),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(i)){e=e.substring(o.raw.length),"_"!==o.raw.slice(-1)&&(a=o.raw.slice(-1)),r=!0;const n=t.at(-1);"text"===n?.type?(n.raw+=o.raw,n.text+=o.text):t.push(o)}else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return t}}class _Renderer{constructor(e){c(this,"options"),c(this,"parser"),this.options=e||Bt}space(e){return""}code({text:e,lang:t,escaped:n}){const o=(t||"").match(It.notSpaceStart)?.[0],r=e.replace(It.endingNewline,"")+"\n";return o?'<pre><code class="language-'+Nn(o)+'">'+(n?r:Nn(r,!0))+"</code></pre>\n":"<pre><code>"+(n?r:Nn(r,!0))+"</code></pre>\n"}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return"<hr>\n"}list(e){const t=e.ordered,n=e.start;let o="";for(let a=0;a<e.items.length;a++){const t=e.items[a];o+=this.listitem(t)}const r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+o+"</"+r+">\n"}listitem(e){let t="";if(e.task){const n=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===e.tokens[0]?.type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+Nn(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t="",n="";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let o="";for(let r=0;r<e.rows.length;r++){const t=e.rows[r];n="";for(let e=0;e<t.length;e++)n+=this.tablecell(t[e]);o+=this.tablerow({text:n})}return o&&(o=`<tbody>${o}</tbody>`),"<table>\n<thead>\n"+t+"</thead>\n"+o+"</table>\n"}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){const t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Nn(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){const o=this.parser.parseInline(n),r=En(e);if(null===r)return o;let a='<a href="'+(e=r)+'"';return t&&(a+=' title="'+Nn(t)+'"'),a+=">"+o+"</a>",a}image({href:e,title:t,text:n}){const o=En(e);if(null===o)return Nn(n);let r=`<img src="${e=o}" alt="${n}"`;return t&&(r+=` title="${Nn(t)}"`),r+=">",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Nn(e.text)}}class _TextRenderer{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}}class _Parser{constructor(e){c(this,"options"),c(this,"renderer"),c(this,"textRenderer"),this.options=e||Bt,this.options.renderer=this.options.renderer||new _Renderer,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new _TextRenderer}static parse(e,t){return new _Parser(t).parse(e)}static parseInline(e,t){return new _Parser(t).parseInline(e)}parse(e,t=!0){let n="";for(let o=0;o<e.length;o++){const r=e[o];if(this.options.extensions?.renderers?.[r.type]){const e=r,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(e.type)){n+=t||"";continue}}const a=r;switch(a.type){case"space":n+=this.renderer.space(a);continue;case"hr":n+=this.renderer.hr(a);continue;case"heading":n+=this.renderer.heading(a);continue;case"code":n+=this.renderer.code(a);continue;case"table":n+=this.renderer.table(a);continue;case"blockquote":n+=this.renderer.blockquote(a);continue;case"list":n+=this.renderer.list(a);continue;case"html":n+=this.renderer.html(a);continue;case"paragraph":n+=this.renderer.paragraph(a);continue;case"text":{let r=a,i=this.renderer.text(r);for(;o+1<e.length&&"text"===e[o+1].type;)r=e[++o],i+="\n"+this.renderer.text(r);n+=t?this.renderer.paragraph({type:"paragraph",raw:i,text:i,tokens:[{type:"text",raw:i,text:i,escaped:!0}]}):i;continue}default:{const e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}parseInline(e,t=this.renderer){let n="";for(let o=0;o<e.length;o++){const r=e[o];if(this.options.extensions?.renderers?.[r.type]){const e=this.options.extensions.renderers[r.type].call({parser:this},r);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type)){n+=e||"";continue}}const a=r;switch(a.type){case"escape":case"text":n+=t.text(a);break;case"html":n+=t.html(a);break;case"link":n+=t.link(a);break;case"image":n+=t.image(a);break;case"strong":n+=t.strong(a);break;case"em":n+=t.em(a);break;case"codespan":n+=t.codespan(a);break;case"br":n+=t.br(a);break;case"del":n+=t.del(a);break;default:{const e='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}}class _Hooks{constructor(e){c(this,"options"),c(this,"block"),this.options=e||Bt}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?_Lexer.lex:_Lexer.lexInline}provideParser(){return this.block?_Parser.parse:_Parser.parseInline}}c(_Hooks,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"]));const Rn=new class Marked{constructor(...e){c(this,"defaults",{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}),c(this,"options",this.setOptions),c(this,"parse",this.parseMarkdown(!0)),c(this,"parseInline",this.parseMarkdown(!1)),c(this,"Parser",_Parser),c(this,"Renderer",_Renderer),c(this,"TextRenderer",_TextRenderer),c(this,"Lexer",_Lexer),c(this,"Tokenizer",_Tokenizer),c(this,"Hooks",_Hooks),this.use(...e)}walkTokens(e,t){let n=[];for(const o of e)switch(n=n.concat(t.call(this,o)),o.type){case"table":{const e=o;for(const o of e.header)n=n.concat(this.walkTokens(o.tokens,t));for(const o of e.rows)for(const e of o)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{const e=o;n=n.concat(this.walkTokens(e.items,t));break}default:{const e=o;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach((o=>{const r=e[o].flat(1/0);n=n.concat(this.walkTokens(r,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let o=e.renderer.apply(this,t);return!1===o&&(o=n.apply(this,t)),o}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new _Renderer(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;const o=n,r=e.renderer[o],a=t[o];t[o]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=a.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new _Tokenizer(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;const o=n,r=e.tokenizer[o],a=t[o];t[o]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new _Hooks;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;const o=n,r=e.hooks[o],a=t[o];_Hooks.passThroughHooks.has(n)?t[o]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then((e=>a.call(t,e)));const n=r.call(t,e);return a.call(t,n)}:t[o]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,o=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(o.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return _Lexer.lex(e,t??this.defaults)}parser(e,t){return _Parser.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{const o={...n},r={...this.defaults,...o},a=this.onError(!!r.silent,!!r.async);if(!0===this.defaults.async&&!1===o.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(null==t)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);const i=r.hooks?r.hooks.provideLexer():e?_Lexer.lex:_Lexer.lexInline,s=r.hooks?r.hooks.provideParser():e?_Parser.parse:_Parser.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(t):t).then((e=>i(e,r))).then((e=>r.hooks?r.hooks.processAllTokens(e):e)).then((e=>r.walkTokens?Promise.all(this.walkTokens(e,r.walkTokens)).then((()=>e)):e)).then((e=>s(e,r))).then((e=>r.hooks?r.hooks.postprocess(e):e)).catch(a);try{r.hooks&&(t=r.hooks.preprocess(t));let e=i(t,r);r.hooks&&(e=r.hooks.processAllTokens(e)),r.walkTokens&&this.walkTokens(e,r.walkTokens);let n=s(e,r);return r.hooks&&(n=r.hooks.postprocess(n)),n}catch(l){return a(l)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="<p>An error occurred:</p><pre>"+Nn(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function In(e,t){return Rn.parse(e,t)}In.options=In.setOptions=function(e){return Rn.setOptions(e),In.defaults=Rn.defaults,Tt(In.defaults),In},In.getDefaults=Et,In.defaults=Bt,In.use=function(...e){return Rn.use(...e),In.defaults=Rn.defaults,Tt(In.defaults),In},In.walkTokens=function(e,t){return Rn.walkTokens(e,t)},In.parseInline=Rn.parseInline,In.Parser=_Parser,In.parser=_Parser.parse,In.Renderer=_Renderer,In.TextRenderer=_TextRenderer,In.Lexer=_Lexer,In.lexer=_Lexer.lex,In.Tokenizer=_Tokenizer,In.Hooks=_Hooks,In.parse=In,In.options,In.setOptions,In.use,In.walkTokens,In.parseInline,_Parser.parse;const An=_Lexer.lex;function Mn(e,t,n){if(0===e.length)return[];let o=[];const r=e.indexOf(t),a=e.indexOf(n,r);return r>=0&&a>r?(o.push(e.substring(0,r)),o.push(e.substring(r,a+n.length)),o=o.concat(Mn(e.substring(a+n.length),t,n)),o):[e]}function Dn(e){if($n(e)){const t=Mn(e.text,"{{","}}"),n=Mn(e.raw,"{{","}}");if(t.length===n.length)return t.map(((e,o)=>({type:"text",text:t[o],raw:n[o]})));throw new Error("Error parsing markdown")}return[e]}function Ln(e){let t=[];if($n(e)){const n=Mn(e.text,"{{","}}"),o=Mn(e.raw,"{{","}}");if(n.length===o.length){for(let e=0;e<n.length;e++){const r={type:"text",text:n[e],raw:o[e]};On(r)?t.push(r):An(o[e]).forEach((e=>{"paragraph"===e.type?t=t.concat(e.tokens):t.push(e)}))}return t}throw new Error("Error parsing Markdown")}return t.push(e),t}function $n(e){if("text"===e.type||"paragraph"===e.type){const t=e.raw.indexOf("{{"),n=e.raw.indexOf("}}");return-1!==t&&-1!==n&&n>t}return!1}function On(e){return"text"===e.type&&e.text.startsWith("{{")&&e.text.endsWith("}}")}function Pn(e){if(e.length>1e4)return null;const t=e.match(/^\{\{\s*<([\w-]+)((?:\s+[\w-]+="[^"]*")*)\s*\/>\s*\}\}$/);if(!t)return null;const n=t[1],o=t[2],r={};if(o){const e=/\s+([\w-]+)="([^"]*)"/g;let t;for(;null!==(t=e.exec(o));)r[t[1]]=t[2]}return{componentName:n,props:r}}const zn=p(t.defineComponent({__name:"AudioAutoPlayer",props:{src:{}},setup(e){const n=e,o=t.ref([]),r=t.ref([]),a=t.ref(!1);let i=null;const s=e=>{if((e=>{try{return!isNaN(o.value[e].duration)}catch(t){throw new Error("AudioPlayer does not have an element at this index:",t)}})(e))if(o.value[e].play(),e+1<o.value.length){const t=1e3*(o.value[e].duration+.7);r.value.push(setTimeout((()=>{a.value&&s(e+1)}),t))}else setTimeout((()=>{a.value=!1}),1e3*o.value[e].duration),setTimeout((()=>{i=null}),1e3*o.value[e].duration+500);else setTimeout(s,100,e)},l=()=>{null===i||i===t.getCurrentInstance()?(i=t.getCurrentInstance(),a.value=!0,s(0)):setTimeout(l,100)};return t.onMounted((()=>{i=null,"string"==typeof n.src?o.value.push(new Audio(n.src)):n.src.forEach((e=>{o.value.push(new Audio(e))}));const e=[{hotkey:"up",callback:l,command:"Replay Audio"}];_.addBinding(e),l()})),t.onBeforeUnmount((()=>{_.removeBinding("up"),a.value=!1,setTimeout((()=>{i=null}),500),r.value.forEach(clearTimeout),console.log("Audio stopping..."),o.value.forEach((e=>{e.paused||(e.pause(),e.currentTime=0)}))})),(e,n)=>{const o=t.resolveComponent("v-icon"),r=t.resolveComponent("v-btn");return t.openBlock(),t.createBlock(r,{size:"large",icon:"",color:a.value?"primary lighten-3":"primary",class:t.normalizeClass({playing:a.value}),onClick:l},{default:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-volume-high")]))),_:1})])),_:1},8,["color","class"])}}}),[["__scopeId","data-v-e1a0f62c"]]);var jn,Fn;function Un(){if(Fn)return jn;function e(t){return t instanceof Map?t.clear=t.delete=t.set=function(){throw new Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=function(){throw new Error("set is read-only")}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{const o=t[n],r=typeof o;"object"!==r&&"function"!==r||Object.isFrozen(o)||e(o)})),t}Fn=1;class Response{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function t(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function n(e,...t){const n=Object.create(null);for(const o in e)n[o]=e[o];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.scope;class HTMLRenderer{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;const t=((e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){o(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class TokenTree{constructor(){this.rootNode=r(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=r({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{TokenTree._collapse(e)})))}}class TokenTreeEmitter extends TokenTree{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function a(e){return e?"string"==typeof e?e:e.source:null}function i(e){return c("(?=",e,")")}function s(e){return c("(?:",e,")*")}function l(e){return c("(?:",e,")?")}function c(...e){return e.map((e=>a(e))).join("")}function d(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map((e=>a(e))).join("|")+")"}function u(e){return new RegExp(e.toString()+"|").exec("").length-1}const p=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function h(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let o=a(e),r="";for(;o.length>0;){const e=p.exec(o);if(!e){r+=o;break}r+=o.substring(0,e.index),o=o.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}const m="[a-zA-Z]\\w*",g="[a-zA-Z_]\\w*",f="\\b\\d+(\\.\\d+)?",k="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",b="\\b(0b[01]+)",y={begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[y]},w={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[y]},x=function(e,t,o={}){const r=n({scope:"comment",begin:e,end:t,contains:[]},o);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=d("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:c(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},C=x("//","$"),S=x("/\\*","\\*/"),_=x("#","$"),N={scope:"number",begin:f,relevance:0},E={scope:"number",begin:k,relevance:0},B={scope:"number",begin:b,relevance:0},T={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[y,{begin:/\[/,end:/\]/,relevance:0,contains:[y]}]},V={scope:"title",begin:m,relevance:0},R={scope:"title",begin:g,relevance:0},I={begin:"\\.\\s*"+g,relevance:0};var A=Object.freeze({__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:y,BINARY_NUMBER_MODE:B,BINARY_NUMBER_RE:b,COMMENT:x,C_BLOCK_COMMENT_MODE:S,C_LINE_COMMENT_MODE:C,C_NUMBER_MODE:E,C_NUMBER_RE:k,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:_,IDENT_RE:m,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:I,NUMBER_MODE:N,NUMBER_RE:f,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},QUOTE_STRING_MODE:w,REGEXP_MODE:T,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=c(t,/.*\b/,e.binary,/\b.*/)),n({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},TITLE_MODE:V,UNDERSCORE_IDENT_RE:g,UNDERSCORE_TITLE_MODE:R});function M(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function D(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=M,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function $(e,t){Array.isArray(e.illegal)&&(e.illegal=d(...e.illegal))}function O(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function P(e,t){void 0===e.relevance&&(e.relevance=1)}const z=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]})),e.keywords=n.keywords,e.begin=c(n.beforeMatch,i(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},j=["of","and","for","in","not","or","if","then","parent","list","value"];function F(e,t,n="keyword"){const o=Object.create(null);return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((function(n){Object.assign(o,F(e[n],t,n))})),o;function r(e,n){t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((function(t){const n=t.split("|");o[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){return t?Number(t):function(e){return j.includes(e.toLowerCase())}(e)?0:1}const q={},H=e=>{console.error(e)},Z=(e,...t)=>{console.log(`WARN: ${e}`,...t)},K=(e,t)=>{q[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),q[`${e}/${t}`]=!0)},G=new Error;function W(e,t,{key:n}){let o=0;const r=e[n],a={},i={};for(let s=1;s<=t.length;s++)i[s+o]=r[s],a[s+o]=!0,o+=u(t[s-1]);e[n]=i,e[n]._emit=a,e[n]._multi=!0}function Q(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw H("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),G;if("object"!=typeof e.beginScope||null===e.beginScope)throw H("beginScope must be object"),G;W(e,e.begin,{key:"beginScope"}),e.begin=h(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw H("skip, excludeEnd, returnEnd not compatible with endScope: {}"),G;if("object"!=typeof e.endScope||null===e.endScope)throw H("endScope must be object"),G;W(e,e.end,{key:"endScope"}),e.end=h(e.end,{joinWith:""})}}(e)}function Y(e){function t(t,n){return new RegExp(a(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=u(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=t(h(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),o=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,o)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new MultiRegex;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=n(e.classNameAliases||{}),function o(r,i){const s=r;if(r.isCompiled)return s;[D,O,Q,z].forEach((e=>e(r,i))),e.compilerExtensions.forEach((e=>e(r,i))),r.__beforeBegin=null,[L,$,P].forEach((e=>e(r,i))),r.isCompiled=!0;let l=null;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),l=r.keywords.$pattern,delete r.keywords.$pattern),l=l||/\w+/,r.keywords&&(r.keywords=F(r.keywords,e.case_insensitive)),s.keywordPatternRe=t(l,!0),i&&(r.begin||(r.begin=/\B|\b/),s.beginRe=t(s.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(s.endRe=t(s.end)),s.terminatorEnd=a(s.end)||"",r.endsWithParent&&i.terminatorEnd&&(s.terminatorEnd+=(r.end?"|":"")+i.terminatorEnd)),r.illegal&&(s.illegalRe=t(r.illegal)),r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return n(e,{variants:null},t)})));if(e.cachedVariants)return e.cachedVariants;if(J(e))return n(e,{starts:e.starts?n(e.starts):null});if(Object.isFrozen(e))return n(e);return e}("self"===e?r:e)}))),r.contains.forEach((function(e){o(e,s)})),r.starts&&o(r.starts,i),s.matcher=function(e){const t=new ResumableMultiRegex;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(s),s}(e)}function J(e){return!!e&&(e.endsWithParent||J(e.starts))}class HTMLInjectionError extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const X=t,ee=n,te=Symbol("nomatch"),ne=function(t){const n=Object.create(null),o=Object.create(null),r=[];let a=!0;const u="Could not find the language '{}', did you forget to load/include a language module?",p={disableAutodetect:!0,name:"Plain text",contains:[]};let h={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:TokenTreeEmitter};function m(e){return h.noHighlightRe.test(e)}function g(e,t,n){let o="",r="";"object"==typeof t?(o=e,n=t.ignoreIllegals,r=t.language):(K("10.7.0","highlight(lang, code, ...args) has been deprecated."),K("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,o=t),void 0===n&&(n=!0);const a={code:o,language:r};S("before:highlight",a);const i=a.result?a.result:f(a.language,a.code,n);return i.code=a.code,S("after:highlight",i),i}function f(e,t,o,r){const i=Object.create(null);function s(){if(!_.keywords)return void E.addText(B);let e=0;_.keywordPatternRe.lastIndex=0;let t=_.keywordPatternRe.exec(B),n="";for(;t;){n+=B.substring(e,t.index);const r=x.case_insensitive?t[0].toLowerCase():t[0],a=(o=r,_.keywords[o]);if(a){const[e,o]=a;if(E.addText(n),n="",i[r]=(i[r]||0)+1,i[r]<=7&&(T+=o),e.startsWith("_"))n+=t[0];else{const n=x.classNameAliases[e]||e;c(t[0],n)}}else n+=t[0];e=_.keywordPatternRe.lastIndex,t=_.keywordPatternRe.exec(B)}var o;n+=B.substring(e),E.addText(n)}function l(){null!=_.subLanguage?function(){if(""===B)return;let e=null;if("string"==typeof _.subLanguage){if(!n[_.subLanguage])return void E.addText(B);e=f(_.subLanguage,B,!0,N[_.subLanguage]),N[_.subLanguage]=e._top}else e=k(B,_.subLanguage.length?_.subLanguage:null);_.relevance>0&&(T+=e.relevance),E.__addSublanguage(e._emitter,e.language)}():s(),B=""}function c(e,t){""!==e&&(E.startScope(t),E.addText(e),E.endScope())}function d(e,t){let n=1;const o=t.length-1;for(;n<=o;){if(!e._emit[n]){n++;continue}const o=x.classNameAliases[e[n]]||e[n],r=t[n];o?c(r,o):(B=r,s(),B=""),n++}}function p(e,t){return e.scope&&"string"==typeof e.scope&&E.openNode(x.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(c(B,x.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),B=""):e.beginScope._multi&&(d(e.beginScope,t),B="")),_=Object.create(e,{parent:{value:_}}),_}function m(e,t,n){let o=function(e,t){const n=e&&e.exec(t);return n&&0===n.index}(e.endRe,n);if(o){if(e["on:end"]){const n=new Response(e);e["on:end"](t,n),n.isMatchIgnored&&(o=!1)}if(o){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return m(e.parent,t,n)}function g(e){return 0===_.matcher.regexIndex?(B+=e[0],1):(I=!0,0)}function b(e){const n=e[0],o=t.substring(e.index),r=m(_,e,o);if(!r)return te;const a=_;_.endScope&&_.endScope._wrap?(l(),c(n,_.endScope._wrap)):_.endScope&&_.endScope._multi?(l(),d(_.endScope,e)):a.skip?B+=n:(a.returnEnd||a.excludeEnd||(B+=n),l(),a.excludeEnd&&(B=n));do{_.scope&&E.closeNode(),_.skip||_.subLanguage||(T+=_.relevance),_=_.parent}while(_!==r.parent);return r.starts&&p(r.starts,e),a.returnEnd?0:n.length}let y={};function v(n,r){const i=r&&r[0];if(B+=n,null==i)return l(),0;if("begin"===y.type&&"end"===r.type&&y.index===r.index&&""===i){if(B+=t.slice(r.index,r.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=y.rule,t}return 1}if(y=r,"begin"===r.type)return function(e){const t=e[0],n=e.rule,o=new Response(n),r=[n.__beforeBegin,n["on:begin"]];for(const a of r)if(a&&(a(e,o),o.isMatchIgnored))return g(t);return n.skip?B+=t:(n.excludeBegin&&(B+=t),l(),n.returnBegin||n.excludeBegin||(B=t)),p(n,e),n.returnBegin?0:t.length}(r);if("illegal"===r.type&&!o){const e=new Error('Illegal lexeme "'+i+'" for mode "'+(_.scope||"<unnamed>")+'"');throw e.mode=_,e}if("end"===r.type){const e=b(r);if(e!==te)return e}if("illegal"===r.type&&""===i)return B+="\n",1;if(R>1e5&&R>3*r.index){throw new Error("potential infinite loop, way more iterations than matches")}return B+=i,i.length}const x=w(e);if(!x)throw H(u.replace("{}",e)),new Error('Unknown language: "'+e+'"');const C=Y(x);let S="",_=r||C;const N={},E=new h.__emitter(h);!function(){const e=[];for(let t=_;t!==x;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach((e=>E.openNode(e)))}();let B="",T=0,V=0,R=0,I=!1;try{if(x.__emitTokens)x.__emitTokens(t,E);else{for(_.matcher.considerAll();;){R++,I?I=!1:_.matcher.considerAll(),_.matcher.lastIndex=V;const e=_.matcher.exec(t);if(!e)break;const n=v(t.substring(V,e.index),e);V=e.index+n}v(t.substring(V))}return E.finalize(),S=E.toHTML(),{language:e,value:S,relevance:T,illegal:!1,_emitter:E,_top:_}}catch(A){if(A.message&&A.message.includes("Illegal"))return{language:e,value:X(t),illegal:!0,relevance:0,_illegalBy:{message:A.message,index:V,context:t.slice(V-100,V+100),mode:A.mode,resultSoFar:S},_emitter:E};if(a)return{language:e,value:X(t),illegal:!1,relevance:0,errorRaised:A,_emitter:E,_top:_};throw A}}function k(e,t){t=t||h.languages||Object.keys(n);const o=function(e){const t={value:X(e),illegal:!1,relevance:0,_top:p,_emitter:new h.__emitter(h)};return t._emitter.addText(e),t}(e),r=t.filter(w).filter(C).map((t=>f(t,e,!1)));r.unshift(o);const a=r.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(w(e.language).supersetOf===t.language)return 1;if(w(t.language).supersetOf===e.language)return-1}return 0})),[i,s]=a,l=i;return l.secondBest=s,l}function b(e){let t=null;const n=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=h.languageDetectRe.exec(t);if(n){const t=w(n[1]);return t||(Z(u.replace("{}",n[1])),Z("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>m(e)||w(e)))}(e);if(m(n))return;if(S("before:highlightElement",{el:e,language:n}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(h.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),h.throwUnescapedHTML)){throw new HTMLInjectionError("One of your code blocks includes unescaped HTML.",e.innerHTML)}t=e;const r=t.textContent,a=n?g(r,{language:n,ignoreIllegals:!0}):k(r);e.innerHTML=a.value,e.dataset.highlighted="yes",function(e,t,n){const r=t&&o[t]||n;e.classList.add("hljs"),e.classList.add(`language-${r}`)}(e,n,a.language),e.result={language:a.language,re:a.relevance,relevance:a.relevance},a.secondBest&&(e.secondBest={language:a.secondBest.language,relevance:a.secondBest.relevance}),S("after:highlightElement",{el:e,result:a,text:r})}let y=!1;function v(){if("loading"===document.readyState)return y||window.addEventListener("DOMContentLoaded",(function(){v()}),!1),void(y=!0);document.querySelectorAll(h.cssSelector).forEach(b)}function w(e){return e=(e||"").toLowerCase(),n[e]||n[o[e]]}function x(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{o[e.toLowerCase()]=t}))}function C(e){const t=w(e);return t&&!t.disableAutodetect}function S(e,t){const n=e;r.forEach((function(e){e[n]&&e[n](t)}))}Object.assign(t,{highlight:g,highlightAuto:k,highlightAll:v,highlightElement:b,highlightBlock:function(e){return K("10.7.0","highlightBlock will be removed entirely in v12.0"),K("10.7.0","Please use highlightElement now."),b(e)},configure:function(e){h=ee(h,e)},initHighlighting:()=>{v(),K("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){v(),K("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(e,o){let r=null;try{r=o(t)}catch(i){if(H("Language definition for '{}' could not be registered.".replace("{}",e)),!a)throw i;H(i),r=p}r.name||(r.name=e),n[e]=r,r.rawDefinition=o.bind(null,t),r.aliases&&x(r.aliases,{languageName:e})},unregisterLanguage:function(e){delete n[e];for(const t of Object.keys(o))o[t]===e&&delete o[t]},listLanguages:function(){return Object.keys(n)},getLanguage:w,registerAliases:x,autoDetection:C,inherit:ee,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),r.push(e)},removePlugin:function(e){const t=r.indexOf(e);-1!==t&&r.splice(t,1)}}),t.debugMode=function(){a=!1},t.safeMode=function(){a=!0},t.versionString="11.11.1",t.regex={concat:c,lookahead:i,either:d,optional:l,anyNumberOfTimes:s};for(const i in A)"object"==typeof A[i]&&e(A[i]);return Object.assign(t,A),t},oe=ne({});return oe.newInstance=()=>ne({}),jn=oe,oe.HighlightJS=oe,oe.default=oe,jn}const qn=k(Un());var Hn={component:t.defineComponent({props:{code:{type:String,required:!0},language:{type:String,default:""},autodetect:{type:Boolean,default:!0},ignoreIllegals:{type:Boolean,default:!0}},setup:function(e){var n=t.ref(e.language);t.watch((function(){return e.language}),(function(e){n.value=e}));var o=t.computed((function(){return e.autodetect||!n.value})),r=t.computed((function(){return!o.value&&!qn.getLanguage(n.value)}));return{className:t.computed((function(){return r.value?"":"hljs "+n.value})),highlightedCode:t.computed((function(){var t;if(r.value)return console.warn('The language "'+n.value+'" you specified could not be found.'),e.code.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");if(o.value){var a=qn.highlightAuto(e.code);return n.value=null!==(t=a.language)&&void 0!==t?t:"",a.value}return(a=qn.highlight(e.code,{language:n.value,ignoreIllegals:e.ignoreIllegals})).value}))}},render:function(){return t.h("pre",{},[t.h("code",{class:this.className,innerHTML:this.highlightedCode,tabindex:"0"})])}})};const Zn="[A-Za-z$_][0-9A-Za-z$_]*",Kn=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Gn=["true","false","null","undefined","NaN","Infinity"],Wn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Qn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Yn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Jn=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Xn=[].concat(Yn,Wn,Qn);function eo(e){const t=e.regex,n=Zn,o="<>",r="</>",a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,o=e.input[n];if("<"===o||","===o)return void t.ignoreMatch();let r;">"===o&&(((e,{after:t})=>{const n="</"+e[0].slice(1);return-1!==e.input.indexOf(n,t)})(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);((r=a.match(/^\s*=/))||(r=a.match(/^\s+extends\s+/))&&0===r.index)&&t.ignoreMatch()}},i={$pattern:Zn,keyword:Kn,literal:Gn,built_in:Xn,"variable.language":Jn},s="[0-9](_?[0-9])*",l=`\\.(${s})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${s})\\b`},{begin:`\\b(${c})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:i,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},h={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},f={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,h,m,g,{match:/\$\d+/},d];u.contains=k.concat({begin:/\{/,end:/\}/,keywords:i,contains:["self"].concat(k)});const b=[].concat(f,u.contains),y=b.concat([{begin:/(\s*)\(/,end:/\)/,keywords:i,contains:["self"].concat(b)}]),v={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:y},w={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,t.concat(n,"(",t.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Wn,...Qn]}},C={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[v],illegal:/%/};const S={match:t.concat(/\b/,(_=[...Yn,"super","import"].map((e=>`${e}\\s*\\(`)),t.concat("(?!",_.join("|"),")")),n,t.lookahead(/\s*\(/)),className:"title.function",relevance:0};var _;const N={begin:t.concat(/\./,t.lookahead(t.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},E={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},v]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[v]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,h,m,g,f,{match:/\$\d+/},d,x,{scope:"attr",match:n+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,e.REGEXP_MODE,{className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o,end:r},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},C,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[v,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},N,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[v]},S,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},w,E,{match:/\$[(.]/}]}}const to="[A-Za-z$_][0-9A-Za-z$_]*",no=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],oo=["true","false","null","undefined","NaN","Infinity"],ro=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],ao=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],io=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],so=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],lo=[].concat(io,ro,ao);function co(e){const t=e.regex,n=function(e){const t=e.regex,n=to,o="<>",r="</>",a={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,o=e.input[n];if("<"===o||","===o)return void t.ignoreMatch();let r;">"===o&&(((e,{after:t})=>{const n="</"+e[0].slice(1);return-1!==e.input.indexOf(n,t)})(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);((r=a.match(/^\s*=/))||(r=a.match(/^\s+extends\s+/))&&0===r.index)&&t.ignoreMatch()}},i={$pattern:to,keyword:no,literal:oo,built_in:lo,"variable.language":so},s="[0-9](_?[0-9])*",l=`\\.(${s})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${s})\\b`},{begin:`\\b(${c})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:i,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},h={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},f={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},k=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,h,m,g,{match:/\$\d+/},d];u.contains=k.concat({begin:/\{/,end:/\}/,keywords:i,contains:["self"].concat(k)});const b=[].concat(f,u.contains),y=b.concat([{begin:/(\s*)\(/,end:/\)/,keywords:i,contains:["self"].concat(b)}]),v={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:y},w={variants:[{match:[/class/,/\s+/,n,/\s+/,/extends/,/\s+/,t.concat(n,"(",t.concat(/\./,n),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}}]},x={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ro,...ao]}},C={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[v],illegal:/%/},S={match:t.concat(/\b/,(_=[...io,"super","import"].map((e=>`${e}\\s*\\(`)),t.concat("(?!",_.join("|"),")")),n,t.lookahead(/\s*\(/)),className:"title.function",relevance:0};var _;const N={begin:t.concat(/\./,t.lookahead(t.concat(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},E={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},v]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",T={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[v]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:x},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,h,m,g,f,{match:/\$\d+/},d,x,{scope:"attr",match:n+t.lookahead(":"),relevance:0},T,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,e.REGEXP_MODE,{className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o,end:r},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin,"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},C,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[v,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},N,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[v]},S,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},w,E,{match:/\$[(.]/}]}}(e),o=to,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},i={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[n.exports.CLASS_REFERENCE]},s={$pattern:to,keyword:no.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]),literal:oo,built_in:lo.concat(r),"variable.language":so},l={className:"meta",begin:"@"+o},c=(e,t,n)=>{const o=e.contains.findIndex((e=>e.label===t));if(-1===o)throw new Error("can not find mode to replace");e.contains.splice(o,1,n)};Object.assign(n.keywords,s),n.exports.PARAMS_CONTAINS.push(l);const d=n.contains.find((e=>"attr"===e.scope)),u=Object.assign({},d,{match:t.concat(o,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,u]),n.contains=n.contains.concat([l,a,i,u]),c(n,"shebang",e.SHEBANG()),c(n,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/});return n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}const uo=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],po=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),ho=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),mo=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),go=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function fo(e){const t=e.regex,n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}))(e),o=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+ho.join("|")+")"},{begin:":(:)?("+mo.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+go.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,...o,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...o,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:po.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...o,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+uo.join("|")+")\\b"}]}}function ko(e){const t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),o={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},a=e.inherit(r,{begin:/\(/,end:/\)/}),i=e.inherit(e.APOS_STRING_MODE,{className:"string"}),s=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[o]},{begin:/'/,end:/'/,contains:[o]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[r,s,i,a,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[r,a,s,i]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},o,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[s]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:l}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function bo(e){const t=e.regex,n={},o={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},o]});const r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},a=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(s);const l={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},c=e.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),d={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],literal:["true","false"],built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]},contains:[c,e.SHEBANG(),d,l,a,i,{match:/(\/[a-z._-]+)+/},s,{match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},n]}}function yo(e){const t=["true","false","null"],n={scope:"literal",beginKeywords:t.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:t},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function vo(e){const t={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:t,illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,illegal:/["']/}]}]}}function wo(e){const t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,o=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],r={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:o,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},a={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:r,illegal:/#/},s={begin:/\{\{/,relevance:0},l={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},c="[0-9](_?[0-9])*",d=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,u=`\\b|${o.join("|")}`,p={className:"number",relevance:0,variants:[{begin:`(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${u})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${u})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${u})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${u})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${u})`},{begin:`\\b(${c})[jJ](?=${u})`}]},h={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:r,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:["self",a,p,l,e.HASH_COMMENT_MODE]}]};return i.contains=[l,p,a],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:r,illegal:/(<\/|\?)|=>/,contains:[a,p,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},l,h,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[m]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[p,m,l]}]}}const xo={class:"code-block-wrapper pa-2"},Co={key:0,class:"language-indicator"},So=t.defineComponent({__name:"CodeBlockRenderer",props:{code:{type:String,required:!0},language:{type:String,default:""}},setup(e){qn.registerLanguage("js",eo),qn.registerLanguage("javascript",eo),qn.registerLanguage("ts",co),qn.registerLanguage("typescript",co),qn.registerLanguage("css",fo),qn.registerLanguage("html",ko),qn.registerLanguage("bash",bo),qn.registerLanguage("sh",bo),qn.registerLanguage("json",yo),qn.registerLanguage("go",vo),qn.registerLanguage("golang",vo),qn.registerLanguage("python",wo);const n=t.getCurrentInstance();return n&&n.appContext.app.component("highlightjs",Hn.component),(n,o)=>{const r=t.resolveComponent("highlightjs");return t.openBlock(),t.createElementBlock("div",xo,[e.language?(t.openBlock(),t.createElementBlock("div",Co,t.toDisplayString(e.language),1)):t.createCommentVNode("",!0),t.createVNode(r,{language:e.language,code:e.code},null,8,["language","code"])])}}}),_o={key:0},No={key:0},Eo={key:0},Bo={key:1,class:"error--text"},To={key:1},Vo={key:2},Ro={key:1},Io={key:1},Ao={key:0,class:"text-h2"},Mo={key:1,class:"text-h3"},Do={key:2,class:"text-h4"},Lo={key:3},$o={key:4},Oo={key:5},Po={key:2},zo={key:3,class:"text-h5"},jo={key:0},Fo=["href","title"],Uo={key:5},qo={key:6},Ho={key:7},Zo=["src","alt"],Ko={key:9},Go={key:10},Wo={key:11},Qo=["align"],Yo=["innerHTML"],Jo=["innerHTML"],Xo={key:16},er={key:17},tr={key:18},nr=p(t.defineComponent({__name:"MdTokenRenderer",props:{token:{type:Object,required:!0},last:{type:Boolean,required:!1,default:!1}},setup(e,{expose:n}){const o=t.inject("markdownComponents",{}),r={fillIn:t.markRaw(_t),...o};function a(e){return On(e)}function i(e){return $n(e)}function s(e){return Dn(e)}function l(e){return Ln(e)}function c(e){let t="";"text"in e&&"string"==typeof e.text?t=e.text:"raw"in e&&"string"==typeof e.raw&&(t=e.raw);const n=Pn(t);return n?{is:n.componentName,text:"",props:n.props}:{is:"fillIn",text:t,props:{}}}function d(e){const t=r[e];return t||(console.warn(`[MarkdownRenderer] Unknown component: "${e}". Available components: ${Object.keys(r).join(", ")}`),null)}function u(e){return e.replace(/'/g,"'").replace(/"/g,'"').replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function p(e){return void 0===e.inLink&&"text"===e.type}return n({isComponent:a,containsComponent:i,splitTextToken:s,splitParagraphToken:l,parsedComponent:c,decodeBasicEntities:u,isText:p,components:r,getComponent:d}),(n,o)=>{const r=t.resolveComponent("md-token-renderer",!0);return p(e.token)?(t.openBlock(),t.createElementBlock("span",_o,[e.token.tokens&&0!==e.token.tokens.length?e.token.tokens&&0!==e.token.tokens.length?(t.openBlock(),t.createElementBlock("span",Ro,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("span",No,[a(e.token)?(t.openBlock(),t.createElementBlock("span",Eo,[!e.last&&d(c(e.token).is)?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(d(c(e.token).is)),t.mergeProps({key:0,text:c(e.token).text},c(e.token).props),null,16,["text"])):e.last||d(c(e.token).is)?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("span",Bo," [Unknown component: "+t.toDisplayString(c(e.token).is)+"] ",1))])):i(e.token)?(t.openBlock(),t.createElementBlock("span",To,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s(e.token),((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):(t.openBlock(),t.createElementBlock("span",Vo,t.toDisplayString(u(e.token.text)),1))]))])):"heading"===e.token.type?(t.openBlock(),t.createElementBlock("span",Io,[1===e.token.depth?(t.openBlock(),t.createElementBlock("h1",Ao,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):2===e.token.depth?(t.openBlock(),t.createElementBlock("h2",Mo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):3===e.token.depth?(t.openBlock(),t.createElementBlock("h3",Do,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):4===e.token.depth?(t.openBlock(),t.createElementBlock("h4",Lo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):5===e.token.depth?(t.openBlock(),t.createElementBlock("h5",$o,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):6===e.token.depth?(t.openBlock(),t.createElementBlock("h6",Oo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0)])):"strong"===e.token.type?(t.openBlock(),t.createElementBlock("strong",Po,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):"paragraph"===e.token.type?(t.openBlock(),t.createElementBlock("p",zo,[i(e.token)?(t.openBlock(),t.createElementBlock("span",jo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l(e.token),((n,o)=>(t.openBlock(),t.createBlock(r,{key:o,token:n,last:e.last&&1===e.token.tokens.length&&o===l(e.token).length-1},null,8,["token","last"])))),128))])):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(e.token.tokens,((n,o)=>(t.openBlock(),t.createBlock(r,{key:o,token:n,last:e.last&&1===e.token.tokens.length},null,8,["token","last"])))),128))])):"link"===e.token.type?(t.openBlock(),t.createElementBlock("a",{key:4,href:e.token.href,title:e.token.title},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))],8,Fo)):"list"===e.token.type&&!1===e.token.ordered?(t.openBlock(),t.createElementBlock("ul",Uo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.items,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):"list"===e.token.type&&!0===e.token.ordered?(t.openBlock(),t.createElementBlock("ol",qo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.items,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):"list_item"===e.token.type?(t.openBlock(),t.createElementBlock("li",Ho,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):"image"===e.token.type?(t.openBlock(),t.createElementBlock("img",{key:8,src:e.token.href,alt:e.token.title},null,8,Zo)):"hr"===e.token.type?(t.openBlock(),t.createElementBlock("hr",Ko)):"br"===e.token.type?(t.openBlock(),t.createElementBlock("br",Go)):"del"===e.token.type?(t.openBlock(),t.createElementBlock("del",Wo)):"table"===e.token.type?(t.openBlock(),t.createElementBlock("table",{key:12,align:e.token.align},[t.createElementVNode("thead",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.header,((e,n)=>(t.openBlock(),t.createElementBlock("th",{key:n},t.toDisplayString(e.text),1)))),128))]),t.createElementVNode("tbody",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.rows,((e,n)=>(t.openBlock(),t.createElementBlock("tr",{key:n},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e,((e,n)=>(t.openBlock(),t.createElementBlock("td",{key:n},t.toDisplayString(e.text),1)))),128))])))),128))])],8,Qo)):"html"===e.token.type?(t.openBlock(),t.createElementBlock("span",{key:13,innerHTML:e.token.raw},null,8,Yo)):"code"===e.token.type?(t.openBlock(),t.createBlock(So,{key:14,code:e.token.text,language:e.token.lang},null,8,["code","language"])):"codespan"===e.token.type?(t.openBlock(),t.createElementBlock("code",{key:15,class:"codespan",innerHTML:e.token.text},null,8,Jo)):"blockquote"===e.token.type?(t.openBlock(),t.createElementBlock("blockquote",Xo,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):"escape"===e.token.type?(t.openBlock(),t.createElementBlock("span",er,t.toDisplayString(e.token.text),1)):"em"===e.token.type?(t.openBlock(),t.createElementBlock("em",tr,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.token.tokens,((e,n)=>(t.openBlock(),t.createBlock(r,{key:n,token:e},null,8,["token"])))),128))])):t.createCommentVNode("",!0)}}}),[["__scopeId","data-v-de3eebd6"]]);const or=p(t.defineComponent({name:"MarkdownRenderer",components:{MdTokenRenderer:nr,AudioAutoPlayer:zn},props:{md:{type:String,required:!0}},computed:{tokens(){return An(this.md)}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("md-token-renderer"),l=t.resolveComponent("audio-auto-player");return t.openBlock(),t.createElementBlock("div",null,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.tokens,((n,o)=>(t.openBlock(),t.createElementBlock("span",{key:o},[n.type?(t.openBlock(),t.createBlock(s,{key:0,token:n,last:o===e.tokens.length-1},null,8,["token","last"])):n.audio?(t.openBlock(),t.createBlock(l,{key:1,src:n.audio},null,8,["src"])):t.createCommentVNode("",!0)])))),128))])}]]),rr=Object.freeze(Object.defineProperty({__proto__:null,default:or},Symbol.toStringTag,{value:"Module"}));async function ar(){const e=ir();if(!e.onLoadComplete){let t=200;const n=50;for(;!e.onLoadComplete&&t>0;)await new Promise((e=>setTimeout(e,n))),t--;if(!e.onLoadComplete)throw new Error("User initialization timed out")}return r.getDataLayer().getUserDB()}const ir=()=>{const e=st();return e&&a.setActivePinia(e),a.defineStore("auth",{state:()=>({_user:void 0,loginAndRegistration:{init:!1,loggedIn:!1,regDialogOpen:!1,loginDialogOpen:!1},onLoadComplete:!1}),actions:{async init(){try{this._user=r.getDataLayer().getUserDB(),this.loginAndRegistration.loggedIn=!!this._user&&this._user.isLoggedIn(),this.onLoadComplete=!0,this.loginAndRegistration.init=!0}catch(e){console.error("Failed to initialize auth store:",e),this.loginAndRegistration.loggedIn=!1,this.onLoadComplete=!0,this.loginAndRegistration.init=!0}},setLoginDialog(e){this.loginAndRegistration.loginDialogOpen=e},setRegDialog(e){this.loginAndRegistration.regDialogOpen=e},async resetUserData(){try{if(!this._user)throw new Error("No user available for data reset");const e=await this._user.resetUserData();if("ok"!==e.status)throw new Error(e.error||"Reset failed");return console.log("User data reset successfully"),e}catch(e){throw console.error("Failed to reset user data:",e),e}}},getters:{currentUser:async()=>ar(),isLoggedIn:e=>e.loginAndRegistration.loggedIn,isInitialized:e=>e.loginAndRegistration.init,status:e=>({loggedIn:e.loginAndRegistration.loggedIn,init:e.loginAndRegistration.init,user:e._user})}})()},sr=()=>{const e=st();return e&&a.setActivePinia(e),a.defineStore("config",{state:()=>({config:{darkMode:!1,likesConfetti:!1,sessionTimeLimit:5}}),actions:{updateConfig(e){this.config=e},async updateDarkMode(e){this.config.darkMode=e;const t=await ar();t&&await t.setConfig({darkMode:e})},async updateLikesConfetti(e){this.config.likesConfetti=e;const t=await ar();t&&await t.setConfig({likesConfetti:e})},async updateSessionTimeLimit(e){this.config.sessionTimeLimit=e;const t=await ar();t&&await t.setConfig({sessionTimeLimit:e})},async hydrate(){try{const e=await ar();if(e){const t=await e.getConfig();console.log(`user config: ${JSON.stringify(t)}`),this.updateConfig(t)}else console.log("No user logged in, using default config")}catch(e){console.warn("Failed to hydrate config store, using defaults:",e)}},async init(){await this.hydrate()},resetDefaults(){this.config={darkMode:!1,likesConfetti:!1,sessionTimeLimit:5}}}})()};function lr(){const e=t.ref(!0),n=t.ref(!1),o=t.ref(!1);return{config:t.computed((()=>o.value?{showLoginRegistration:!1,showLogout:!1,showResetData:!0,logoutLabel:"",resetLabel:"Reset User Data"}:{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""})),isLoading:e,syncStrategyDetected:n,isLocalOnlyMode:o,detectSyncStrategy:async()=>{try{e.value=!0;const t=await ar(),r=t.syncStrategy?.canCreateAccount?.();o.value=!r,n.value=!0}catch(t){console.error("Failed to detect sync strategy:",t),o.value=!1,n.value=!0}finally{e.value=!1}}}}const cr=p(t.defineComponent({__name:"UserChip",props:{showLoginButton:{type:Boolean},redirectToPath:{}},setup(e){const n=i.useRouter(),o=ir(),r=sr(),a=lr(),s=t.ref(""),l=t.ref([]),c=t.ref(!1),d=t.ref(""),u=t.computed((()=>"reset"===d.value)),p=()=>{d.value="",c.value=!1},h=t.computed((()=>l.value.length>0)),m=t.computed((()=>a.config.value||{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""}));t.onMounted((async()=>{const e=await ar();s.value=e.getUsername(),await a.detectSyncStrategy()}));const g=async()=>{n.push(`/u/${(await ar()).getUsername()}`)},f=async()=>{n.push(`/u/${(await ar()).getUsername()}/stats`)},k=async()=>{(await o._user.logout()).ok&&(o.loginAndRegistration={init:!0,loggedIn:!1,regDialogOpen:!1,loginDialogOpen:!1},r.resetDefaults(),n.push("/home"))},b=async()=>{try{await o.resetUserData(),r.resetDefaults(),p(),n.push("/home")}catch(e){console.error("Failed to reset user data:",e)}};return(e,n)=>{const o=t.resolveComponent("v-icon"),r=t.resolveComponent("v-avatar"),a=t.resolveComponent("v-chip"),i=t.resolveComponent("v-list-item-title"),y=t.resolveComponent("v-list-item"),v=t.resolveComponent("v-divider"),w=t.resolveComponent("v-list"),x=t.resolveComponent("v-menu"),C=t.resolveComponent("v-badge"),S=t.resolveComponent("v-card-title"),_=t.resolveComponent("v-text-field"),N=t.resolveComponent("v-card-text"),E=t.resolveComponent("v-spacer"),B=t.resolveComponent("v-btn"),T=t.resolveComponent("v-card-actions"),V=t.resolveComponent("v-card"),R=t.resolveComponent("v-dialog");return t.openBlock(),t.createElementBlock(t.Fragment,null,[t.createVNode(C,{content:l.value.length,"model-value":h.value,color:"accent",location:"end top"},{default:t.withCtx((()=>[t.createVNode(x,{location:"bottom end",transition:"scale-transition"},{activator:t.withCtx((({props:e})=>[t.createVNode(a,t.mergeProps(e,{class:"ma-2"}),{default:t.withCtx((()=>[t.createVNode(r,{start:"",class:"bg-primary"},{default:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-school")]))),_:1})])),_:1}),t.createTextVNode(" "+t.toDisplayString(s.value),1)])),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(w,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.value,(e=>(t.openBlock(),t.createBlock(y,{key:e,onClick:t=>(e=>{const t=l.value.indexOf(e);l.value.splice(t,1)})(e)},{default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e),1)])),_:2},1024)])),_:2},1032,["onClick"])))),128)),l.value.length?(t.openBlock(),t.createBlock(v,{key:0})):t.createCommentVNode("",!0),t.createVNode(y,{onClick:f},{prepend:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-trending-up")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Stats")]))),_:1})])),_:1}),t.createVNode(y,{onClick:g},{prepend:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-cog")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("Settings")]))),_:1})])),_:1}),m.value.showLogout?(t.openBlock(),t.createBlock(y,{key:1,onClick:k},{prepend:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[9]||(n[9]=[t.createTextVNode("mdi-logout")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(m.value.logoutLabel),1)])),_:1})])),_:1})):t.createCommentVNode("",!0),m.value.showResetData?(t.openBlock(),t.createBlock(y,{key:2,onClick:n[0]||(n[0]=e=>c.value=!0)},{prepend:t.withCtx((()=>[t.createVNode(o,null,{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("mdi-delete-sweep")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(i,null,{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(m.value.resetLabel),1)])),_:1})])),_:1})):t.createCommentVNode("",!0)])),_:1})])),_:1})])),_:1},8,["content","model-value"]),t.createVNode(R,{modelValue:c.value,"onUpdate:modelValue":n[3]||(n[3]=e=>c.value=e),"max-width":"500px",persistent:""},{default:t.withCtx((()=>[t.createVNode(V,null,{default:t.withCtx((()=>[t.createVNode(S,{class:"text-h5 d-flex align-center"},{default:t.withCtx((()=>[t.createVNode(o,{color:"warning",class:"mr-3"},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[12]||(n[12]=t.createTextVNode(" Reset All User Data "))])),_:1}),t.createVNode(N,null,{default:t.withCtx((()=>[n[13]||(n[13]=t.createElementVNode("p",{class:"mb-4"},"This will permanently delete:",-1)),n[14]||(n[14]=t.createElementVNode("ul",{class:"mb-4"},[t.createElementVNode("li",null,"All course progress and history"),t.createElementVNode("li",null,"Scheduled card reviews"),t.createElementVNode("li",null,"Course registrations"),t.createElementVNode("li",null,"User preferences")],-1)),n[15]||(n[15]=t.createElementVNode("p",{class:"mb-4 text-error font-weight-bold"},"This cannot be undone.",-1)),t.createVNode(_,{modelValue:d.value,"onUpdate:modelValue":n[1]||(n[1]=e=>d.value=e),label:'Type "reset" to confirm',outlined:"",dense:"",onKeyup:n[2]||(n[2]=t.withKeys((e=>u.value&&b()),["enter"]))},null,8,["modelValue"])])),_:1}),t.createVNode(T,null,{default:t.withCtx((()=>[t.createVNode(E),t.createVNode(B,{text:"",onClick:p},{default:t.withCtx((()=>n[16]||(n[16]=[t.createTextVNode("Cancel")]))),_:1}),t.createVNode(B,{color:"error",disabled:!u.value,onClick:b},{default:t.withCtx((()=>n[17]||(n[17]=[t.createTextVNode(" Reset All Data ")]))),_:1},8,["disabled"])])),_:1})])),_:1})])),_:1},8,["modelValue"])],64)}}}),[["__scopeId","data-v-9a38a213"]]),dr={class:"d-flex flex-column align-start"},ur={class:"mb-2"},pr=p(t.defineComponent({__name:"UserLogin",props:{redirectTo:{default:"/study"}},emits:["toggle","loginSuccess","forgotPassword"],setup(e,{emit:n}){const r=e,a=n,s=i.useRouter(),l=i.useRoute(),c=ir(),d=sr(),u=t.ref(""),p=t.ref(""),h=t.ref(!1),m=t.ref(!1),g=t.ref(!1),f=t.ref(7e3),k=t.ref(void 0),b=t.computed((()=>"login"===l.name)),y=t.computed((()=>({color:g.value?"error":"success",text:g.value?"Try again":"Log In"}))),v=async()=>{m.value=!0,o.log("Starting login attempt"),o.log(`Login attempt for username: ${u.value}`);try{o.log("Attempting to get User instance"),k.value=await ar(),o.log("Got User instance, attempting login"),await k.value.login(u.value,p.value),o.log("Login successful"),o.log("Initializing user config"),d.init(),o.log("User config initialized"),o.log("Setting authentication state"),c.loginAndRegistration.loggedIn=!0,o.log(`Authentication state set, redirecting to: ${r.redirectTo}`),a("loginSuccess",r.redirectTo),s.push(r.redirectTo),o.log("Login and redirect complete")}catch(e){o.log("Login attempt failed"),o.log(`Login error details: ${JSON.stringify(e)}`),console.log(`login error: ${JSON.stringify(e)}`),o.log("Initiating bad login feedback"),g.value=!0,I({text:"Username or password was incorrect.",status:o.Status.error,timeout:f.value}),setTimeout((()=>{g.value=!1}),f.value)}o.log("Resetting awaiting response state"),m.value=!1},w=()=>{o.log("Toggling registration / login forms."),a("toggle")},x=()=>{o.log("Forgot password clicked"),b.value?s.push("/request-reset"):a("forgotPassword")};return(e,n)=>{const o=t.resolveComponent("v-card-title"),r=t.resolveComponent("v-text-field"),a=t.resolveComponent("v-btn"),i=t.resolveComponent("v-snackbar"),s=t.resolveComponent("v-icon"),l=t.resolveComponent("router-link"),c=t.resolveComponent("v-form"),d=t.resolveComponent("v-card-text"),k=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(k,null,{default:t.withCtx((()=>[b.value?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(o,{key:0,class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("Log In")]))),_:1})),t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(c,{onsubmit:"return false;",onSubmit:t.withModifiers(v,["prevent"])},{default:t.withCtx((()=>[t.createVNode(r,{id:"",modelValue:u.value,"onUpdate:modelValue":n[0]||(n[0]=e=>u.value=e),autofocus:"",name:"username",label:"Username","prepend-icon":"mdi-account-circle"},null,8,["modelValue"]),t.createVNode(r,{modelValue:p.value,"onUpdate:modelValue":n[1]||(n[1]=e=>p.value=e),"prepend-icon":"mdi-lock",name:"password",hover:"Show password input",label:"Enter your password",hint:"",min:"0","append-icon":h.value?"mdi-eye-off":"mdi-eye",type:h.value?"text":"password","onClick:append":n[2]||(n[2]=()=>h.value=!h.value)},null,8,["modelValue","append-icon","type"]),t.createVNode(i,{modelValue:g.value,"onUpdate:modelValue":n[4]||(n[4]=e=>g.value=e),location:"bottom right",timeout:f.value},{default:t.withCtx((()=>[n[7]||(n[7]=t.createTextVNode(" Username or password was incorrect. ")),t.createVNode(a,{color:"pink",variant:"text",onClick:n[3]||(n[3]=e=>g.value=!1)},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Close")]))),_:1})])),_:1},8,["modelValue","timeout"]),t.createElementVNode("div",dr,[t.createElementVNode("div",ur,[t.createVNode(a,{class:"mr-2",type:"submit",loading:m.value,color:y.value.color},{default:t.withCtx((()=>[t.createVNode(s,{start:""},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-lock-open")]))),_:1}),n[9]||(n[9]=t.createTextVNode(" Log In "))])),_:1},8,["loading","color"]),b.value?(t.openBlock(),t.createBlock(l,{key:0,to:"signup"},{default:t.withCtx((()=>[t.createVNode(a,{variant:"text"},{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("Create New Account")]))),_:1})])),_:1})):(t.openBlock(),t.createBlock(a,{key:1,variant:"text",onClick:w},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode("Create New Account")]))),_:1}))]),t.renderSlot(e.$slots,"forgot-password",{},(()=>[t.createElementVNode("a",{href:"#",class:"text-caption text-decoration-none",onClick:t.withModifiers(x,["prevent"])}," Forgot password? ")]),!0)])])),_:3})])),_:3})])),_:3})}}}),[["__scopeId","data-v-563b0048"]]);function hr(e){if(!e)return"";if(e.length<6)return"Password must be at least 6 characters";return new Set(e).size<2?"Password must contain at least 2 different characters":""}const mr=p(t.defineComponent({name:"UserRegistration",props:{onSignupSuccess:{type:Function,required:!1}},emits:["toggle","signup-success"],data:()=>({email:"",username:"",password:"",retypedPassword:"",passwordVisible:!1,emailError:!1,emailHint:"",usernameValidationInProgress:!1,usernameError:!1,usernameHint:"",awaitingResponse:!1,badLoginAttempt:!1,userSecret:"",secret:"goons",user:null,roles:["Student","Teacher","Author"],student:!0,teacher:!1,author:!1,authStore:ir()}),computed:{registrationRoute(){return"string"==typeof this.$route.name&&"signup"===this.$route.name.toLowerCase()},buttonStatus(){return{color:this.badLoginAttempt?"error":"success",text:this.badLoginAttempt?"Try again":"Log In"}},passwordError(){return hr(this.password)},passwordRetypeError(){return console.log("[RTE]"),this.password!==this.retypedPassword?"Passwords must match.":""}},async created(){this.user=await ar()},methods:{toggle(){o.log("Toggling registration / login forms."),this.$emit("toggle")},validateEmail(){this.emailError=!1;this.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)?(this.emailError=!0,this.emailHint="Please enter a valid email address"):this.emailHint=""},validateUsername(){this.usernameError=!1},async createUser(){if(this.awaitingResponse=!0,this.passwordError)return I({text:this.passwordError,status:o.Status.error}),void(this.awaitingResponse=!1);if(o.log(`\nUser creation\n-------------\n\nName: ${this.username}\nStudent: ${this.student}\nTeacher: ${this.teacher}\nAuthor: ${this.author}\n`),this.password===this.retypedPassword){if(!this.user)return void console.error("ERROR: No user object available");this.user.createAccount(this.username,this.password).then((async e=>{if(e.status===o.Status.ok){if(this.authStore.loginAndRegistration.loggedIn=!0,this.authStore.loginAndRegistration.init=!1,this.authStore.loginAndRegistration.init=!0,this.email)try{const e=await ar();await e.setConfig({email:this.email});const t="undefined"!=typeof window?window.location.origin:void 0,n=await oe(this.username,this.email,t);n.ok?I({text:"Account created! Please check your email to verify your account.",status:o.Status.ok}):o.log(`Warning: Failed to send verification email: ${n.error}`)}catch(t){console.error("Email save/send error:",t),o.log(`Warning: Failed to save email or send verification: ${t}`)}this.onSignupSuccess&&(console.log("[UserRegistration] Calling onSignupSuccess callback"),this.onSignupSuccess({username:this.username})),this.$emit("signup-success",{username:this.username})}else"This username is taken!"===e.error?(this.usernameError=!0,this.usernameHint="Try a different name.",this.$refs.userNameTextField.focus(),I({text:`The name ${this.username} is taken!`,status:e.status})):I({text:e.error,status:e.status})})).catch((e=>{if(console.error("[UserRegistration] .catch() called with error:",e),e){const t=e?.message||e?.error||e?.toString()||"Account creation failed";I({text:t,status:o.Status.error})}})),this.awaitingResponse=!1}else I({text:"Passwords do not match.",status:o.Status.error}),this.awaitingResponse=!1}}}),[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-btn"),d=t.resolveComponent("v-snackbar"),u=t.resolveComponent("v-icon"),p=t.resolveComponent("router-link"),h=t.resolveComponent("v-form"),m=t.resolveComponent("v-card-text"),g=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(g,null,{default:t.withCtx((()=>[t.createVNode(s,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode(" Create an Account ")]))),_:1}),t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(h,{onSubmit:t.withModifiers(e.createUser,["prevent"])},{default:t.withCtx((()=>[t.createVNode(l,{modelValue:e.email,"onUpdate:modelValue":n[0]||(n[0]=t=>e.email=t),name:"email",label:"Email address",type:"email","prepend-icon":"mdi-email",error:e.emailError,hint:e.emailHint,onBlur:e.validateEmail},null,8,["modelValue","error","hint","onBlur"]),t.createVNode(l,{id:"",ref:"userNameTextField",modelValue:e.username,"onUpdate:modelValue":n[1]||(n[1]=t=>e.username=t),name:"username",label:"Choose a Username","prepend-icon":"mdi-account-circle",error:e.usernameError,hint:e.usernameHint,onBlur:e.validateUsername},null,8,["modelValue","error","hint","onBlur"]),t.createVNode(l,{modelValue:e.password,"onUpdate:modelValue":n[2]||(n[2]=t=>e.password=t),"prepend-icon":"mdi-lock",name:"password",hover:"Show password",label:"Create a password",hint:e.passwordError,error:!!e.passwordError,min:"4","append-icon":e.passwordVisible?"mdi-eye-off":"mdi-eye",type:e.passwordVisible?"text":"password","onClick:append":n[3]||(n[3]=()=>e.passwordVisible=!e.passwordVisible)},null,8,["modelValue","hint","error","append-icon","type"]),t.createVNode(l,{modelValue:e.retypedPassword,"onUpdate:modelValue":n[4]||(n[4]=t=>e.retypedPassword=t),"prepend-icon":"mdi-lock",name:"retypedPassword",hover:"Show password",label:"Retype your password",disabled:""===e.password||!!e.passwordError,hint:e.passwordRetypeError,min:"4",type:e.passwordVisible?"text":"password"},null,8,["modelValue","disabled","hint","type"]),t.createVNode(d,{modelValue:e.badLoginAttempt,"onUpdate:modelValue":n[6]||(n[6]=t=>e.badLoginAttempt=t),location:"bottom right",timeout:5e3},{default:t.withCtx((()=>[n[9]||(n[9]=t.createTextVNode(" Username or password was incorrect. ")),t.createVNode(c,{color:"pink",variant:"text",onClick:n[5]||(n[5]=t=>e.badLoginAttempt=!1)},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode(" Close ")]))),_:1})])),_:1},8,["modelValue"]),t.createVNode(c,{class:"mr-2 my-2",type:"submit",loading:e.awaitingResponse,color:e.buttonStatus.color,disabled:!!e.passwordError||e.password!==e.retypedPassword},{default:t.withCtx((()=>[t.createVNode(u,{start:""},{default:t.withCtx((()=>n[10]||(n[10]=[t.createTextVNode("mdi-lock-open")]))),_:1}),n[11]||(n[11]=t.createTextVNode(" Create Account "))])),_:1},8,["loading","color","disabled"]),e.registrationRoute?(t.openBlock(),t.createBlock(p,{key:0,to:"login"},{default:t.withCtx((()=>[t.createVNode(c,{variant:"text"},{default:t.withCtx((()=>n[12]||(n[12]=[t.createTextVNode("Log In")]))),_:1})])),_:1})):(t.openBlock(),t.createBlock(c,{key:1,variant:"text",onClick:e.toggle},{default:t.withCtx((()=>n[13]||(n[13]=[t.createTextVNode(" Log In ")]))),_:1},8,["onClick"]))])),_:1},8,["onSubmit"])])),_:1})])),_:1})}]]),gr=t.defineComponent({name:"RequestPasswordReset",emits:["cancel","success"],data:()=>({email:"",emailError:!1,emailHint:"",isSubmitting:!1,requestSent:!1}),methods:{validateEmail(){if(this.emailError=!1,this.emailHint="",!this.email)return;/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)||(this.emailError=!0,this.emailHint="Please enter a valid email address")},async handleSubmit(){if(this.validateEmail(),!this.emailError&&this.email){this.isSubmitting=!0;try{const e="undefined"!=typeof window?window.location.origin:void 0,t=await ie(this.email,e);t.ok?(this.requestSent=!0,this.$emit("success",this.email)):I({text:t.error||"Failed to send reset email",status:o.Status.error})}catch(e){I({text:"An unexpected error occurred",status:o.Status.error})}finally{this.isSubmitting=!1}}}}}),fr={key:1,class:"text-center"};const kr=p(gr,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-form"),p=t.resolveComponent("v-card-text"),h=t.resolveComponent("v-spacer"),m=t.resolveComponent("v-card-actions"),g=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(g,null,{default:t.withCtx((()=>[t.createVNode(s,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode(" Reset Password ")]))),_:1}),t.createVNode(p,{class:"pa-6"},{default:t.withCtx((()=>[e.requestSent?(t.openBlock(),t.createElementBlock("div",fr,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("mdi-email-check")]))),_:1}),n[9]||(n[9]=t.createElementVNode("h3",{class:"mb-2"},"Check Your Email",-1)),t.createElementVNode("p",null,[n[7]||(n[7]=t.createTextVNode(" If an account exists with ")),t.createElementVNode("strong",null,t.toDisplayString(e.email),1),n[8]||(n[8]=t.createTextVNode(", you will receive a password reset link shortly. "))]),n[10]||(n[10]=t.createElementVNode("p",{class:"text-caption mt-4"},"Didn't receive an email? Check your spam folder.",-1))])):(t.openBlock(),t.createBlock(u,{key:0,onSubmit:t.withModifiers(e.handleSubmit,["prevent"])},{default:t.withCtx((()=>[n[5]||(n[5]=t.createElementVNode("p",{class:"mb-4"}," Enter your email address and we'll send you a link to reset your password. ",-1)),t.createVNode(l,{modelValue:e.email,"onUpdate:modelValue":n[0]||(n[0]=t=>e.email=t),name:"email",label:"Email address",type:"email","prepend-icon":"mdi-email",error:e.emailError,hint:e.emailHint,disabled:e.isSubmitting,onBlur:e.validateEmail},null,8,["modelValue","error","hint","disabled","onBlur"]),t.createVNode(d,{type:"submit",color:"primary",class:"mt-4",loading:e.isSubmitting,disabled:!e.email||e.emailError,block:""},{default:t.withCtx((()=>[t.createVNode(c,{start:""},{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("mdi-email-send")]))),_:1}),n[4]||(n[4]=t.createTextVNode(" Send Reset Link "))])),_:1},8,["loading","disabled"])])),_:1},8,["onSubmit"]))])),_:1}),e.requestSent?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(m,{key:0},{default:t.withCtx((()=>[t.renderSlot(e.$slots,"back-action",{},(()=>[t.createVNode(d,{variant:"text",onClick:n[1]||(n[1]=t=>e.$emit("cancel"))},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode(" Cancel ")]))),_:1})])),t.createVNode(h)])),_:3}))])),_:3})}]]),br={key:0},yr={key:"login-buttons"},vr={key:"user-chip"},wr=p(t.defineComponent({__name:"UserLoginAndRegistrationContainer",props:{showLoginButton:{type:Boolean},redirectToPath:{},showRegistration:{type:Boolean},onSignupSuccess:{type:Function}},emits:["signup-success"],setup(e,{emit:n}){const o=e,a=n,s=i.useRoute(),l=ir(),c=lr();t.onMounted((async()=>{await c.detectSyncStrategy()}));const d=t.computed((()=>{if(!s.name||"string"!=typeof s.name)return!0;const e=s.name.toLowerCase();return!("login"===e||"signup"===e)})),u=t.computed((()=>l.onLoadComplete)),p=t.computed((()=>l._user?l._user.getUsername().startsWith(r.GuestUsername):!l.loginAndRegistration.loggedIn)),h=t.computed((()=>({...c.config.value||{showLoginRegistration:!0,showLogout:!0,showResetData:!1,logoutLabel:"Log out",resetLabel:""},...void 0!==o.showRegistration&&{showLoginRegistration:o.showRegistration}}))),m=t.computed({get:()=>l.loginAndRegistration.regDialogOpen,set:e=>{l.loginAndRegistration.regDialogOpen=e}}),g=t.computed({get:()=>l.loginAndRegistration.loginDialogOpen,set:e=>{l.loginAndRegistration.loginDialogOpen=e}}),f=t.ref(!1),k=()=>{if(m.value&&g.value)throw new Error("Registration / Login dialogs both activated.");if(m.value===g.value)throw new Error("Registration / Login dialogs toggled while both were dormant.");m.value=!m.value,g.value=!g.value},b=()=>{g.value=!1,f.value=!0},y=()=>{f.value=!1},v=e=>{m.value=!1,o.onSignupSuccess&&o.onSignupSuccess(e),a("signup-success",e)};return(e,n)=>{const o=t.resolveComponent("v-btn"),r=t.resolveComponent("v-dialog");return u.value&&d.value?(t.openBlock(),t.createElementBlock("div",br,[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[p.value?(t.openBlock(),t.createElementBlock("div",yr,[h.value.showLoginRegistration?(t.openBlock(),t.createBlock(r,{key:0,modelValue:m.value,"onUpdate:modelValue":n[0]||(n[0]=e=>m.value=e),width:"500px"},{activator:t.withCtx((({props:e})=>[t.createVNode(o,t.mergeProps({class:"mr-2",size:"small",color:"success"},e),{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("Sign Up")]))),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(mr,{onToggle:k,onSignupSuccess:v,"on-signup-success":v})])),_:1},8,["modelValue"])):t.createCommentVNode("",!0),t.createVNode(r,{modelValue:g.value,"onUpdate:modelValue":n[1]||(n[1]=e=>g.value=e),width:"500px"},{activator:t.withCtx((({props:e})=>[t.createVNode(o,t.mergeProps({size:"small",color:"success"},e),{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("Log In")]))),_:2},1040)])),default:t.withCtx((()=>[t.createVNode(pr,{onToggle:k,onForgotPassword:b})])),_:1},8,["modelValue"]),t.createVNode(r,{modelValue:f.value,"onUpdate:modelValue":n[2]||(n[2]=e=>f.value=e),width:"500px"},{default:t.withCtx((()=>[t.createVNode(kr,{onCancel:y,onSuccess:y})])),_:1},8,["modelValue"])])):(t.openBlock(),t.createElementBlock("div",vr,[t.createVNode(cr)]))])),_:1})])):t.createCommentVNode("",!0)}}}),[["__scopeId","data-v-5a55bdf0"]]),xr=t.defineComponent({name:"VerifyEmail",emits:["verified","error"],props:{token:{type:String,default:null}},data:()=>({isVerifying:!1,verificationStatus:null,errorMessage:"",username:""}),async mounted(){await this.performVerification()},methods:{async performVerification(){const e=this.token||this.getTokenFromURL();if(!e)return this.verificationStatus="error",void(this.errorMessage="No verification token provided");this.isVerifying=!0;try{const t=await re(e);t.ok?(this.verificationStatus="success",this.username=t.username||"",I({text:"Email verified successfully!",status:o.Status.ok})):(this.verificationStatus="error",this.errorMessage=t.error||"Verification failed",I({text:t.error||"Verification failed",status:o.Status.error}))}catch(t){this.verificationStatus="error",this.errorMessage="An unexpected error occurred",I({text:"An unexpected error occurred",status:o.Status.error})}finally{this.isVerifying=!1}},getTokenFromURL(){if("undefined"==typeof window)return null;return new URLSearchParams(window.location.search).get("token")}}}),Cr={key:0,class:"text-center"},Sr={key:1,class:"text-center"},_r={key:0},Nr={key:2,class:"text-center"},Er={key:3,class:"text-center"};const Br=p(xr,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-progress-circular"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-card-text"),u=t.resolveComponent("v-spacer"),p=t.resolveComponent("v-btn"),h=t.resolveComponent("v-card-actions"),m=t.resolveComponent("v-card"),g=t.resolveComponent("v-col"),f=t.resolveComponent("v-row"),k=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(k,{class:"fill-height",fluid:""},{default:t.withCtx((()=>[t.createVNode(f,{align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(g,{cols:"12",sm:"8",md:"6"},{default:t.withCtx((()=>[t.createVNode(m,null,{default:t.withCtx((()=>[t.createVNode(s,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode(" Email Verification ")]))),_:1}),t.createVNode(d,{class:"pa-6"},{default:t.withCtx((()=>[e.isVerifying?(t.openBlock(),t.createElementBlock("div",Cr,[t.createVNode(l,{indeterminate:"",color:"primary",size:"64",class:"mb-4"}),n[3]||(n[3]=t.createElementVNode("p",null,"Verifying your email...",-1))])):"success"===e.verificationStatus?(t.openBlock(),t.createElementBlock("div",Sr,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-check-circle")]))),_:1}),n[5]||(n[5]=t.createElementVNode("h3",{class:"mb-2"},"Email Verified!",-1)),n[6]||(n[6]=t.createElementVNode("p",null,"Your account has been successfully verified.",-1)),e.username?(t.openBlock(),t.createElementBlock("p",_r,"Welcome, "+t.toDisplayString(e.username)+"!",1)):t.createCommentVNode("",!0)])):"error"===e.verificationStatus?(t.openBlock(),t.createElementBlock("div",Nr,[t.createVNode(c,{color:"error",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("mdi-alert-circle")]))),_:1}),n[8]||(n[8]=t.createElementVNode("h3",{class:"mb-2"},"Verification Failed",-1)),t.createElementVNode("p",null,t.toDisplayString(e.errorMessage),1)])):(t.openBlock(),t.createElementBlock("div",Er,[t.createVNode(c,{color:"warning",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[9]||(n[9]=[t.createTextVNode("mdi-help-circle")]))),_:1}),n[10]||(n[10]=t.createElementVNode("h3",{class:"mb-2"},"No Verification Token",-1)),n[11]||(n[11]=t.createElementVNode("p",null,"Please use the link from your verification email.",-1))]))])),_:1}),t.createVNode(h,null,{default:t.withCtx((()=>[t.createVNode(u),t.renderSlot(e.$slots,"actions",{status:e.verificationStatus,username:e.username},(()=>["success"===e.verificationStatus?(t.openBlock(),t.createBlock(p,{key:0,color:"primary",onClick:n[0]||(n[0]=t=>e.$emit("verified",e.username))},{default:t.withCtx((()=>n[12]||(n[12]=[t.createTextVNode(" Continue ")]))),_:1})):"error"===e.verificationStatus?(t.openBlock(),t.createBlock(p,{key:1,variant:"text",onClick:n[1]||(n[1]=t=>e.$emit("error",e.errorMessage))},{default:t.withCtx((()=>n[13]||(n[13]=[t.createTextVNode(" Close ")]))),_:1})):t.createCommentVNode("",!0)]))])),_:3})])),_:3})])),_:3})])),_:3})])),_:3})}]]),Tr=t.defineComponent({name:"ResetPassword",emits:["complete","error"],props:{token:{type:String,default:null}},data:()=>({password:"",confirmPassword:"",passwordVisible:!1,confirmPasswordError:!1,confirmPasswordHint:"",isSubmitting:!1,isComplete:!1}),computed:{canSubmit(){return this.password.length>=4&&this.confirmPassword.length>=4&&this.password===this.confirmPassword&&!this.confirmPasswordError}},methods:{validateConfirmPassword(){this.confirmPasswordError=!1,this.confirmPasswordHint="",this.confirmPassword&&this.password!==this.confirmPassword&&(this.confirmPasswordError=!0,this.confirmPasswordHint="Passwords do not match")},async handleSubmit(){if(this.validateConfirmPassword(),!this.canSubmit)return;const e=this.token||this.getTokenFromURL();if(!e)return I({text:"No reset token provided. Please use the link from your email.",status:o.Status.error}),void this.$emit("error","No token");this.isSubmitting=!0;try{const t=await se(e,this.password);t.ok?(this.isComplete=!0,I({text:"Password reset successfully!",status:o.Status.ok})):(I({text:t.error||"Failed to reset password",status:o.Status.error}),this.$emit("error",t.error))}catch(t){I({text:"An unexpected error occurred",status:o.Status.error}),this.$emit("error","Unexpected error")}finally{this.isSubmitting=!1}},getTokenFromURL(){if("undefined"==typeof window)return null;return new URLSearchParams(window.location.search).get("token")}}}),Vr={key:1,class:"text-center"};const Rr=p(Tr,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-card-title"),l=t.resolveComponent("v-text-field"),c=t.resolveComponent("v-icon"),d=t.resolveComponent("v-btn"),u=t.resolveComponent("v-form"),p=t.resolveComponent("v-card-text"),h=t.resolveComponent("v-spacer"),m=t.resolveComponent("v-card-actions"),g=t.resolveComponent("v-card"),f=t.resolveComponent("v-col"),k=t.resolveComponent("v-row"),b=t.resolveComponent("v-container");return t.openBlock(),t.createBlock(b,{class:"fill-height",fluid:""},{default:t.withCtx((()=>[t.createVNode(k,{align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(f,{cols:"12",sm:"8",md:"6"},{default:t.withCtx((()=>[t.createVNode(g,null,{default:t.withCtx((()=>[t.createVNode(s,{class:"text-h5 bg-grey-lighten-2"},{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode(" Set New Password ")]))),_:1}),t.createVNode(p,{class:"pa-6"},{default:t.withCtx((()=>[e.isComplete?(t.openBlock(),t.createElementBlock("div",Vr,[t.createVNode(c,{color:"success",size:"64",class:"mb-4"},{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("mdi-check-circle")]))),_:1}),n[9]||(n[9]=t.createElementVNode("h3",{class:"mb-2"},"Password Reset Successful!",-1)),n[10]||(n[10]=t.createElementVNode("p",null,"Your password has been updated. You can now log in with your new password.",-1))])):(t.openBlock(),t.createBlock(u,{key:0,onSubmit:t.withModifiers(e.handleSubmit,["prevent"])},{default:t.withCtx((()=>[n[7]||(n[7]=t.createElementVNode("p",{class:"mb-4"},"Enter your new password below.",-1)),t.createVNode(l,{modelValue:e.password,"onUpdate:modelValue":n[0]||(n[0]=t=>e.password=t),"prepend-icon":"mdi-lock",name:"password",label:"New password",min:"4","append-icon":e.passwordVisible?"mdi-eye-off":"mdi-eye",type:e.passwordVisible?"text":"password",disabled:e.isSubmitting,"onClick:append":n[1]||(n[1]=()=>e.passwordVisible=!e.passwordVisible)},null,8,["modelValue","append-icon","type","disabled"]),t.createVNode(l,{modelValue:e.confirmPassword,"onUpdate:modelValue":n[2]||(n[2]=t=>e.confirmPassword=t),"prepend-icon":"mdi-lock",name:"confirmPassword",label:"Confirm new password",min:"4",type:e.passwordVisible?"text":"password",error:e.confirmPasswordError,hint:e.confirmPasswordHint,disabled:e.isSubmitting,onBlur:e.validateConfirmPassword},null,8,["modelValue","type","error","hint","disabled","onBlur"]),t.createVNode(d,{type:"submit",color:"primary",class:"mt-4",loading:e.isSubmitting,disabled:!e.canSubmit,block:""},{default:t.withCtx((()=>[t.createVNode(c,{start:""},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-lock-reset")]))),_:1}),n[6]||(n[6]=t.createTextVNode(" Reset Password "))])),_:1},8,["loading","disabled"])])),_:1},8,["onSubmit"]))])),_:1}),e.isComplete?(t.openBlock(),t.createBlock(m,{key:0},{default:t.withCtx((()=>[t.createVNode(h),t.renderSlot(e.$slots,"success-action",{},(()=>[t.createVNode(d,{color:"primary",onClick:n[3]||(n[3]=t=>e.$emit("complete"))},{default:t.withCtx((()=>n[11]||(n[11]=[t.createTextVNode(" Continue to Login ")]))),_:1})]))])),_:3})):t.createCommentVNode("",!0)])),_:3})])),_:3})])),_:3})])),_:3})}]]),Ir=t.defineComponent({name:"SkTagsInput",components:{VueTagsInput:s.VueTagsInput},props:{courseID:{type:String,required:!0,default:""},cardID:{type:String,required:!1,default:""},hideSubmit:{type:Boolean,required:!1,default:!1}},data:()=>({loading:!0,tag:"",tags:[],initialTags:[],availableCourseTags:[],separators:[";",","," "],courseDB:null}),computed:{autoCompleteSuggestions(){return this.availableCourseTags.filter((e=>-1!==e.name.toLowerCase().indexOf(this.tag.toLowerCase()))).map((e=>({text:e.name,data:{snippet:e.snippet}})))}},watch:{async cardID(){await this.getAppliedTags()},async courseID(){this.courseDB=r.getDataLayer().getCourseDB(this.courseID),await this.updateAvailableCourseTags()}},async created(){this.courseDB=r.getDataLayer().getCourseDB(this.courseID),await this.updateAvailableCourseTags(),await this.getAppliedTags()},methods:{tagsChanged(e){console.log(`[TagsInput] Tags changing: ${JSON.stringify(e)}`),this.tags=e},async getAppliedTags(){this.initialTags=[],this.tags=[];try{(await this.courseDB.getAppliedTags(this.cardID)).rows.forEach((e=>{console.log(`[TagsInput] The following tag is applied:\n\t${JSON.stringify(e)}`),this.tags.push({text:e.value.name,style:"",classes:""})})),this.initialTags=this.tags.map((e=>e.text))}catch(e){console.error(`Error in init-getAppliedTags: ${JSON.stringify(e)}, ${e}`)}finally{this.loading=!1}},async updateAvailableCourseTags(){try{this.availableCourseTags=(await this.courseDB.getCourseTagStubs()).rows.map((e=>e.doc))}catch(e){console.error(`Error in init-availableCourseTags: ${JSON.stringify(e)}`)}},async submit(){console.log("[TagsInput] tagsInput is submitting..."),this.loading=!0;try{await Promise.all(this.tags.map((async e=>{if(!this.initialTags.includes(e.text))try{await this.courseDB.addTagToCard(this.cardID,e.text),console.log(`[TagsInput] Successfully added tag: ${e.text}`)}catch(t){console.error(`Failed to add tag ${e.text}:`,t)}})))}catch(e){console.error(`Exception adding tags: ${JSON.stringify(e)}`)}try{await Promise.all(this.initialTags.map((async e=>{if(0===this.tags.filter((t=>t.text===e)).length)try{await this.courseDB.removeTagFromCard(this.cardID,e),console.log(`[TagsInput] Successfully removed tag: ${e}`)}catch(t){console.error(`Failed to remove tag ${e}:`,t)}})))}catch(e){console.error(`Exception removing tags: ${JSON.stringify(e)}`)}this.loading=!1}}}),Ar={"data-cy":"tags-input"},Mr={class:"tag-name"},Dr={key:0,class:"tag-snippet"};const Lr=p(Ir,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("vue-tags-input"),l=t.resolveComponent("v-btn");return t.openBlock(),t.createElementBlock("div",Ar,[t.createVNode(s,{modelValue:e.tag,"onUpdate:modelValue":n[0]||(n[0]=t=>e.tag=t),tags:e.tags,"autocomplete-items":e.autoCompleteSuggestions,separators:e.separators,"add-on-key":e.separators,onTagsChanged:e.tagsChanged},{"autocomplete-item":t.withCtx((e=>[t.createElementVNode("div",{class:t.normalizeClass(["autocomplete-item",{"is-active":e.selected}])},[t.createElementVNode("span",Mr,t.toDisplayString(e.item.text),1),e.item.data&&e.item.data.snippet?(t.openBlock(),t.createElementBlock("span",Dr," - "+t.toDisplayString(e.item.data.snippet),1)):t.createCommentVNode("",!0)],2)])),_:1},8,["modelValue","tags","autocomplete-items","separators","add-on-key","onTagsChanged"]),e.hideSubmit?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(l,{key:0,color:"success",loading:e.loading,onClick:e.submit},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("Save Changes")]))),_:1},8,["loading","onClick"]))])}],["__scopeId","data-v-f7373dc0"]]),$r=t.defineComponent({name:"CourseCardBrowser",components:{CardLoader:Nt,TagsInput:Lr,PaginatingToolbar:O},props:{courseId:{type:String,required:!0},tagId:{type:String,required:!1,default:""},viewLookupFunction:{type:Function,required:!0,default:()=>(console.warn("No viewLookupFunction provided to CourseCardBrowser"),null)},editMode:{type:String,required:!1,default:"full"}},data(){return{courseDB:null,page:1,pages:[],cards:[],cardData:{},cardPreview:{},cardElos:{},cardTags:{},internalEditMode:"none",delBtn:!1,updatePending:!0,userIsRegistered:!1,questionCount:0,tags:[],viewLookup:this.viewLookupFunction}},async created(){try{this.courseDB=r.getDataLayer().getCourseDB(this.courseId),this.tagId?this.questionCount=(await this.courseDB.getTag(this.tagId)).taggedCards.length:this.questionCount=(await this.courseDB.getCourseInfo()).cardCount;for(let e=1;25*(e-1)<this.questionCount;e++)this.pages.push(e);await this.populateTableData()}catch(e){console.error("Error initializing CourseCardBrowser:",e)}finally{this.updatePending=!1}},methods:{idQualify(e){return e.includes("-")?e:`${this.courseId}-${e}`},idToQualifiedObject(e){if(e.includes("-")){const t=e.split("-");return{courseID:t[0],cardID:t[1]}}return{courseID:this.courseId,cardID:e}},first(){this.page=1,this.populateTableData()},prev(){this.page--,this.populateTableData()},next(){this.page++,this.populateTableData()},last(){this.page=this.pages.length,this.populateTableData()},setPage(e){this.page=e,this.populateTableData()},async loadCardTags(e){try{await Promise.all(e.map((async e=>{const t=await this.courseDB.getAppliedTags(e);this.cardTags[e]=t.rows.map((e=>({name:e.value.name,snippet:e.value.snippet,count:e.value.count})))})))}catch(t){console.error("Error loading card tags:",t)}},clearSelections(e=""){this.cards.forEach((t=>{t.card.cardID!==e&&(t.isOpen=!1)})),this.internalEditMode="none",this.delBtn=!1},async deleteCard(e){console.log(`Deleting card ${e}`);const t=await this.courseDB.removeCard(e);t.ok?(this.cards=this.cards.filter((t=>t.card.cardID!=e)),this.clearSelections()):(console.error(`Failed to delete card:\n\n${JSON.stringify(t)}`),I({text:"Failed to delete card",status:o.Status.error}))},async populateTableData(){if(this.updatePending=!0,this.tagId){const e=await this.courseDB.getTag(this.tagId);this.cards=e.taggedCards.map((e=>({card:{cardID:e,courseID:this.courseId},isOpen:!1,delBtn:!1})))}else this.cards=(await this.courseDB.getCardsByELO(0,25)).map((e=>({card:e,isOpen:!1,delBtn:!1})));const e=[],t=(await this.courseDB.getCourseDocs(this.cards.map((e=>e.card.cardID)),{include_docs:!0})).rows.filter((e=>!!e.doc||(console.error(`Card ${e.id}.doc not found.\ncard: ${JSON.stringify(e)}`),!1))).map((e=>e.doc));this.cards=this.cards.filter((t=>!e.includes(t.card.cardID))),t.forEach((e=>{e&&e.id_displayable_data&&(this.cardData[e._id]=e.id_displayable_data)}));try{await Promise.all(this.cards.map((async e=>{const n=e.card.cardID,r=t.find((e=>e._id==n));if(!r||!r.id_displayable_data)return void console.error(`No valid data found for card ${n}`);const a=this.viewLookupFunction(r.id_view||"default.question.BlanksCard.FillInView"),i=r.id_displayable_data.map((e=>this.courseDB.getCourseDoc(e,{attachments:!1,binary:!0}))),s=await Promise.all(i);await Promise.all(s.map((t=>{[].unshift(o.displayableDataToViewData(t)),this.cardPreview[e.card.cardID]=a.name?a.name:"Unknown"})))})));const e=this.cards.map((e=>e.card.cardID)),n=await this.courseDB.getCardEloData(e);e.forEach(((e,t)=>{this.cardElos[e]=n[t]})),await this.loadCardTags(e)}catch(n){console.error("Error populating table data:",n)}finally{this.updatePending=!1,this.$forceUpdate()}}}}),Or={key:0,class:"d-flex justify-center align-center pa-6"},Pr={key:1},zr={key:0,class:"px-4 py-2 bg-blue-grey-lighten-5"},jr={key:0,class:"mt-4"},Fr={class:"mt-4"},Ur={key:0,class:"ml-4"};const qr=p($r,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-progress-circular"),l=t.resolveComponent("paginating-toolbar"),c=t.resolveComponent("v-list-item-title"),d=t.resolveComponent("v-list-item-subtitle"),u=t.resolveComponent("v-btn"),p=t.resolveComponent("v-icon"),h=t.resolveComponent("v-speed-dial"),m=t.resolveComponent("v-list-item"),g=t.resolveComponent("card-loader"),f=t.resolveComponent("v-chip"),k=t.resolveComponent("v-chip-group"),b=t.resolveComponent("tags-input"),y=t.resolveComponent("v-list"),v=t.resolveComponent("v-card");return t.openBlock(),t.createBlock(v,null,{default:t.withCtx((()=>[e.updatePending?(t.openBlock(),t.createElementBlock("div",Or,[t.createVNode(s,{indeterminate:"",color:"primary"})])):(t.openBlock(),t.createElementBlock("div",Pr,[t.createVNode(l,{title:"Exercises",page:e.page,pages:e.pages,subtitle:`(${e.questionCount})`,onFirst:e.first,onPrev:e.prev,onNext:e.next,onLast:e.last,onSetPage:n[0]||(n[0]=t=>e.setPage(t))},null,8,["page","pages","subtitle","onFirst","onPrev","onNext","onLast"]),t.createVNode(y,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cards,(o=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:o.card.cardID},[t.createVNode(m,{class:t.normalizeClass({"bg-blue-grey-lighten-5":o.isOpen,"elevation-4":o.isOpen}),density:"compact","data-cy":"course-card"},{prepend:t.withCtx((()=>[t.createElementVNode("div",null,[t.createVNode(c,{class:t.normalizeClass([{"text-blue-grey-darken-1":o.isOpen},"font-weight-medium"])},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.cardPreview[o.card.cardID]),1)])),_:2},1032,["class"]),t.createVNode(d,null,{default:t.withCtx((()=>[t.createTextVNode(" ELO: "+t.toDisplayString(e.cardElos[o.card.cardID]?.global?.score||"(unknown)"),1)])),_:2},1024)])])),append:t.withCtx((()=>[t.createVNode(h,{modelValue:o.isOpen,"onUpdate:modelValue":e=>o.isOpen=e,location:"left center",transition:"slide-x-transition",style:{display:"flex","flex-direction":"row-reverse"},persistent:""},{activator:t.withCtx((({props:n})=>[t.createVNode(u,t.mergeProps({ref_for:!0},n,{icon:o.isOpen?"mdi-close":"mdi-plus",size:"small",variant:"text",onClick:t=>e.clearSelections(o.card.cardID)}),null,16,["icon","onClick"])])),default:t.withCtx((()=>["full"===e.editMode?(t.openBlock(),t.createBlock(u,{key:"tags",icon:"",size:"small",variant:"tags"!==e.internalEditMode?"outlined":"elevated",color:"tags"===e.internalEditMode?"teal":"teal-darken-3",onClick:n[1]||(n[1]=t.withModifiers((t=>e.internalEditMode="tags"),["stop"]))},{default:t.withCtx((()=>[t.createVNode(p,null,{default:t.withCtx((()=>n[4]||(n[4]=[t.createTextVNode("mdi-bookmark")]))),_:1})])),_:1},8,["variant","color"])):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(u,{key:"flag",icon:"",size:"small",variant:"flag"!==e.internalEditMode?"outlined":"elevated",color:"flag"===e.internalEditMode?"error":"error-darken-3",onClick:n[2]||(n[2]=t.withModifiers((t=>e.internalEditMode="flag"),["stop"]))},{default:t.withCtx((()=>[t.createVNode(p,null,{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode("mdi-flag")]))),_:1})])),_:1},8,["variant","color"])):t.createCommentVNode("",!0)])),_:2},1032,["modelValue","onUpdate:modelValue"])])),_:2},1032,["class"]),o.isOpen?(t.openBlock(),t.createElementBlock("div",zr,[t.createVNode(g,{qualified_id:o.card,"view-lookup":e.viewLookup,class:"elevation-1"},null,8,["qualified_id","view-lookup"]),"readonly"===e.editMode&&e.cardTags[o.card.cardID]?(t.openBlock(),t.createElementBlock("div",jr,[t.createVNode(k,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.cardTags[o.card.cardID],(e=>(t.openBlock(),t.createBlock(f,{key:e.name,size:"small",color:"primary",variant:"outlined"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.name),1)])),_:2},1024)))),128))])),_:2},1024)])):t.createCommentVNode("",!0),t.withDirectives(t.createVNode(b,{"course-i-d":e.courseId,"card-i-d":o.card.cardID,class:"mt-4"},null,8,["course-i-d","card-i-d"]),[[t.vShow,"tags"===e.internalEditMode&&"full"===e.editMode]]),t.withDirectives(t.createElementVNode("div",Fr,[t.createVNode(u,{color:"error",variant:"outlined",onClick:e=>o.delBtn=!0},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode(" Delete this card ")]))),_:2},1032,["onClick"]),o.delBtn?(t.openBlock(),t.createElementBlock("span",Ur,[n[8]||(n[8]=t.createElementVNode("span",{class:"mr-2"},"Are you sure?",-1)),t.createVNode(u,{color:"error",variant:"elevated",onClick:t=>e.deleteCard(o.card.cardID)},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode(" Confirm ")]))),_:2},1032,["onClick"])])):t.createCommentVNode("",!0)],512),[[t.vShow,"flag"===e.internalEditMode&&"full"===e.editMode]])])):t.createCommentVNode("",!0)],64)))),128))])),_:1}),t.createVNode(l,{class:"elevation-0",page:e.page,pages:e.pages,onFirst:e.first,onPrev:e.prev,onNext:e.next,onLast:e.last,onSetPage:n[3]||(n[3]=t=>e.setPage(t))},null,8,["page","pages","onFirst","onPrev","onNext","onLast"])]))])),_:1})}],["__scopeId","data-v-5ecc9d21"]]),Hr=t.defineComponent({name:"CourseInformation",components:{CourseCardBrowser:qr},props:{courseId:{type:String,required:!0},viewLookupFunction:{type:Function,required:!1,default:e=>(console.warn("No viewLookupFunction provided to CourseInformation"),null)},editMode:{type:String,required:!1,default:"full"}},data:()=>({courseDB:null,nameRules:[e=>!(e.length>30)||"Course name must be 30 characters or less"],updatePending:!0,courseConfig:{},userIsRegistered:!1,tags:[],user:null}),computed:{},async created(){this.courseDB=r.getDataLayer().getCourseDB(this.courseId),this.user=await ar();const e=await this.user.getCourseRegistrationsDoc();"admin"===this.user.getUsername()?this.userIsRegistered=!0:this.userIsRegistered=1===e.courses.filter((e=>e.courseID===this.courseId&&("active"===e.status||void 0===e.status))).length,this.courseConfig=await this.courseDB.getCourseConfig(),this.tags=(await this.courseDB.getCourseTagStubs()).rows.map((e=>e.doc)),this.updatePending=!1},methods:{async register(){o.log(`Registering for ${this.courseId}`);(await this.user.registerForCourse(this.courseId)).ok&&(this.userIsRegistered=!0)},async drop(){o.log(`Dropping course ${this.courseId}`);(await this.user.dropCourse(this.courseId)).ok&&(this.userIsRegistered=!1)}}}),Zr={key:0},Kr={class:"text-h4 mb-2"},Gr={class:"text-body-2"},Wr={key:0},Qr={key:1};const Yr=p(Hr,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-btn"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-toolbar-title"),d=t.resolveComponent("v-toolbar-items"),u=t.resolveComponent("v-toolbar"),p=t.resolveComponent("v-chip"),h=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-card"),g=t.resolveComponent("course-card-browser");return e.updatePending?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",Zr,[t.renderSlot(e.$slots,"header",{courseConfig:e.courseConfig,courseId:e.courseId},(()=>[t.createElementVNode("h1",Kr,t.toDisplayString(e.courseConfig.name),1)]),!0),t.createElementVNode("p",Gr,t.toDisplayString(e.courseConfig.description),1),t.renderSlot(e.$slots,"actions",{userIsRegistered:e.userIsRegistered,courseId:e.courseId,editMode:e.editMode,register:e.register,drop:e.drop},(()=>[t.createVNode(t.Transition,{name:"component-fade",mode:"out-in"},{default:t.withCtx((()=>[e.userIsRegistered?(t.openBlock(),t.createElementBlock("div",Wr,[t.createVNode(s,{color:"success","data-cy":"focused-study-session-btn",class:"me-2"},{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("Start ad study session")]))),_:1}),"full"===e.editMode?(t.openBlock(),t.createBlock(s,{key:0,"data-cy":"add-content-btn",color:"indigo-lighten-1",class:"me-2"},{default:t.withCtx((()=>[t.createVNode(l,{start:""},{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-plus")]))),_:1}),n[2]||(n[2]=t.createTextVNode(" Add content "))])),_:1})):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(s,{key:1,color:"green-darken-2",title:"Rank course content for difficulty",class:"me-2"},{default:t.withCtx((()=>[t.createVNode(l,{start:""},{default:t.withCtx((()=>n[3]||(n[3]=[t.createTextVNode("mdi-format-list-numbered")]))),_:1}),n[4]||(n[4]=t.createTextVNode(" Arrange "))])),_:1})):t.createCommentVNode("",!0),"full"===e.editMode?(t.openBlock(),t.createBlock(s,{key:2,color:"error",size:"small",variant:"outlined",onClick:e.drop},{default:t.withCtx((()=>n[5]||(n[5]=[t.createTextVNode(" Drop this course ")]))),_:1},8,["onClick"])):t.createCommentVNode("",!0)])):(t.openBlock(),t.createElementBlock("div",Qr,[t.createVNode(s,{"data-cy":"register-btn",color:"primary",class:"me-2",onClick:e.register},{default:t.withCtx((()=>n[6]||(n[6]=[t.createTextVNode("Register")]))),_:1},8,["onClick"]),t.createVNode(s,{variant:"outlined",color:"primary",class:"me-2"},{default:t.withCtx((()=>n[7]||(n[7]=[t.createTextVNode("Start a trial study session")]))),_:1})]))])),_:1})]),!0),t.renderSlot(e.$slots,"additional-content",{},void 0,!0),t.createVNode(m,{class:"my-2"},{default:t.withCtx((()=>[t.createVNode(u,{density:"compact"},{default:t.withCtx((()=>[t.createVNode(c,null,{default:t.withCtx((()=>n[8]||(n[8]=[t.createTextVNode("Tags")]))),_:1}),t.createVNode(d,null,{default:t.withCtx((()=>[t.createVNode(s,{variant:"text"},{default:t.withCtx((()=>[t.createTextVNode("("+t.toDisplayString(e.tags.length)+")",1)])),_:1})])),_:1})])),_:1}),t.createVNode(h,null,{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.tags,((n,o)=>(t.openBlock(),t.createElementBlock("span",{key:o},[t.renderSlot(e.$slots,"tag-link",{tag:n,courseId:e.courseId},(()=>[t.createVNode(p,{variant:"tonal",class:"me-2 mb-2"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n.name),1)])),_:2},1024)]),!0)])))),128))])),_:3})])),_:3}),t.createVNode(g,{class:"my-3","course-id":e.courseId,"view-lookup-function":e.viewLookupFunction,"edit-mode":e.editMode},null,8,["course-id","view-lookup-function","edit-mode"])]))}],["__scopeId","data-v-38e9efe1"]]),Jr=t.defineComponent({name:"CardBrowser",components:{CardViewer:ce},props:{views:{type:Array,required:!0},data:{type:Array,required:!0},suppressSpinner:{type:Boolean,default:!1}},data:()=>({viewIndex:0,previewMode:ct()}),computed:{spinner(){return this.views.length>1}},created(){console.log("[CardBrowser] Card browser created. Cards now in 'prewviewMode'"),this.previewMode.setPreviewMode(!0)},unmounted(){console.log("[CardBrowser] Card browser unmounted. Cards no longer in 'prewviewMode'"),this.previewMode.setPreviewMode(!1)},methods:{incrementView(){this.viewIndex++,this.viewIndex=(this.viewIndex+this.views.length)%this.views.length},decrementView(){this.viewIndex--,this.viewIndex=(this.viewIndex+this.views.length)%this.views.length}}}),Xr={key:0,class:"text-subtitle-1 pa-2"};const ea=p(Jr,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("CardViewer"),l=t.resolveComponent("v-icon"),c=t.resolveComponent("v-btn"),d=t.resolveComponent("v-row");return t.openBlock(),t.createBlock(d,{column:"",align:"center",justify:"center"},{default:t.withCtx((()=>[t.createVNode(s,{view:e.views[e.viewIndex],data:e.data,course_id:"[browsing]",card_id:"[browsing]"},null,8,["view","data"]),n[2]||(n[2]=t.createElementVNode("br",null,null,-1)),n[3]||(n[3]=t.createElementVNode("br",null,null,-1)),e.suppressSpinner?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",Xr,[e.spinner?(t.openBlock(),t.createBlock(c,{key:0,icon:"",variant:"outlined",color:"primary",onClick:e.decrementView},{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>n[0]||(n[0]=[t.createTextVNode("mdi-chevron-left")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0),t.createTextVNode(" "+t.toDisplayString(e.views[e.viewIndex].name)+" ",1),e.spinner?(t.openBlock(),t.createBlock(c,{key:1,icon:"",variant:"outlined",color:"primary",onClick:e.incrementView},{default:t.withCtx((()=>[t.createVNode(l,null,{default:t.withCtx((()=>n[1]||(n[1]=[t.createTextVNode("mdi-chevron-right")]))),_:1})])),_:1},8,["onClick"])):t.createCommentVNode("",!0)]))])),_:1})}]]),ta=t.defineComponent({name:"CourseTagFilterWidget",props:{courseId:{type:String,required:!0},modelValue:{type:Object,default:void 0}},emits:["update:modelValue"],setup(e,{emit:n}){const a=t.ref(!0),i=t.ref([]),s=t.ref({}),l=t.ref(e.modelValue?{...e.modelValue}:o.emptyTagFilter()),c=t.computed((()=>i.value.filter((e=>!l.value.include.includes(e))))),d=t.computed((()=>o.hasActiveFilter(l.value)));async function u(){a.value=!0;try{const t=r.getDataLayer().getCourseDB(e.courseId),n=await t.getCourseTagStubs();i.value=[],s.value={};for(const e of n.rows)if(e.doc){const t=e.doc;i.value.push(t.name),t.snippet&&(s.value[t.name]=t.snippet)}i.value.sort(((e,t)=>e.localeCompare(t)))}catch(t){console.error("[CourseTagFilterWidget] Failed to load tags:",t),i.value=[],s.value={}}finally{a.value=!1}}return t.watch((()=>e.modelValue),(e=>{l.value=e?{...e}:o.emptyTagFilter()}),{deep:!0}),t.watch(l,(e=>{n("update:modelValue",{...e})}),{deep:!0}),t.watch((()=>e.courseId),(async e=>{e&&await u()})),t.onMounted((()=>{e.courseId&&u()})),{loading:a,availableTags:i,availableTagsForExclude:c,tagSnippets:s,localFilter:l,hasActiveFilter:d,fuzzyFilter:(e,t)=>{if(!t)return!0;const n=t.toLowerCase(),o=e.toLowerCase();let r=0;for(let a=0;a<o.length&&r<n.length;a++)o[a]===n[r]&&r++;return r===n.length}}}}),na={class:"course-tag-filter-widget"},oa={key:0,class:"filter-summary text-caption mt-2"},ra={key:0},aa={key:1},ia={key:2};const sa=p(ta,[["render",function(e,n,o,r,a,i){const s=t.resolveComponent("v-chip"),l=t.resolveComponent("v-list-item"),c=t.resolveComponent("v-autocomplete"),d=t.resolveComponent("v-icon");return t.openBlock(),t.createElementBlock("div",na,[t.createVNode(c,{modelValue:e.localFilter.include,"onUpdate:modelValue":n[0]||(n[0]=t=>e.localFilter.include=t),items:e.availableTags,loading:e.loading,disabled:e.loading,label:"Include tags",placeholder:"Type to search tags...",hint:"Cards must have at least one of these tags","persistent-hint":"",multiple:"",chips:"","closable-chips":"",clearable:"",density:"compact",variant:"outlined",class:"mb-2","custom-filter":e.fuzzyFilter,"no-data-text":"No matching tags found"},{chip:t.withCtx((({props:e,item:n})=>[t.createVNode(s,t.mergeProps(e,{color:"primary",variant:"tonal",size:"small"}),{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n.raw),1)])),_:2},1040)])),item:t.withCtx((({props:n,item:o})=>[t.createVNode(l,t.mergeProps(n,{title:o.raw}),t.createSlots({_:2},[e.tagSnippets[o.raw]?{name:"subtitle",fn:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.tagSnippets[o.raw]),1)])),key:"0"}:void 0]),1040,["title"])])),_:1},8,["modelValue","items","loading","disabled","custom-filter"]),t.createVNode(c,{modelValue:e.localFilter.exclude,"onUpdate:modelValue":n[1]||(n[1]=t=>e.localFilter.exclude=t),items:e.availableTagsForExclude,loading:e.loading,disabled:e.loading,label:"Exclude tags",placeholder:"Type to search tags...",hint:"Cards with these tags will be excluded","persistent-hint":"",multiple:"",chips:"","closable-chips":"",clearable:"",density:"compact",variant:"outlined","custom-filter":e.fuzzyFilter,"no-data-text":"No matching tags found"},{chip:t.withCtx((({props:e,item:n})=>[t.createVNode(s,t.mergeProps(e,{color:"error",variant:"tonal",size:"small"}),{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(n.raw),1)])),_:2},1040)])),item:t.withCtx((({props:n,item:o})=>[t.createVNode(l,t.mergeProps(n,{title:o.raw}),t.createSlots({_:2},[e.tagSnippets[o.raw]?{name:"subtitle",fn:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.tagSnippets[o.raw]),1)])),key:"0"}:void 0]),1040,["title"])])),_:1},8,["modelValue","items","loading","disabled","custom-filter"]),e.hasActiveFilter?(t.openBlock(),t.createElementBlock("div",oa,[t.createVNode(d,{size:"small",color:"info",class:"mr-1"},{default:t.withCtx((()=>n[2]||(n[2]=[t.createTextVNode("mdi-filter")]))),_:1}),e.localFilter.include.length?(t.openBlock(),t.createElementBlock("span",ra," Including: "+t.toDisplayString(e.localFilter.include.join(", ")),1)):t.createCommentVNode("",!0),e.localFilter.include.length&&e.localFilter.exclude.length?(t.openBlock(),t.createElementBlock("span",aa," · ")):t.createCommentVNode("",!0),e.localFilter.exclude.length?(t.openBlock(),t.createElementBlock("span",ia," Excluding: "+t.toDisplayString(e.localFilter.exclude.join(", ")),1)):t.createCommentVNode("",!0)])):t.createCommentVNode("",!0)])}],["__scopeId","data-v-e1ba963b"]]);e.AudioAutoPlayer=zn,e.CardBrowser=ea,e.CardHistoryViewer=ee,e.CardLoader=Nt,e.CardSearch=j,e.CardSearchResults=K,e.CardViewer=ce,e.CodeBlockRenderer=So,e.CourseCardBrowser=qr,e.CourseInformation=Yr,e.CourseTagFilterWidget=sa,e.Displayable=Displayable,e.FillInInput=_t,e.HeatMap=f,e.MarkdownRenderer=or,e.MdTokenRenderer=nr,e.MultipleChoiceOption=ut,e.PaginatingToolbar=O,e.Question=class Question extends Displayable{displayedSkill(e,t){console.warn("Question is running the reference implementation of displayedSkill.\n Consider overriding!");const n=5e3,o=Math.min(t,5e4),r=o/n,a=o>n?Math.pow(.8,r):1;let i=this.isCorrect(e)?1:0;return i*=a,Math.min(i,1)}evaluate(e,t){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e,t)}}},e.RadioMultipleChoice=mt,e.RequestPasswordReset=kr,e.ResetPassword=Rr,e.SessionControllerDebug=Qe,e.SkMouseTrap=B,e.SkMouseTrapToolTip=T,e.SkldrMouseTrap=_,e.SnackbarService=D,e.StudySession=at,e.StudySessionTimer=le,e.TFSelect=kt,e.TagsInput=Lr,e.UserChip=cr,e.UserInputNumber=bt,e.UserInputString=xt,e.UserLogin=pr,e.UserLoginAndRegistrationContainer=wr,e.UserRegistration=mr,e.VerifyEmail=Br,e.alertUser=I,e.containsComponent=$n,e.getCurrentUser=ar,e.getUserStatus=ae,e.isComponent=On,e.isDefineComponent=function(e){return void 0!==e.__isFragment},e.isInlineComponent=function(e){if(e.length>1e4)return!1;const t=e.trim();return/^<[\w-]+(?:\s+[\w-]+="[^"]*")*\s*\/?>$/.test(t)},e.isPasswordValid=function(e){return""===hr(e)},e.isQuestionView=te,e.parseComponentSyntax=Pn,e.parseComponentToken=function(e){return Pn("text"in e?e.text:"raw"in e?e.raw:"")},e.piniaPlugin=lt,e.requestPasswordReset=ie,e.resetPassword=se,e.sendVerificationEmail=oe,e.splitByDelimiters=Mn,e.splitParagraphToken=Ln,e.splitTextToken=Dn,e.useAuthStore=ir,e.useCardPreviewModeStore=ct,e.useConfigStore=sr,e.useEntitlements=function(e){const n=t.ref({}),o=t.ref(!1),r=t.ref(null),a=t.computed((()=>{const t=n.value[e];if(!t)return{isActive:!1,isPaid:!1,daysRemaining:null,expiresDate:null};if("paid"===t.status)return{isActive:!0,isPaid:!0,daysRemaining:null,expiresDate:null};const o=t.expires;if(!o)return{isActive:!0,isPaid:!1,daysRemaining:null,expiresDate:null};const r=new Date(o),a=new Date,i=Math.ceil((r.getTime()-a.getTime())/864e5);return{isActive:i>0,isPaid:!1,daysRemaining:Math.max(0,i),expiresDate:o}})),i=t.computed((()=>a.value.isPaid));return{entitlements:n,trialStatus:a,hasPremiumAccess:i,loading:o,error:r,fetchEntitlements:async function(){o.value=!0,r.value=null;try{const e=await ae();e.ok?n.value=e.entitlements||{}:(r.value=e.error||"Failed to fetch entitlements",console.error("[useEntitlements] Error:",r.value))}catch(e){r.value=e instanceof Error?e.message:"Unknown error",console.error("[useEntitlements] Exception:",e)}finally{o.value=!1}}}},e.useQuestionView=function(e){const n=t.ref(0),o=t.ref(0),r=t.ref([]),a=t.ref(3),i=t.ref(2),s=t.ref();return{priorSessionViews:n,priorAttempts:o,priorAnswers:r,maxAttemptsPerView:a,maxSessionViews:i,question:s,submitAnswer:(t,n)=>{if(e.logger.log("submitAnswer called..."),!s.value)throw new Error("Question not initialized");r.value.push([t,n??""]);const a=s.value.evaluate(t,e.timeSpent.value);e.logger.log(`evaluation of answer ${t}:`,a);const i={...a,priorAttemps:o.value,courseID:"",cardID:"",timeSpent:e.timeSpent.value,timeStamp:e.startTime.value,userAnswer:t};return a.isCorrect||o.value++,e.emitResponse(i),i}}},e.useViewable=function(e,o,r){const a=t.ref(n.utc()),i=t.ref([]),s={log:(e,...t)=>console.log(`[${r}]: `,e,...t),error:(e,...t)=>console.error(`[${r}]: `,e,...t),warn:(e,...t)=>console.warn(`[${r}]: `,e,...t)},l=t.computed((()=>Math.abs(n.utc().diff(a.value,"milliseconds"))));return{startTime:a,hotKeys:i,timeSpent:l,logger:s,getURL:(t,n=0)=>{try{if(e.data[n]?.[t])return URL.createObjectURL(e.data[n][t])}catch(o){s.error("Error creating URL for item:",t,o)}return""},emitResponse:e=>{o("emitResponse",e)}}},e.validatePassword=hr,e.verifyEmail=re,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
4
2
|
//# sourceMappingURL=common-ui.umd.js.map
|