From 797a3af9a80e4d7e590742a614cd60ce8b559ca1 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sat, 25 Jan 2025 19:59:05 +0100 Subject: [PATCH] fix(deps): migrate from `@nextcloud/vue-dashoard` to `@nextcloud/vue` vue-dashboard is deprecated and outdated so move to `@nextcloud/vue`. Also fixes issues with component names (custom components should always be multi-word names not single words). Signed-off-by: Ferdinand Thiessen Signed-off-by: Christoph Wurst <1374172+ChristophWurst@users.noreply.github.com> Signed-off-by: nextcloud-command --- js/recommendations-dashboard.js | 4 +- js/recommendations-dashboard.js.license | 89 +- js/recommendations-dashboard.js.map | 2 +- js/recommendations-main.js | 4 +- js/recommendations-main.js.license | 39 +- js/recommendations-main.js.map | 2 +- ...d_vue_dist_Components_NcColorPicker_mjs.js | 2 +- ...st_Components_NcColorPicker_mjs.js.license | 14 + ...tcloud_vue_dist_Components_NcSelect_mjs.js | 2 +- ...ue_dist_Components_NcSelect_mjs.js.license | 19 +- ...-node_modules_rehype-highlight_index_js.js | 4 +- ...e_modules_rehype-highlight_index_js.js.map | 2 +- package-lock.json | 2244 ++++++++--------- package.json | 3 +- .../{Dashboard.vue => DashboardWidget.vue} | 23 +- ...endations.vue => FilesRecommendations.vue} | 2 +- src/dashboard.js | 4 +- src/main.js | 4 +- 18 files changed, 1083 insertions(+), 1380 deletions(-) rename src/components/{Dashboard.vue => DashboardWidget.vue} (74%) rename src/components/{Recommendations.vue => FilesRecommendations.vue} (98%) diff --git a/js/recommendations-dashboard.js b/js/recommendations-dashboard.js index 82e66a44..e8f4259e 100644 --- a/js/recommendations-dashboard.js +++ b/js/recommendations-dashboard.js @@ -1,2 +1,2 @@ -(()=>{var e={3643:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"getRequestToken",{enumerable:!0,get:function(){return r.getRequestToken}}),Object.defineProperty(e,"onRequestTokenUpdate",{enumerable:!0,get:function(){return r.onRequestTokenUpdate}}),Object.defineProperty(e,"getCurrentUser",{enumerable:!0,get:function(){return o.getCurrentUser}});var r=n(84601),o=n(45296)},84601:(t,e,n)=>{"use strict";n(51629),Object.defineProperty(e,"__esModule",{value:!0}),e.getRequestToken=function(){return i},e.onRequestTokenUpdate=function(t){a.push(t)};var r=n(69896),o=document.getElementsByTagName("head")[0],i=o?o.getAttribute("data-requesttoken"):null,a=[];(0,r.subscribe)("csrf-token-update",(function(t){i=t.token,a.forEach((function(e){try{e(t.token)}catch(t){console.error("error updating CSRF token observer",t)}}))}))},45296:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getCurrentUser=function(){if(null===r)return null;return{uid:r,displayName:i,isAdmin:a}};var n=document.getElementsByTagName("head")[0],r=n?n.getAttribute("data-user"):null,o=document.getElementsByTagName("head")[0],i=o?o.getAttribute("data-user-displayname"):null,a="undefined"!=typeof OC&&OC.isUserAdmin()},73607:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r,o,i=(r=n(72505))&&r.__esModule?r:{default:r},a=n(3643);const s=i.default.create({headers:{requesttoken:null!==(o=(0,a.getRequestToken)())&&void 0!==o?o:""}}),c=Object.assign(s,{CancelToken:i.default.CancelToken,isCancel:i.default.isCancel});(0,a.onRequestTokenUpdate)((t=>s.defaults.headers.requesttoken=t));var l=c;e.default=l},87393:(t,e,n)=>{"use strict";n(78590),n(80136),n(15890),n(92814),Object.defineProperty(e,"__esModule",{value:!0}),e.getBuilder=function(t){return new r.default(t)},e.clearAll=function(){[window.sessionStorage,window.localStorage].map((function(t){return a(t)}))},e.clearNonPersistent=function(){[window.sessionStorage,window.localStorage].map((function(t){return a(t,(function(t){return!t.startsWith(o.default.GLOBAL_SCOPE_PERSISTENT)}))}))};var r=i(n(24089)),o=i(n(8280));function i(t){return t&&t.__esModule?t:{default:t}}function a(t,e){Object.keys(t).filter((function(t){return!e||e(t)})).map(t.removeItem.bind(t))}},8280:(t,e,n)=>{"use strict";function r(t,e){for(var n=0;n{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r,o=(r=n(8280))&&r.__esModule?r:{default:r};function i(t,e){for(var n=0;n0&&void 0!==arguments[0])||arguments[0];return this.persisted=t,this}},{key:"clearOnLogout",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.clearedOnLogout=t,this}},{key:"build",value:function(){return new o.default(this.appId,this.persisted?window.localStorage:window.sessionStorage,!this.clearedOnLogout)}}],n&&i(e.prototype,n),r&&i(e,r),t}();e.default=s},15156:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},39685:(t,e,n)=>{var r=n(86088);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},47851:(t,e,n)=>{var r=n(3903),o=n(708),i=n(58208),a=function(t){return function(e,n,a){var s,c=r(e),l=o(c.length),u=i(a,l);if(t&&n!=n){for(;l>u;)if((s=c[u++])!=s)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},46387:(t,e,n)=>{var r=n(79995),o=n(52905),i=n(77371),a=n(708),s=n(5783),c=[].push,l=function(t){var e=1==t,n=2==t,l=3==t,u=4==t,A=6==t,p=5==t||A;return function(f,d,h,m){for(var g,v,y=i(f),b=o(y),C=r(d,h,3),w=a(b.length),x=0,E=m||s,T=e?E(f,w):n?E(f,0):void 0;w>x;x++)if((p||x in b)&&(v=C(g=b[x],x,y),t))if(e)T[x]=v;else if(v)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:c.call(T,g)}else if(u)return!1;return A?-1:l||u?u:T}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6)}},24131:(t,e,n)=>{var r=n(20233),o=n(28737),i=n(9357),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},5783:(t,e,n)=>{var r=n(86088),o=n(306),i=n(28737)("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},79995:(t,e,n)=>{var r=n(15156);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},95518:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},18918:(t,e,n)=>{var r=n(40260),o=n(65705),i=n(7921),a=n(86427);t.exports=function(t,e){for(var n=o(e),s=a.f,c=i.f,l=0;l{var r=n(28737)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,"/./"[t](e)}catch(t){}}return!1}},34685:(t,e,n)=>{var r=n(50990),o=n(86427),i=n(46234);t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},46234:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},9694:(t,e,n)=>{"use strict";var r=n(72931),o=n(86427),i=n(46234);t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},50990:(t,e,n)=>{var r=n(20233);t.exports=!r((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},89593:(t,e,n)=>{var r=n(53669),o=n(86088),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},29685:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},93780:(t,e,n)=>{var r=n(53669),o=n(7921).f,i=n(34685),a=n(65868),s=n(84546),c=n(18918),l=n(76282);t.exports=function(t,e){var n,u,A,p,f,d=t.target,h=t.global,m=t.stat;if(n=h?r:m?r[d]||s(d,{}):(r[d]||{}).prototype)for(u in e){if(p=e[u],A=t.noTargetGet?(f=o(n,u))&&f.value:n[u],!l(h?u:d+(m?".":"#")+u,t.forced)&&void 0!==A){if(typeof p==typeof A)continue;c(p,A)}(t.sham||A&&A.sham)&&i(p,"sham",!0),a(n,u,p,t)}}},20233:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},47873:(t,e,n)=>{var r=n(94797),o=n(53669),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},53669:(t,e,n)=>{var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||Function("return this")()},40260:t=>{var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},82915:t=>{t.exports={}},63703:(t,e,n)=>{var r=n(50990),o=n(20233),i=n(89593);t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},52905:(t,e,n)=>{var r=n(20233),o=n(95518),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},31364:(t,e,n)=>{var r=n(43591),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},51219:(t,e,n)=>{var r,o,i,a=n(8225),s=n(53669),c=n(86088),l=n(34685),u=n(40260),A=n(99249),p=n(82915),f=s.WeakMap;if(a){var d=new f,h=d.get,m=d.has,g=d.set;r=function(t,e){return g.call(d,t,e),e},o=function(t){return h.call(d,t)||{}},i=function(t){return m.call(d,t)}}else{var v=A("state");p[v]=!0,r=function(t,e){return l(t,v,e),e},o=function(t){return u(t,v)?t[v]:{}},i=function(t){return u(t,v)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},306:(t,e,n)=>{var r=n(95518);t.exports=Array.isArray||function(t){return"Array"==r(t)}},76282:(t,e,n)=>{var r=n(20233),o=/#|\.prototype\./,i=function(t,e){var n=s[a(t)];return n==l||n!=c&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},s=i.data={},c=i.NATIVE="N",l=i.POLYFILL="P";t.exports=i},86088:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},83125:t=>{t.exports=!1},1602:(t,e,n)=>{var r=n(86088),o=n(95518),i=n(28737)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},54614:(t,e,n)=>{var r=n(20233);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},8225:(t,e,n)=>{var r=n(53669),o=n(31364),i=r.WeakMap;t.exports="function"==typeof i&&/native code/.test(o(i))},81613:(t,e,n)=>{var r=n(1602);t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},86427:(t,e,n)=>{var r=n(50990),o=n(63703),i=n(39685),a=n(72931),s=Object.defineProperty;e.f=r?s:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},7921:(t,e,n)=>{var r=n(50990),o=n(89243),i=n(46234),a=n(3903),s=n(72931),c=n(40260),l=n(63703),u=Object.getOwnPropertyDescriptor;e.f=r?u:function(t,e){if(t=a(t),e=s(e,!0),l)try{return u(t,e)}catch(t){}if(c(t,e))return i(!o.f.call(t,e),t[e])}},18118:(t,e,n)=>{var r=n(96406),o=n(29685).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},94171:(t,e)=>{e.f=Object.getOwnPropertySymbols},96406:(t,e,n)=>{var r=n(40260),o=n(3903),i=n(47851).indexOf,a=n(82915);t.exports=function(t,e){var n,s=o(t),c=0,l=[];for(n in s)!r(a,n)&&r(s,n)&&l.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(l,n)||l.push(n));return l}},78986:(t,e,n)=>{var r=n(96406),o=n(29685);t.exports=Object.keys||function(t){return r(t,o)}},89243:(t,e)=>{"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);e.f=o?function(t){var e=r(this,t);return!!e&&e.enumerable}:n},65705:(t,e,n)=>{var r=n(47873),o=n(18118),i=n(94171),a=n(39685);t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},94797:(t,e,n)=>{var r=n(53669);t.exports=r},65868:(t,e,n)=>{var r=n(53669),o=n(34685),i=n(40260),a=n(84546),s=n(31364),c=n(51219),l=c.get,u=c.enforce,A=String(String).split("String");(t.exports=function(t,e,n,s){var c=!!s&&!!s.unsafe,l=!!s&&!!s.enumerable,p=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),u(n).source=A.join("string"==typeof e?e:"")),t!==r?(c?!p&&t[e]&&(l=!0):delete t[e],l?t[e]=n:o(t,e,n)):l?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&l(this).source||s(this)}))},2832:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},84546:(t,e,n)=>{var r=n(53669),o=n(34685);t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},99249:(t,e,n)=>{var r=n(11527),o=n(31642),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},43591:(t,e,n)=>{var r=n(53669),o=n(84546),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},11527:(t,e,n)=>{var r=n(83125),o=n(43591);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.1",mode:r?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},58208:(t,e,n)=>{var r=n(16556),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},3903:(t,e,n)=>{var r=n(52905),o=n(2832);t.exports=function(t){return r(o(t))}},16556:t=>{var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},708:(t,e,n)=>{var r=n(16556),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},77371:(t,e,n)=>{var r=n(2832);t.exports=function(t){return Object(r(t))}},72931:(t,e,n)=>{var r=n(86088);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},31642:t=>{var e=0,n=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+n).toString(36)}},10926:(t,e,n)=>{var r=n(54614);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},62341:(t,e,n)=>{var r=n(47873);t.exports=r("navigator","userAgent")||""},9357:(t,e,n)=>{var r,o,i=n(53669),a=n(62341),s=i.process,c=s&&s.versions,l=c&&c.v8;l?o=(r=l.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),t.exports=o&&+o},28737:(t,e,n)=>{var r=n(53669),o=n(11527),i=n(40260),a=n(31642),s=n(54614),c=n(10926),l=o("wks"),u=r.Symbol,A=c?u:u&&u.withoutSetter||a;t.exports=function(t){return i(l,t)||(s&&i(u,t)?l[t]=u[t]:l[t]=A("Symbol."+t)),l[t]}},82520:(t,e,n)=>{"use strict";var r=n(93780),o=n(20233),i=n(306),a=n(86088),s=n(77371),c=n(708),l=n(9694),u=n(5783),A=n(24131),p=n(28737),f=n(9357),d=p("isConcatSpreadable"),h=9007199254740991,m="Maximum allowed index exceeded",g=f>=51||!o((function(){var t=[];return t[d]=!1,t.concat()[0]!==t})),v=A("concat"),y=function(t){if(!a(t))return!1;var e=t[d];return void 0!==e?!!e:i(t)};r({target:"Array",proto:!0,forced:!g||!v},{concat:function(t){var e,n,r,o,i,a=s(this),A=u(a,0),p=0;for(e=-1,r=arguments.length;eh)throw TypeError(m);for(n=0;n=h)throw TypeError(m);l(A,p++,i)}return A.length=p,A}})},78590:(t,e,n)=>{"use strict";var r=n(93780),o=n(46387).filter,i=n(20233),a=n(24131)("filter"),s=a&&!i((function(){[].filter.call({length:-1,0:1},(function(t){throw t}))}));r({target:"Array",proto:!0,forced:!a||!s},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},80136:(t,e,n)=>{"use strict";var r=n(93780),o=n(46387).map,i=n(20233),a=n(24131)("map"),s=a&&!i((function(){[].map.call({length:-1,0:1},(function(t){throw t}))}));r({target:"Array",proto:!0,forced:!a||!s},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},15890:(t,e,n)=>{var r=n(93780),o=n(77371),i=n(78986);r({target:"Object",stat:!0,forced:n(20233)((function(){i(1)}))},{keys:function(t){return i(o(t))}})},92814:(t,e,n)=>{"use strict";var r,o=n(93780),i=n(7921).f,a=n(708),s=n(81613),c=n(2832),l=n(842),u=n(83125),A="".startsWith,p=Math.min,f=l("startsWith");o({target:"String",proto:!0,forced:!!(u||f||(r=i(String.prototype,"startsWith"),!r||r.writable))&&!f},{startsWith:function(t){var e=String(c(this));s(t);var n=a(p(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return A?A.call(e,r,n):e.slice(n,n+r.length)===r}})},69896:(t,e,n)=>{"use strict";n.r(e),n.d(e,{emit:()=>Xo,subscribe:()=>Wo,unsubscribe:()=>Zo});var r=n(65606),o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};function i(t){var e={exports:{}};return t(e,e.exports),e.exports}var a=function(t){return t&&t.Math==Math&&t},s=a("object"==typeof globalThis&&globalThis)||a("object"==typeof window&&window)||a("object"==typeof self&&self)||a("object"==typeof o&&o)||function(){return this}()||Function("return this")(),c=function(t){try{return!!t()}catch(t){return!0}},l=!c((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),u={}.propertyIsEnumerable,A=Object.getOwnPropertyDescriptor,p={f:A&&!u.call({1:2},1)?function(t){var e=A(this,t);return!!e&&e.enumerable}:u},f=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},d={}.toString,h=function(t){return d.call(t).slice(8,-1)},m="".split,g=c((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==h(t)?m.call(t,""):Object(t)}:Object,v=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t},y=function(t){return g(v(t))},b=function(t){return"object"==typeof t?null!==t:"function"==typeof t},C=function(t,e){if(!b(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!b(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!b(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!b(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")},w=function(t){return Object(v(t))},x={}.hasOwnProperty,E=function(t,e){return x.call(w(t),e)},T=s.document,I=b(T)&&b(T.createElement),B=function(t){return I?T.createElement(t):{}},S=!l&&!c((function(){return 7!=Object.defineProperty(B("div"),"a",{get:function(){return 7}}).a})),_=Object.getOwnPropertyDescriptor,M={f:l?_:function(t,e){if(t=y(t),e=C(e,!0),S)try{return _(t,e)}catch(t){}if(E(t,e))return f(!p.f.call(t,e),t[e])}},N=function(t){if(!b(t))throw TypeError(String(t)+" is not an object");return t},O=Object.defineProperty,k={f:l?O:function(t,e,n){if(N(t),e=C(e,!0),N(n),S)try{return O(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},D=l?function(t,e,n){return k.f(t,e,f(1,n))}:function(t,e,n){return t[e]=n,t},L=function(t,e){try{D(s,t,e)}catch(n){s[t]=e}return e},j="__core-js_shared__",R=s[j]||L(j,{}),P=Function.toString;"function"!=typeof R.inspectSource&&(R.inspectSource=function(t){return P.call(t)});var U,F,z,Q=R.inspectSource,$=s.WeakMap,G="function"==typeof $&&/native code/.test(Q($)),H=i((function(t){(t.exports=function(t,e){return R[t]||(R[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.11.2",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),Y=0,W=Math.random(),Z=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++Y+W).toString(36)},X=H("keys"),V=function(t){return X[t]||(X[t]=Z(t))},J={},q="Object already initialized",K=s.WeakMap;if(G){var tt=R.state||(R.state=new K),et=tt.get,nt=tt.has,rt=tt.set;U=function(t,e){if(nt.call(tt,t))throw new TypeError(q);return e.facade=t,rt.call(tt,t,e),e},F=function(t){return et.call(tt,t)||{}},z=function(t){return nt.call(tt,t)}}else{var ot=V("state");J[ot]=!0,U=function(t,e){if(E(t,ot))throw new TypeError(q);return e.facade=t,D(t,ot,e),e},F=function(t){return E(t,ot)?t[ot]:{}},z=function(t){return E(t,ot)}}var it={set:U,get:F,has:z,enforce:function(t){return z(t)?F(t):U(t,{})},getterFor:function(t){return function(e){var n;if(!b(e)||(n=F(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}},at=i((function(t){var e=it.get,n=it.enforce,r=String(String).split("String");(t.exports=function(t,e,o,i){var a,c=!!i&&!!i.unsafe,l=!!i&&!!i.enumerable,u=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof e||E(o,"name")||D(o,"name",e),(a=n(o)).source||(a.source=r.join("string"==typeof e?e:""))),t!==s?(c?!u&&t[e]&&(l=!0):delete t[e],l?t[e]=o:D(t,e,o)):l?t[e]=o:L(e,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&e(this).source||Q(this)}))})),st=s,ct=function(t){return"function"==typeof t?t:void 0},lt=function(t,e){return arguments.length<2?ct(st[t])||ct(s[t]):st[t]&&st[t][e]||s[t]&&s[t][e]},ut=Math.ceil,At=Math.floor,pt=function(t){return isNaN(t=+t)?0:(t>0?At:ut)(t)},ft=Math.min,dt=function(t){return t>0?ft(pt(t),9007199254740991):0},ht=Math.max,mt=Math.min,gt=function(t){return function(e,n,r){var o,i=y(e),a=dt(i.length),s=function(t,e){var n=pt(t);return n<0?ht(n+e,0):mt(n,e)}(r,a);if(t&&n!=n){for(;a>s;)if((o=i[s++])!=o)return!0}else for(;a>s;s++)if((t||s in i)&&i[s]===n)return t||s||0;return!t&&-1}},vt={includes:gt(!0),indexOf:gt(!1)}.indexOf,yt=function(t,e){var n,r=y(t),o=0,i=[];for(n in r)!E(J,n)&&E(r,n)&&i.push(n);for(;e.length>o;)E(r,n=e[o++])&&(~vt(i,n)||i.push(n));return i},bt=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ct=bt.concat("length","prototype"),wt={f:Object.getOwnPropertyNames||function(t){return yt(t,Ct)}},xt={f:Object.getOwnPropertySymbols},Et=lt("Reflect","ownKeys")||function(t){var e=wt.f(N(t)),n=xt.f;return n?e.concat(n(t)):e},Tt=function(t,e){for(var n=Et(e),r=k.f,o=M.f,i=0;ii;)k.f(t,n=r[i++],e[n]);return t},Ft=lt("document","documentElement"),zt="prototype",Qt="script",$t=V("IE_PROTO"),Gt=function(){},Ht=function(t){return"<"+Qt+">"+t+""},Yt=function(){try{Lt=document.domain&&new ActiveXObject("htmlfile")}catch(t){}var t,e,n;Yt=Lt?function(t){t.write(Ht("")),t.close();var e=t.parentWindow.Object;return t=null,e}(Lt):(e=B("iframe"),n="java"+Qt+":",e.style.display="none",Ft.appendChild(e),e.src=String(n),(t=e.contentWindow.document).open(),t.write(Ht("document.F=Object")),t.close(),t.F);for(var r=bt.length;r--;)delete Yt[zt][bt[r]];return Yt()};J[$t]=!0;var Wt=Object.create||function(t,e){var n;return null!==t?(Gt[zt]=N(t),n=new Gt,Gt[zt]=null,n[$t]=t):n=Yt(),void 0===e?n:Ut(n,e)},Zt="\t\n\v\f\r                 \u2028\u2029\ufeff",Xt="["+Zt+"]",Vt=RegExp("^"+Xt+Xt+"*"),Jt=RegExp(Xt+Xt+"*$"),qt=function(t){return function(e){var n=String(v(e));return 1&t&&(n=n.replace(Vt,"")),2&t&&(n=n.replace(Jt,"")),n}},Kt={start:qt(1),end:qt(2),trim:qt(3)},te=wt.f,ee=M.f,ne=k.f,re=Kt.trim,oe="Number",ie=s[oe],ae=ie.prototype,se=h(Wt(ae))==oe,ce=function(t){var e,n,r,o,i,a,s,c,l=C(t,!1);if("string"==typeof l&&l.length>2)if(43===(e=(l=re(l)).charCodeAt(0))||45===e){if(88===(n=l.charCodeAt(2))||120===n)return NaN}else if(48===e){switch(l.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+l}for(a=(i=l.slice(2)).length,s=0;so)return NaN;return parseInt(i,r)}return+l};if(Ot(oe,!ie(" 0o1")||!ie("0b1")||ie("+0x1"))){for(var le,ue=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof ue&&(se?c((function(){ae.valueOf.call(n)})):h(n)!=oe)?Rt(new ie(ce(e)),n,ue):ce(e)},Ae=l?te(ie):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),pe=0;Ae.length>pe;pe++)E(ie,le=Ae[pe])&&!E(ue,le)&&ne(ue,le,ee(ie,le));ue.prototype=ae,ae.constructor=ue,at(s,oe,ue)}var fe,de,he={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH:16},me="process"==h(s.process),ge=lt("navigator","userAgent")||"",ve=s.process,ye=ve&&ve.versions,be=ye&&ye.v8;be?de=(fe=be.split("."))[0]+fe[1]:ge&&(!(fe=ge.match(/Edge\/(\d+)/))||fe[1]>=74)&&(fe=ge.match(/Chrome\/(\d+)/))&&(de=fe[1]);var Ce=de&&+de,we=!!Object.getOwnPropertySymbols&&!c((function(){return!Symbol.sham&&(me?38===Ce:Ce>37&&Ce<41)})),xe=we&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ee=H("wks"),Te=s.Symbol,Ie=xe?Te:Te&&Te.withoutSetter||Z,Be=function(t){return E(Ee,t)&&(we||"string"==typeof Ee[t])||(we&&E(Te,t)?Ee[t]=Te[t]:Ee[t]=Ie("Symbol."+t)),Ee[t]},Se=Be("match"),_e=function(t){var e;return b(t)&&(void 0!==(e=t[Se])?!!e:"RegExp"==h(t))},Me=function(){var t=N(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e};function Ne(t,e){return RegExp(t,e)}var Oe=c((function(){var t=Ne("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),ke=c((function(){var t=Ne("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),De={UNSUPPORTED_Y:Oe,BROKEN_CARET:ke},Le=Be("species"),je=function(t){var e=lt(t),n=k.f;l&&e&&!e[Le]&&n(e,Le,{configurable:!0,get:function(){return this}})},Re=k.f,Pe=wt.f,Ue=it.enforce,Fe=Be("match"),ze=s.RegExp,Qe=ze.prototype,$e=/a/g,Ge=/a/g,He=new ze($e)!==$e,Ye=De.UNSUPPORTED_Y;if(l&&Ot("RegExp",!He||Ye||c((function(){return Ge[Fe]=!1,ze($e)!=$e||ze(Ge)==Ge||"/a/i"!=ze($e,"i")})))){for(var We=function(t,e){var n,r=this instanceof We,o=_e(t),i=void 0===e;if(!r&&o&&t.constructor===We&&i)return t;He?o&&!i&&(t=t.source):t instanceof We&&(i&&(e=Me.call(t)),t=t.source),Ye&&(n=!!e&&e.indexOf("y")>-1)&&(e=e.replace(/y/g,""));var a=Rt(He?new ze(t,e):ze(t,e),r?this:Qe,We);Ye&&n&&(Ue(a).sticky=!0);return a},Ze=function(t){t in We||Re(We,t,{configurable:!0,get:function(){return ze[t]},set:function(e){ze[t]=e}})},Xe=Pe(ze),Ve=0;Xe.length>Ve;)Ze(Xe[Ve++]);Qe.constructor=We,We.prototype=Qe,at(s,"RegExp",We)}je("RegExp");var Je=RegExp.prototype.exec,qe=H("native-string-replace",String.prototype.replace),Ke=Je,tn=function(){var t=/a/,e=/b*/g;return Je.call(t,"a"),Je.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),en=De.UNSUPPORTED_Y||De.BROKEN_CARET,nn=void 0!==/()??/.exec("")[1];(tn||nn||en)&&(Ke=function(t){var e,n,r,o,i=this,a=en&&i.sticky,s=Me.call(i),c=i.source,l=0,u=t;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(t).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&"\n"!==t[i.lastIndex-1])&&(c="(?: "+c+")",u=" "+u,l++),n=new RegExp("^(?:"+c+")",s)),nn&&(n=new RegExp("^"+c+"$(?!\\s)",s)),tn&&(e=i.lastIndex),r=Je.call(a?n:i,u),a?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:tn&&r&&(i.lastIndex=i.global?r.index+r[0].length:e),nn&&r&&r.length>1&&qe.call(r[0],n,(function(){for(o=1;o=51||!c((function(){var e=[];return(e.constructor={})[dn]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},mn=Be("isConcatSpreadable"),gn=9007199254740991,vn="Maximum allowed index exceeded",yn=Ce>=51||!c((function(){var t=[];return t[mn]=!1,t.concat()[0]!==t})),bn=hn("concat"),Cn=function(t){if(!b(t))return!1;var e=t[mn];return void 0!==e?!!e:un(t)};function wn(t){return wn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wn(t)}function xn(t,e){for(var n=0;ngn)throw TypeError(vn);for(n=0;n=gn)throw TypeError(vn);An(s,c++,i)}return s.length=c,s}});var En="object"===(void 0===r?"undefined":wn(r))&&r.env&&r.env.NODE_DEBUG&&/\bsemver\b/i.test(r.env.NODE_DEBUG)?function(){for(var t,e=arguments.length,n=new Array(e),r=0;r)?=?)"),s("XRANGEIDENTIFIERLOOSE","".concat(o[i.NUMERICIDENTIFIERLOOSE],"|x|X|\\*")),s("XRANGEIDENTIFIER","".concat(o[i.NUMERICIDENTIFIER],"|x|X|\\*")),s("XRANGEPLAIN","[v=\\s]*(".concat(o[i.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(o[i.XRANGEIDENTIFIER],")")+"(?:\\.(".concat(o[i.XRANGEIDENTIFIER],")")+"(?:".concat(o[i.PRERELEASE],")?").concat(o[i.BUILD],"?")+")?)?"),s("XRANGEPLAINLOOSE","[v=\\s]*(".concat(o[i.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(o[i.XRANGEIDENTIFIERLOOSE],")")+"(?:\\.(".concat(o[i.XRANGEIDENTIFIERLOOSE],")")+"(?:".concat(o[i.PRERELEASELOOSE],")?").concat(o[i.BUILD],"?")+")?)?"),s("XRANGE","^".concat(o[i.GTLT],"\\s*").concat(o[i.XRANGEPLAIN],"$")),s("XRANGELOOSE","^".concat(o[i.GTLT],"\\s*").concat(o[i.XRANGEPLAINLOOSE],"$")),s("COERCE","".concat("(^|[^\\d])(\\d{1,").concat(n,"})")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:\\.(\\d{1,".concat(n,"}))?")+"(?:$|[^\\d])"),s("COERCERTL",o[i.COERCE],!0),s("LONETILDE","(?:~>?)"),s("TILDETRIM","(\\s*)".concat(o[i.LONETILDE],"\\s+"),!0),e.tildeTrimReplace="$1~",s("TILDE","^".concat(o[i.LONETILDE]).concat(o[i.XRANGEPLAIN],"$")),s("TILDELOOSE","^".concat(o[i.LONETILDE]).concat(o[i.XRANGEPLAINLOOSE],"$")),s("LONECARET","(?:\\^)"),s("CARETTRIM","(\\s*)".concat(o[i.LONECARET],"\\s+"),!0),e.caretTrimReplace="$1^",s("CARET","^".concat(o[i.LONECARET]).concat(o[i.XRANGEPLAIN],"$")),s("CARETLOOSE","^".concat(o[i.LONECARET]).concat(o[i.XRANGEPLAINLOOSE],"$")),s("COMPARATORLOOSE","^".concat(o[i.GTLT],"\\s*(").concat(o[i.LOOSEPLAIN],")$|^$")),s("COMPARATOR","^".concat(o[i.GTLT],"\\s*(").concat(o[i.FULLPLAIN],")$|^$")),s("COMPARATORTRIM","(\\s*)".concat(o[i.GTLT],"\\s*(").concat(o[i.LOOSEPLAIN],"|").concat(o[i.XRANGEPLAIN],")"),!0),e.comparatorTrimReplace="$1$2$3",s("HYPHENRANGE","^\\s*(".concat(o[i.XRANGEPLAIN],")")+"\\s+-\\s+"+"(".concat(o[i.XRANGEPLAIN],")")+"\\s*$"),s("HYPHENRANGELOOSE","^\\s*(".concat(o[i.XRANGEPLAINLOOSE],")")+"\\s+-\\s+"+"(".concat(o[i.XRANGEPLAINLOOSE],")")+"\\s*$"),s("STAR","(<|>)?=?\\s*\\*"),s("GTE0","^\\s*>=\\s*0.0.0\\s*$"),s("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")})),In=Be("species"),Bn=!c((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),Sn="$0"==="a".replace(/./,"$0"),_n=Be("replace"),Mn=!!/./[_n]&&""===/./[_n]("a","$0"),Nn=!c((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),On=function(t,e,n,r){var o=Be(t),i=!c((function(){var e={};return e[o]=function(){return 7},7!=""[t](e)})),a=i&&!c((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[In]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return e=!0,null},n[o](""),!e}));if(!i||!a||"replace"===t&&(!Bn||!Sn||Mn)||"split"===t&&!Nn){var s=/./[o],l=n(o,""[t],(function(t,e,n,r,o){return e.exec===RegExp.prototype.exec?i&&!o?{done:!0,value:s.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Sn,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Mn}),u=l[0],A=l[1];at(String.prototype,t,u),at(RegExp.prototype,o,2==e?function(t,e){return A.call(t,this,e)}:function(t){return A.call(t,this)})}r&&D(RegExp.prototype[o],"sham",!0)},kn=function(t){return function(e,n){var r,o,i=String(v(e)),a=pt(n),s=i.length;return a<0||a>=s?t?"":void 0:(r=i.charCodeAt(a))<55296||r>56319||a+1===s||(o=i.charCodeAt(a+1))<56320||o>57343?t?i.charAt(a):r:t?i.slice(a,a+2):o-56320+(r-55296<<10)+65536}},Dn={codeAt:kn(!1),charAt:kn(!0)},Ln=Dn.charAt,jn=function(t,e,n){return e+(n?Ln(t,e).length:1)},Rn=function(t,e){var n=t.exec;if("function"==typeof n){var r=n.call(t,e);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==h(t))throw TypeError("RegExp#exec called on incompatible receiver");return rn.call(t,e)};On("match",1,(function(t,e,n){return[function(e){var n=v(this),r=null==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var o=N(t),i=String(this);if(!o.global)return Rn(o,i);var a=o.unicode;o.lastIndex=0;for(var s,c=[],l=0;null!==(s=Rn(o,i));){var u=String(s[0]);c[l]=u,""===u&&(o.lastIndex=jn(i,dt(o.lastIndex),a)),l++}return 0===l?null:c}]}));var Pn=Kt.trim;Dt({target:"String",proto:!0,forced:function(t){return c((function(){return!!Zt[t]()||"​…᠎"!="​…᠎"[t]()||Zt[t].name!==t}))}("trim")},{trim:function(){return Pn(this)}});var Un=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t},Fn=function(t,e,n){if(Un(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}},zn=[].push,Qn=function(t){var e=1==t,n=2==t,r=3==t,o=4==t,i=6==t,a=7==t,s=5==t||i;return function(c,l,u,A){for(var p,f,d=w(c),h=g(d),m=Fn(l,u,3),v=dt(h.length),y=0,b=A||fn,C=e?b(c,v):n||a?b(c,0):void 0;v>y;y++)if((s||y in h)&&(f=m(p=h[y],y,d),t))if(e)C[y]=f;else if(f)switch(t){case 3:return!0;case 5:return p;case 6:return y;case 2:zn.call(C,p)}else switch(t){case 4:return!1;case 7:zn.call(C,p)}return i?-1:r||o?o:C}},$n={forEach:Qn(0),map:Qn(1),filter:Qn(2),some:Qn(3),every:Qn(4),find:Qn(5),findIndex:Qn(6),filterOut:Qn(7)},Gn=$n.map,Hn=hn("map");Dt({target:"Array",proto:!0,forced:!Hn},{map:function(t){return Gn(this,t,arguments.length>1?arguments[1]:void 0)}});var Yn=Be("species"),Wn=De.UNSUPPORTED_Y,Zn=[].push,Xn=Math.min,Vn=4294967295;On("split",2,(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=String(v(this)),o=void 0===n?Vn:n>>>0;if(0===o)return[];if(void 0===t)return[r];if(!_e(t))return e.call(r,t,o);for(var i,a,s,c=[],l=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),u=0,A=new RegExp(t.source,l+"g");(i=rn.call(A,r))&&!((a=A.lastIndex)>u&&(c.push(r.slice(u,i.index)),i.length>1&&i.index=o));)A.lastIndex===i.index&&A.lastIndex++;return u===r.length?!s&&A.test("")||c.push(""):c.push(r.slice(u)),c.length>o?c.slice(0,o):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=v(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(String(o),e,n)},function(t,o){var i=n(r,t,this,o,r!==e);if(i.done)return i.value;var a=N(t),s=String(this),c=function(t,e){var n,r=N(t).constructor;return void 0===r||null==(n=N(r)[Yn])?e:Un(n)}(a,RegExp),l=a.unicode,u=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(Wn?"g":"y"),A=new c(Wn?"^(?:"+a.source+")":a,u),p=void 0===o?Vn:o>>>0;if(0===p)return[];if(0===s.length)return null===Rn(A,s)?[s]:[];for(var f=0,d=0,h=[];d1?arguments[1]:void 0)}});var rr=["includePrerelease","loose","rtl"],or=function(t){return t?"object"!==wn(t)?{loose:!0}:rr.filter((function(e){return t[e]})).reduce((function(t,e){return t[e]=!0,t}),{}):{}},ir=/^[0-9]+$/,ar=function(t,e){var n=ir.test(t),r=ir.test(e);return n&&r&&(t=+t,e=+e),t===e?0:n&&!r?-1:r&&!n?1:tcr)throw new TypeError("version is longer than ".concat(cr," characters"));En("SemVer",e,n),this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease;var r=e.trim().match(n.loose?ur[Ar.LOOSE]:ur[Ar.FULL]);if(!r)throw new TypeError("Invalid Version: ".concat(e));if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>lr||this.major<0)throw new TypeError("Invalid major version");if(this.minor>lr||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>lr||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map((function(t){if(/^[0-9]+$/.test(t)){var e=+t;if(e>=0&&e=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}e&&(this.prerelease[0]===e?isNaN(this.prerelease[1])&&(this.prerelease=[e,0]):this.prerelease=[e,0]);break;default:throw new Error("invalid increment argument: ".concat(t))}return this.format(),this.raw=this.version,this}}])&&xn(e.prototype,n),r&&xn(e,r),t}(),dr=fr,hr=he.MAX_LENGTH,mr=Tn.re,gr=Tn.t,vr=function(t,e){if(e=or(e),t instanceof dr)return t;if("string"!=typeof t)return null;if(t.length>hr)return null;if(!(e.loose?mr[gr.LOOSE]:mr[gr.FULL]).test(t))return null;try{return new dr(t,e)}catch(t){return null}},yr=function(t,e){var n=vr(t,e);return n?n.version:null},br=function(t,e){return new dr(t,e).major},Cr="1.3.0",wr=function(){function t(t){"function"==typeof t.getVersion&&yr(t.getVersion())?br(t.getVersion())!==br(this.getVersion())&&console.warn("Proxying an event bus of version "+t.getVersion()+" with "+this.getVersion()):console.warn("Proxying an event bus with an unknown or invalid version"),this.bus=t}return t.prototype.getVersion=function(){return Cr},t.prototype.subscribe=function(t,e){this.bus.subscribe(t,e)},t.prototype.unsubscribe=function(t,e){this.bus.unsubscribe(t,e)},t.prototype.emit=function(t,e){this.bus.emit(t,e)},t}(),xr=Be("unscopables"),Er=Array.prototype;null==Er[xr]&&k.f(Er,xr,{configurable:!0,value:Wt(null)});var Tr,Ir,Br,Sr=function(t){Er[xr][t]=!0},_r={},Mr=!c((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),Nr=V("IE_PROTO"),Or=Object.prototype,kr=Mr?Object.getPrototypeOf:function(t){return t=w(t),E(t,Nr)?t[Nr]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?Or:null},Dr=Be("iterator"),Lr=!1;[].keys&&("next"in(Br=[].keys())?(Ir=kr(kr(Br)))!==Object.prototype&&(Tr=Ir):Lr=!0);var jr=null==Tr||c((function(){var t={};return Tr[Dr].call(t)!==t}));jr&&(Tr={}),E(Tr,Dr)||D(Tr,Dr,(function(){return this}));var Rr={IteratorPrototype:Tr,BUGGY_SAFARI_ITERATORS:Lr},Pr=k.f,Ur=Be("toStringTag"),Fr=function(t,e,n){t&&!E(t=n?t:t.prototype,Ur)&&Pr(t,Ur,{configurable:!0,value:e})},zr=Rr.IteratorPrototype,Qr=function(){return this},$r=Rr.IteratorPrototype,Gr=Rr.BUGGY_SAFARI_ITERATORS,Hr=Be("iterator"),Yr="keys",Wr="values",Zr="entries",Xr=function(){return this},Vr=function(t,e,n,r,o,i,a){!function(t,e,n){var r=e+" Iterator";t.prototype=Wt(zr,{next:f(1,n)}),Fr(t,r,!1),_r[r]=Qr}(n,e,r);var s,c,l,u=function(t){if(t===o&&m)return m;if(!Gr&&t in d)return d[t];switch(t){case Yr:case Wr:case Zr:return function(){return new n(this,t)}}return function(){return new n(this)}},A=e+" Iterator",p=!1,d=t.prototype,h=d[Hr]||d["@@iterator"]||o&&d[o],m=!Gr&&h||u(o),g="Array"==e&&d.entries||h;if(g&&(s=kr(g.call(new t)),$r!==Object.prototype&&s.next&&(kr(s)!==$r&&(jt?jt(s,$r):"function"!=typeof s[Hr]&&D(s,Hr,Xr)),Fr(s,A,!0))),o==Wr&&h&&h.name!==Wr&&(p=!0,m=function(){return h.call(this)}),d[Hr]!==m&&D(d,Hr,m),_r[e]=m,o)if(c={values:u(Wr),keys:i?m:u(Yr),entries:u(Zr)},a)for(l in c)(Gr||p||!(l in d))&&at(d,l,c[l]);else Dt({target:e,proto:!0,forced:Gr||p},c);return c},Jr="Array Iterator",qr=it.set,Kr=it.getterFor(Jr),to=Vr(Array,"Array",(function(t,e){qr(this,{type:Jr,target:y(t),index:0,kind:e})}),(function(){var t=Kr(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values");_r.Arguments=_r.Array,Sr("keys"),Sr("values"),Sr("entries");var eo=!c((function(){return Object.isExtensible(Object.preventExtensions({}))})),no=i((function(t){var e=k.f,n=Z("meta"),r=0,o=Object.isExtensible||function(){return!0},i=function(t){e(t,n,{value:{objectID:"O"+ ++r,weakData:{}}})},a=t.exports={REQUIRED:!1,fastKey:function(t,e){if(!b(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!E(t,n)){if(!o(t))return"F";if(!e)return"E";i(t)}return t[n].objectID},getWeakData:function(t,e){if(!E(t,n)){if(!o(t))return!0;if(!e)return!1;i(t)}return t[n].weakData},onFreeze:function(t){return eo&&a.REQUIRED&&o(t)&&!E(t,n)&&i(t),t}};J[n]=!0})),ro=Be("iterator"),oo=Array.prototype,io={};io[Be("toStringTag")]="z";var ao="[object z]"===String(io),so=Be("toStringTag"),co="Arguments"==h(function(){return arguments}()),lo=ao?h:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),so))?n:co?h(e):"Object"==(r=h(e))&&"function"==typeof e.callee?"Arguments":r},uo=Be("iterator"),Ao=function(t){var e=t.return;if(void 0!==e)return N(e.call(t)).value},po=function(t,e){this.stopped=t,this.result=e},fo=function(t,e,n){var r,o,i,a,s,c,l,u,A=n&&n.that,p=!(!n||!n.AS_ENTRIES),f=!(!n||!n.IS_ITERATOR),d=!(!n||!n.INTERRUPTED),h=Fn(e,A,1+p+d),m=function(t){return r&&Ao(r),new po(!0,t)},g=function(t){return p?(N(t),d?h(t[0],t[1],m):h(t[0],t[1])):d?h(t,m):h(t)};if(f)r=t;else{if(o=function(t){if(null!=t)return t[uo]||t["@@iterator"]||_r[lo(t)]}(t),"function"!=typeof o)throw TypeError("Target is not iterable");if(void 0!==(u=o)&&(_r.Array===u||oo[ro]===u)){for(i=0,a=dt(t.length);a>i;i++)if((s=g(t[i]))&&s instanceof po)return s;return new po(!1)}r=o.call(t)}for(c=r.next;!(l=c.call(r)).done;){try{s=g(l.value)}catch(t){throw Ao(r),t}if("object"==typeof s&&s&&s instanceof po)return s}return new po(!1)},ho=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t},mo=Be("iterator"),go=!1;try{var vo=0,yo={next:function(){return{done:!!vo++}},return:function(){go=!0}};yo[mo]=function(){return this},Array.from(yo,(function(){throw 2}))}catch(t){}var bo=function(t,e,n){for(var r in e)at(t,r,e[r],n);return t},Co=k.f,wo=no.fastKey,xo=it.set,Eo=it.getterFor,To={getConstructor:function(t,e,n,r){var o=t((function(t,i){ho(t,o,e),xo(t,{type:e,index:Wt(null),first:void 0,last:void 0,size:0}),l||(t.size=0),null!=i&&fo(i,t[r],{that:t,AS_ENTRIES:n})})),i=Eo(e),a=function(t,e,n){var r,o,a=i(t),c=s(t,e);return c?c.value=n:(a.last=c={index:o=wo(e,!0),key:e,value:n,previous:r=a.last,next:void 0,removed:!1},a.first||(a.first=c),r&&(r.next=c),l?a.size++:t.size++,"F"!==o&&(a.index[o]=c)),t},s=function(t,e){var n,r=i(t),o=wo(e);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==e)return n};return bo(o.prototype,{clear:function(){for(var t=i(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,l?t.size=0:this.size=0},delete:function(t){var e=this,n=i(e),r=s(e,t);if(r){var o=r.next,a=r.previous;delete n.index[r.index],r.removed=!0,a&&(a.next=o),o&&(o.previous=a),n.first==r&&(n.first=o),n.last==r&&(n.last=a),l?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=i(this),r=Fn(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!s(this,t)}}),bo(o.prototype,n?{get:function(t){var e=s(this,t);return e&&e.value},set:function(t,e){return a(this,0===t?0:t,e)}}:{add:function(t){return a(this,t=0===t?0:t,t)}}),l&&Co(o.prototype,"size",{get:function(){return i(this).size}}),o},setStrong:function(t,e,n){var r=e+" Iterator",o=Eo(e),i=Eo(r);Vr(t,e,(function(t,e){xo(this,{type:r,target:t,state:o(t),kind:e,last:void 0})}),(function(){for(var t=i(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),je(e)}};!function(t,e,n){var r=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),i=r?"set":"add",a=s[t],l=a&&a.prototype,u=a,A={},p=function(t){var e=l[t];at(l,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(o&&!b(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return o&&!b(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(o&&!b(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})};if(Ot(t,"function"!=typeof a||!(o||l.forEach&&!c((function(){(new a).entries().next()})))))u=n.getConstructor(e,t,r,i),no.REQUIRED=!0;else if(Ot(t,!0)){var f=new u,d=f[i](o?{}:-0,1)!=f,h=c((function(){f.has(1)})),m=function(t,e){if(!e&&!go)return!1;var n=!1;try{var r={};r[mo]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n}((function(t){new a(t)})),g=!o&&c((function(){for(var t=new a,e=5;e--;)t[i](e,e);return!t.has(-0)}));m||((u=e((function(e,n){ho(e,u,t);var o=Rt(new a,e,u);return null!=n&&fo(n,o[i],{that:o,AS_ENTRIES:r}),o}))).prototype=l,l.constructor=u),(h||g)&&(p("delete"),p("has"),r&&p("get")),(g||d)&&p(i),o&&l.clear&&delete l.clear}A[t]=u,Dt({global:!0,forced:u!=a},A),Fr(u,t),o||n.setStrong(u,t,r)}("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),To);var Io=ao?{}.toString:function(){return"[object "+lo(this)+"]"};ao||at(Object.prototype,"toString",Io,{unsafe:!0});var Bo=Dn.charAt,So="String Iterator",_o=it.set,Mo=it.getterFor(So);Vr(String,"String",(function(t){_o(this,{type:So,string:String(t),index:0})}),(function(){var t,e=Mo(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=Bo(n,r),e.index+=t.length,{value:t,done:!1})}));var No={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Oo=Be("iterator"),ko=Be("toStringTag"),Do=to.values;for(var Lo in No){var jo=s[Lo],Ro=jo&&jo.prototype;if(Ro){if(Ro[Oo]!==Do)try{D(Ro,Oo,Do)}catch(t){Ro[Oo]=Do}if(Ro[ko]||D(Ro,ko,Lo),No[Lo])for(var Po in to)if(Ro[Po]!==to[Po])try{D(Ro,Po,to[Po])}catch(t){Ro[Po]=to[Po]}}}var Uo=$n.forEach,Fo=Jn("forEach")?[].forEach:function(t){return Uo(this,t,arguments.length>1?arguments[1]:void 0)};for(var zo in No){var Qo=s[zo],$o=Qo&&Qo.prototype;if($o&&$o.forEach!==Fo)try{D($o,"forEach",Fo)}catch(t){$o.forEach=Fo}}var Go="1.3.0",Ho=function(){function t(){this.handlers=new Map}return t.prototype.getVersion=function(){return Go},t.prototype.subscribe=function(t,e){this.handlers.set(t,(this.handlers.get(t)||[]).concat(e))},t.prototype.unsubscribe=function(t,e){this.handlers.set(t,(this.handlers.get(t)||[]).filter((function(t){return t!=e})))},t.prototype.emit=function(t,e){(this.handlers.get(t)||[]).forEach((function(t){try{t(e)}catch(t){console.error("could not invoke event listener",t)}}))},t}();var Yo=(void 0!==window.OC&&window.OC._eventBus&&void 0===window._nc_event_bus&&(console.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),void 0!==window._nc_event_bus?new wr(window._nc_event_bus):window._nc_event_bus=new Ho);function Wo(t,e){Yo.subscribe(t,e)}function Zo(t,e){Yo.unsubscribe(t,e)}function Xo(t,e){Yo.emit(t,e)}},22677:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getGettextBuilder=function(){return new l},n(27495),n(25440),n(84185),n(26099),n(38781);var r,o=(r=n(82148))&&r.__esModule?r:{default:r},i=n(71846);function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return this.subtitudePlaceholders(this.gt.gettext(t),e)}},{key:"ngettext",value:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.subtitudePlaceholders(this.gt.ngettext(t,e,n).replace(/%n/g,n.toString()),r)}}]),t}()},71846:(t,e,n)=>{"use strict";function r(){return document.documentElement.dataset.locale||"en"}n(84185),Object.defineProperty(e,"__esModule",{value:!0}),e.getCanonicalLocale=function(){return r().replace(/_/g,"-")},e.getDayNames=function(){if(void 0===window.dayNames)return console.warn("No dayNames found"),["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];return window.dayNames},e.getDayNamesMin=function(){if(void 0===window.dayNamesMin)return console.warn("No dayNamesMin found"),["Su","Mo","Tu","We","Th","Fr","Sa"];return window.dayNamesMin},e.getDayNamesShort=function(){if(void 0===window.dayNamesShort)return console.warn("No dayNamesShort found"),["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."];return window.dayNamesShort},e.getFirstDay=function(){if(void 0===window.firstDay)return console.warn("No firstDay found"),1;return window.firstDay},e.getLanguage=function(){return document.documentElement.lang||"en"},e.getLocale=r,e.getMonthNames=function(){if(void 0===window.monthNames)return console.warn("No monthNames found"),["January","February","March","April","May","June","July","August","September","October","November","December"];return window.monthNames},e.getMonthNamesShort=function(){if(void 0===window.monthNamesShort)return console.warn("No monthNamesShort found"),["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return window.monthNamesShort},e.translate=function(t,e,n,r,o){if("undefined"==typeof OC)return console.warn("No OC found"),e;return OC.L10N.translate(t,e,n,r,o)},e.translatePlural=function(t,e,n,r,o,i){if("undefined"==typeof OC)return console.warn("No OC found"),e;return OC.L10N.translatePlural(t,e,n,r,o,i)},n(27495),n(25440)},61314:(t,e,n)=>{"use strict";n(25276),n(69085),n(26099),n(27495),n(38781),n(25440),Object.defineProperty(e,"__esModule",{value:!0}),e.getRootUrl=e.generateFilePath=e.imagePath=e.generateUrl=e.generateOcsUrl=e.generateRemoteUrl=e.linkTo=void 0;e.linkTo=function(t,e){return r(t,"",e)};e.generateRemoteUrl=function(t){return window.location.protocol+"//"+window.location.host+function(t){return o()+"/remote.php/"+t}(t)};e.generateOcsUrl=function(t,e){return e=2!==e?1:2,window.location.protocol+"//"+window.location.host+o()+"/ocs/v"+e+".php/"+t+"/"};e.generateUrl=function(t,e,n){var r=Object.assign({escape:!0,noRewrite:!1},n||{}),i=function(t,e){return e=e||{},t.replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return r.escape?"string"==typeof o||"number"==typeof o?encodeURIComponent(o.toString()):encodeURIComponent(t):"string"==typeof o||"number"==typeof o?o.toString():t}))};return"/"!==t.charAt(0)&&(t="/"+t),!0!==OC.config.modRewriteWorking||r.noRewrite?o()+"/index.php"+i(t,e||{}):o()+i(t,e||{})};e.imagePath=function(t,e){return-1===e.indexOf(".")?r(t,"img",e+".svg"):r(t,"img",e)};var r=function(t,e,n){var r=-1!==OC.coreApps.indexOf(t),i=o();return"php"!==n.substring(n.length-3)||r?"php"===n.substring(n.length-3)||r?(i+="settings"!==t&&"core"!==t&&"search"!==t||"ajax"!==e?"/":"/index.php/",r||(i+="apps/"),""!==t&&(i+=t+="/"),e&&(i+=e+"/"),i+=n):(i=OC.appswebroots[t],e&&(i+="/"+e+"/"),"/"!==i.substring(i.length-1)&&(i+="/"),i+=n):(i+="/index.php/apps/"+t,"index.php"!==n&&(i+="/",e&&(i+=encodeURI(e+"/")),i+=n)),i};e.generateFilePath=r;var o=function(){return OC.webroot};e.getRootUrl=o},29378:(t,e,n)=>{window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=108)}({0:function(t,e,n){"use strict";function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,e)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n20}},methods:{getText:function(){return this.$slots.default?this.$slots.default[0].text.trim():""}}}},39:function(t,e){t.exports=n(3296)},48:function(t,e,n){"use strict";n(16),n(5),n(17),n(18),n(39);var r=n(38),o=(n(14),function(t,e){for(var n=t.$parent;n;){if(n.$options.name===e)return n;n=n.$parent}});e.a={mixins:[r.a],props:{icon:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:""}},computed:{isIconUrl:function(){try{return new URL(this.icon)}catch(t){return!1}}},methods:{onClick:function(t){if(this.$emit("click",t),this.closeAfterClick){var e=o(this,"Actions");e&&e.closeMenu&&e.closeMenu()}}}}},5:function(t,e){t.exports=n(26099)},93:function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i)()(o.a);a.push([t.i,"li.active[data-v-63d21c96]{background-color:var(--color-background-hover)}.action--disabled[data-v-63d21c96]{pointer-events:none;opacity:.5}.action--disabled[data-v-63d21c96]:hover,.action--disabled[data-v-63d21c96]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-63d21c96]{opacity:1 !important}.action-button[data-v-63d21c96]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-button[data-v-63d21c96]:hover,.action-button[data-v-63d21c96]:focus{opacity:1}.action-button>span[data-v-63d21c96]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-63d21c96]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-button .material-design-icon[data-v-63d21c96]{width:44px;height:44px;opacity:1}.action-button .material-design-icon .material-design-icon__svg[data-v-63d21c96]{vertical-align:middle}.action-button p[data-v-63d21c96]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-63d21c96]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-63d21c96]{font-weight:bold;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}\n","",{version:3,sources:["webpack://./../../assets/action.scss","webpack://./../../assets/variables.scss"],names:[],mappings:"AAwBC,2BAEE,8CAA+C,CAC/C,mCAMD,mBAAoB,CACpB,UCQmB,CDVpB,kFAIE,cAAe,CACf,UCKkB,CDVpB,qCAQE,oBAAqB,CACrB,gCAOD,YAAa,CACb,sBAAuB,CAEvB,UAAW,CACX,WAAY,CACZ,QAAS,CACT,SAAU,CACV,kBCtB8C,CDwB9C,cAAe,CACf,kBAAmB,CAEnB,UCjBiB,CDkBjB,4BAA6B,CAC7B,QAAS,CACT,eAAgB,CAChB,4BAA6B,CAC7B,eAAgB,CAEhB,kBAAmB,CACnB,kCAAmC,CACnC,gBC5CmB,CDsBpB,4EA0BE,SC7Ba,CDGf,qCA8BE,cAAe,CACf,kBAAmB,CACnB,sCAGA,UCzDkB,CD0DlB,WC1DkB,CD2DlB,SCxCa,CDyCb,+BAAwC,CACxC,oBCzDa,CD0Db,2BAA4B,CAxC9B,sDA4CE,UClEkB,CDmElB,WCnEkB,CDoElB,SCjDa,CDGf,iFAiDG,qBAAsB,CAjDzB,kCAuDE,eAAgB,CAChB,iBAAkB,CAGlB,gBAA8C,CAE9C,cAAe,CACf,eAAgB,CAGhB,eAAgB,CAChB,sBAAuB,CACvB,0CAGA,cAAe,CAEf,oBAAqB,CACrB,uCAGA,gBAAiB,CACjB,sBAAuB,CACvB,eAAgB,CAChB,kBAAmB,CACnB,cAAe,CACf,oBAAqB",sourcesContent:["/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Marco Ambrosini \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n@mixin action-active {\n\tli {\n\t\t&.active {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n}\n\n@mixin action--disabled {\n\t.action--disabled {\n\t\tpointer-events: none;\n\t\topacity: $opacity_disabled;\n\t\t&:hover, &:focus {\n\t\t\tcursor: default;\n\t\t\topacity: $opacity_disabled;\n\t\t}\n\t\t& * {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n\n\n@mixin action-item($name) {\n\t.action-#{$name} {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tpadding-right: $icon-margin;\n\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\n\t\topacity: $opacity_normal;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tbox-shadow: none;\n\n\t\tfont-weight: normal;\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: $clickable-area;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: $opacity_full;\n\t\t}\n\n\t\t& > span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t&__icon {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\t\t\tbackground-position: $icon-margin center;\n\t\t\tbackground-size: $icon-size;\n\t\t\tbackground-repeat: no-repeat;\n\t\t}\n\n\t\t.material-design-icon {\n\t\t\twidth: $clickable-area;\n\t\t\theight: $clickable-area;\n\t\t\topacity: $opacity_full;\n\n\t\t\t.material-design-icon__svg {\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\t\t}\n\n\t\t// long text area\n\t\tp {\n\t\t\tmax-width: 220px;\n\t\t\tline-height: 1.6em;\n\n\t\t\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\n\t\t\tpadding: #{($clickable-area - 1.6*14px) / 2} 0;\n\n\t\t\tcursor: pointer;\n\t\t\ttext-align: left;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&__longtext {\n\t\t\tcursor: pointer;\n\t\t\t// allow the use of `\\n`\n\t\t\twhite-space: pre-wrap;\n\t\t}\n\n\t\t&__title {\n\t\t\tfont-weight: bold;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\tmax-width: 100%;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: ($clickable-area - $icon-size) / 2;\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n"],sourceRoot:""}]),e.a=a},94:function(t,e){}})},86541:(t,e,n)=>{window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=72)}([function(t,e,n){"use strict";function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,e)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n
'),r.VTooltip.options.defaultHtml=!1,e.default=r.VTooltip},function(t,e){t.exports=n(42762)},function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i)()(o.a);a.push([t.i,".vue-tooltip[data-v-f56d517]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-f56d517][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-f56d517][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-f56d517][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-f56d517] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-f56d517] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\n","",{version:3,sources:["webpack://./index.scss"],names:[],mappings:"AAeA,6BACC,iBAAkB,CAClB,cAAe,CACf,UAAW,CACX,SAAU,CACV,aAAc,CACd,QAAS,CAET,eAAgB,CAChB,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,SAAU,CACV,eAAgB,CAEhB,eAAgB,CAChB,sDAAuD,CAhBxD,gEAqBG,QAAS,CACT,YAAa,CACb,eAAgB,CAChB,6BA1Be,CA2Bf,8BAA+B,CAC/B,+BAAgC,CAChC,6BAA8B,CA3BjC,mEAkCG,KAAM,CACN,YAAa,CACb,eAAgB,CAChB,6BAvCe,CAwCf,4BAA6B,CAC7B,8BAA+B,CAC/B,6BAA8B,CAxCjC,kEA+CG,UAAW,CACX,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,4BAA6B,CAC7B,+BAAgC,CAChC,6BAA8B,CArDjC,iEA4DG,SAAU,CACV,cAAe,CACf,aAAc,CACd,6BAjEe,CAkEf,4BAA6B,CAC7B,8BAA+B,CAC/B,+BAAgC,CAlEnC,iDAwEE,iBAAkB,CAClB,wCAAyC,CACzC,SAAU,CA1EZ,kDA6EE,kBAAmB,CACnB,uBAAwB,CACxB,SAAU,CA/EZ,4CAoFE,eAAgB,CAChB,eAAgB,CAChB,iBAAkB,CAClB,4BAA6B,CAC7B,kCAAmC,CACnC,6CAA8C,CAzFhD,4CA8FE,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,QAAS,CACT,kBAAmB,CACnB,yCAA0C",sourcesContent:["$scope_version:\"f56d517\"; @import 'variables';\n/**\n* @copyright Copyright (c) 2016, John Molakvoæ \n* @copyright Copyright (c) 2016, Robin Appelman \n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt \n* @copyright Copyright (c) 2016, Erik Pellikka \n* @copyright Copyright (c) 2015, Vincent Petry \n*\n* Bootstrap v3.3.5 (http://getbootstrap.com)\n* Copyright 2011-2015 Twitter, Inc.\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n*/\n\n$arrow-width: 10px;\n\n.vue-tooltip[data-v-#{$scope_version}] {\n\tposition: absolute;\n\tz-index: 100000;\n\tright: auto;\n\tleft: auto;\n\tdisplay: block;\n\tmargin: 0;\n\t/* default to top */\n\tmargin-top: -3px;\n\tpadding: 10px 0;\n\ttext-align: left;\n\ttext-align: start;\n\topacity: 0;\n\tline-height: 1.6;\n\n\tline-break: auto;\n\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t// TOP\n\t&[x-placement^='top'] {\n\t\t.tooltip-arrow {\n\t\t\tbottom: 0;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// BOTTOM\n\t&[x-placement^='bottom'] {\n\t\t.tooltip-arrow {\n\t\t\ttop: 0;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// RIGHT\n\t&[x-placement^='right'] {\n\t\t.tooltip-arrow {\n\t\t\tright: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width $arrow-width $arrow-width 0;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// LEFT\n\t&[x-placement^='left'] {\n\t\t.tooltip-arrow {\n\t\t\tleft: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t}\n\t}\n\n\t// HIDDEN / SHOWN\n\t&[aria-hidden='true'] {\n\t\tvisibility: hidden;\n\t\ttransition: opacity .15s, visibility .15s;\n\t\topacity: 0;\n\t}\n\t&[aria-hidden='false'] {\n\t\tvisibility: visible;\n\t\ttransition: opacity .15s;\n\t\topacity: 1;\n\t}\n\n\t// CONTENT\n\t.tooltip-inner {\n\t\tmax-width: 350px;\n\t\tpadding: 5px 8px;\n\t\ttext-align: center;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t// ARROW\n\t.tooltip-arrow {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: 0;\n\t\tborder-style: solid;\n\t\tborder-color: var(--color-main-background);\n\t}\n}\n"],sourceRoot:""}]),e.a=a},,function(t,e){t.exports=n(25440)},function(t,e){t.exports=n(38781)},function(t,e){t.exports=n(23500)},function(t,e,n){"use strict";var r={name:"Popover",components:{VPopover:n(6).VPopover},mounted:function(){var t=this;this.$watch((function(){return t.$refs.popover.isOpen}),(function(e){e?t.$emit("after-show"):t.$emit("after-hide")}))}},o=n(2),i=n.n(o),a=n(19),s={insert:"head",singleton:!1},c=(i()(a.a,s),a.a.locals,n(3)),l=n(20),u=n.n(l),A=Object(c.a)(r,(function(){var t=this.$createElement,e=this._self._c||t;return e("VPopover",this._g(this._b({ref:"popover",attrs:{"popover-base-class":"popover","popover-wrapper-class":"popover__wrapper","popover-arrow-class":"popover__arrow","popover-inner-class":"popover__inner"}},"VPopover",this.$attrs,!1),this.$listeners),[this._t("trigger"),this._v(" "),e("template",{slot:"popover"},[this._t("default")],2)],2)}),[],!1,null,null,null);"function"==typeof u.a&&u()(A),e.a=A.exports},,,function(t,e){t.exports=n(52675)},function(t,e){t.exports=n(22677)},function(t,e,n){"use strict";n(15),n(25),n(5),n(26),e.a=function(t){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,t||5)}},,,,function(t,e){t.exports=n(89463)},,,function(t,e){t.exports=n(34782)},,,,,function(t,e){t.exports=n(2259)},function(t,e,n){"use strict";n.r(e);var r=n(28);e.default=r.a},,,,function(t,e){t.exports=n(2008)},function(t,e){t.exports=n(23418)},,,,,,,,,,,,,,,function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i),s=n(4),c=n.n(s),l=n(7),u=n(8),A=n(9),p=n(10),f=a()(o.a),d=c()(l.a),h=c()(u.a),m=c()(A.a),g=c()(p.a);f.push([t.i,'@font-face{font-family:"iconfont-vue-f56d517";src:url('+d+");src:url("+d+') format("embedded-opentype"),url('+h+') format("woff"),url('+m+') format("truetype"),url('+g+') format("svg")}.icon[data-v-74d0a51f]{font-style:normal;font-weight:400}.icon.arrow-left-double[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.arrow-left[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.arrow-right-double[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.arrow-right[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.breadcrumb[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.checkmark[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.close[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.confirm[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.info[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.menu[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.more[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.pause[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.play[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.triangle-s[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.user-status-away[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.user-status-dnd[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.user-status-invisible[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.icon.user-status-online[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";content:""}.action-item[data-v-74d0a51f]{position:relative;display:inline-block}.action-item--single[data-v-74d0a51f]:hover,.action-item--single[data-v-74d0a51f]:focus,.action-item--single[data-v-74d0a51f]:active,.action-item__menutoggle[data-v-74d0a51f]:hover,.action-item__menutoggle[data-v-74d0a51f]:focus,.action-item__menutoggle[data-v-74d0a51f]:active{opacity:1;background-color:rgba(127,127,127,0.25)}.action-item__menutoggle[data-v-74d0a51f]:disabled,.action-item--single[data-v-74d0a51f]:disabled{opacity:.3 !important}.action-item.action-item--open .action-item__menutoggle[data-v-74d0a51f]{opacity:1;background-color:rgba(127,127,127,0.25)}.action-item--single[data-v-74d0a51f],.action-item__menutoggle[data-v-74d0a51f]{box-sizing:border-box;width:auto;min-width:44px;height:44px;margin:0;padding:14px;cursor:pointer;border:none;border-radius:22px;background-color:transparent}.action-item__menutoggle[data-v-74d0a51f]{display:flex;align-items:center;justify-content:center;opacity:.7;font-weight:bold;line-height:16px}.action-item__menutoggle[data-v-74d0a51f] span{width:16px;height:16px;line-height:16px}.action-item__menutoggle[data-v-74d0a51f]:before{content:\'\'}.action-item__menutoggle--default-icon[data-v-74d0a51f]:before{font-family:"iconfont-vue-f56d517";font-style:normal;font-weight:400;content:""}.action-item__menutoggle--default-icon[data-v-74d0a51f]::before{font-size:16px}.action-item__menutoggle--with-title[data-v-74d0a51f]{position:relative;padding-left:44px;white-space:nowrap;opacity:1;border:1px solid var(--color-border-dark);background-color:var(--color-background-dark);background-position:14px center;font-size:inherit}.action-item__menutoggle--with-title[data-v-74d0a51f]:before{position:absolute;top:14px;left:14px}.action-item__menutoggle--primary[data-v-74d0a51f]{opacity:1;color:var(--color-primary-text);border:none;background-color:var(--color-primary-element)}.action-item--open .action-item__menutoggle--primary[data-v-74d0a51f],.action-item__menutoggle--primary[data-v-74d0a51f]:hover,.action-item__menutoggle--primary[data-v-74d0a51f]:focus,.action-item__menutoggle--primary[data-v-74d0a51f]:active{color:var(--color-primary-text) !important;background-color:var(--color-primary-element-light) !important}.action-item--single[data-v-74d0a51f]{opacity:.7}.action-item--single[data-v-74d0a51f]:hover,.action-item--single[data-v-74d0a51f]:focus,.action-item--single[data-v-74d0a51f]:active{opacity:1}.action-item--single>[hidden][data-v-74d0a51f]{display:none}.ie .action-item__menu[data-v-74d0a51f],.ie .action-item__menu .action-item__menu_arrow[data-v-74d0a51f],.edge .action-item__menu[data-v-74d0a51f],.edge .action-item__menu .action-item__menu_arrow[data-v-74d0a51f]{border:1px solid var(--color-border)}\n',"",{version:3,sources:["webpack://./../../fonts/scss/iconfont-vue.scss","webpack://./Actions.vue","webpack://./../../assets/variables.scss"],names:[],mappings:"AA2FE,WACC,kCAAmC,CACnC,2CAAuC,CACvC,+OAGmD,CAMpD,uBACE,iBAAkB,CAClB,eAAgB,CAFlB,gDAMM,kCAAmC,CACnC,WA5Ge,CAAO,yCA0GL,kCACJ,CAAsB,WA1G3B,CAAA,iDAyGU,kCACL,CAAA,WAzGG,CAAA,0CAwGL,kCACE,CAAA,WAxGJ,CAAA,yCAuGC,kCACG,CAAA,WACN,CAxGC,wCAsGC,kCACI,CAAA,WACb,CAAO,oCAFF,kCACQ,CAAA,WACb,CAAA,sCAFO,kCACM,CAAA,WACb,CAAA,mCAFI,kCACS,CAAA,WACb,CAAA,mCAPD,kCAMc,CAAA,WACb,CAAA,mCAPD,kCAMc,CAAA,WACb,CAAA,oCAPD,kCAMc,CAAA,WACb,CAAA,mCAPD,kCAMc,CAAA,WAAsB,CACnC,yCAPD,kCAMc,CAAA,WAAA,CAAsB,+CANpC,kCAMc,CAAA,WAAA,CAAA,8CANd,kCAMc,CAAA,WAAA,CAAA,oDANd,kCAMc,CAAA,WAAA,CAAA,iDANd,kCAMc,CAAA,WAAA,CAAA,8BA1FG,iBC2mBZ,CACX,oBACA,CAAA,sRASC,SAAA,CAAY,uCCrmBE,CAAA,kGD6mBd,qBACA,CAAA,yEAGmB,SAAA,CAAA,uCCrmBK,CAAA,gFD4mBxB,qBACA,CAAA,UAAY,CAAA,cACL,CAAA,WACP,CAAS,QACT,CAAA,YACA,CAAA,cChoBY,CAAA,WDkoBJ,CAAA,kBAER,CAAA,4BACA,CAAA,0CACA,YAAA,CAAA,kBAMA,CAAA,sBACA,CAAA,UAAe,CAAE,gBCnoBF,CAAE,gBDqoBJ,CAAI,+CANjB,UAUA,CAAA,WACC,CAAK,gBCxpBI,CAAI,iDD6oBd,UAAY,CAAA,+DAkBX,kCD3rBF,CAAA,iBAAsB,CAkFnB,eAAY,CAAA,WACZ,CAAA,gEC0mBD,cAAc,CAAA,sDAIb,iBAAA,CAGW,iBACF,CAAQ,kBC7qBA,CD+qBlB,SAAA,CAAA,yCAEkB,CAAA,6CAEA,CAAA,+BAClB,CAAA,iBAAkC,CAAM,6DARxC,iBAAY,CAWJ,QACP,CAAQ,SAAU,CAClB,mDAEA,SAAA,CAAA,+BAKM,CAAA,WAAA,CAAA,6CAEW,CAAA,kPAJlB,0CASQ,CAAA,8DACW,CAAA,sCAClB,UAAA,CAAA,qIAIF,SAAA,CAAA,+CAAA,YAQI,CAAA,sNASc,oCACA",sourcesContent:['$__iconfont__data: map-merge(if(global_variable_exists(\'__iconfont__data\'), $__iconfont__data, ()), (\n\t"iconfont-vue-f56d517": (\n\t\t"arrow-left-double": "\\ea01",\n\t\t"arrow-left": "\\ea02",\n\t\t"arrow-right-double": "\\ea03",\n\t\t"arrow-right": "\\ea04",\n\t\t"breadcrumb": "\\ea05",\n\t\t"checkmark": "\\ea06",\n\t\t"close": "\\ea07",\n\t\t"confirm": "\\ea08",\n\t\t"info": "\\ea09",\n\t\t"menu": "\\ea0a",\n\t\t"more": "\\ea0b",\n\t\t"pause": "\\ea0c",\n\t\t"play": "\\ea0d",\n\t\t"triangle-s": "\\ea0e",\n\t\t"user-status-away": "\\ea0f",\n\t\t"user-status-dnd": "\\ea10",\n\t\t"user-status-invisible": "\\ea11",\n\t\t"user-status-online": "\\ea12"\n\t)\n));\n\n\n$create-font-face: true !default; // should the @font-face tag get created?\n\n// should there be a custom class for each icon? will be .filename\n$create-icon-classes: true !default; \n\n// what is the common class name that icons share? in this case icons need to have .icon.filename in their classes\n// this requires you to have 2 classes on each icon html element, but reduced redeclaration of the font family\n// for each icon\n$icon-common-class: \'icon\' !default;\n\n// if you whish to prefix your filenames, here you can do so.\n// if this string stays empty, your classes will use the filename, for example\n// an icon called star.svg will result in a class called .star\n// if you use the prefix to be \'icon-\' it would result in .icon-star\n$icon-prefix: \'\' !default; \n\n// helper function to get the correct font group\n@function iconfont-group($group: null) {\n @if (null == $group) {\n $group: nth(map-keys($__iconfont__data), 1);\n }\n @if (false == map-has-key($__iconfont__data, $group)) {\n @warn \'Undefined Iconfont Family!\';\n @return ();\n }\n @return map-get($__iconfont__data, $group);\n}\n\n// helper function to get the correct icon of a group\n@function iconfont-item($name) {\n $slash: str-index($name, \'/\');\n $group: null;\n @if ($slash) {\n $group: str-slice($name, 0, $slash - 1);\n $name: str-slice($name, $slash + 1);\n } @else {\n $group: nth(map-keys($__iconfont__data), 1);\n }\n $group: iconfont-group($group);\n @if (false == map-has-key($group, $name)) {\n @warn \'Undefined Iconfont Glyph!\';\n @return \'\';\n }\n @return map-get($group, $name);\n}\n\n// complete mixing to include the icon\n// usage:\n// .my_icon{ @include iconfont(\'star\') }\n@mixin iconfont($icon) {\n $slash: str-index($icon, \'/\');\n $group: null;\n @if ($slash) {\n $group: str-slice($icon, 0, $slash - 1);\n } @else {\n $group: nth(map-keys($__iconfont__data), 1);\n }\n &:before {\n font-family: $group;\n font-style: normal;\n font-weight: 400;\n content: iconfont-item($icon);\n }\n}\n\n// creates the font face tag if the variable is set to true (default)\n@if $create-font-face == true {\n @font-face {\n font-family: "iconfont-vue-f56d517";\n src: url(\'../iconfont-vue-f56d517.eot\'); /* IE9 Compat Modes */\n src: url(\'../iconfont-vue-f56d517.eot?#iefix\') format(\'embedded-opentype\'), /* IE6-IE8 */\n url(\'../iconfont-vue-f56d517.woff\') format(\'woff\'), /* Pretty Modern Browsers */\n url(\'../iconfont-vue-f56d517.ttf\') format(\'truetype\'), /* Safari, Android, iOS */\n url(\'../iconfont-vue-f56d517.svg\') format(\'svg\'); /* Legacy iOS */\n }\n}\n\n// creates icon classes for each individual loaded svg (default)\n@if $create-icon-classes == true {\n .#{$icon-common-class} {\n font-style: normal;\n font-weight: 400;\n\n @each $icon, $content in map-get($__iconfont__data, "iconfont-vue-f56d517") {\n &.#{$icon-prefix}#{$icon}:before {\n font-family: "iconfont-vue-f56d517";\n content: iconfont-item("iconfont-vue-f56d517/#{$icon}");\n }\n }\n }\n}\n',"$scope_version:\"f56d517\"; @import 'variables';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import '../../fonts/scss/iconfont-vue';\n\n.action-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t// put a grey round background when menu is opened\n\t// or hover-focused\n\t&--single:hover,\n\t&--single:focus,\n\t&--single:active,\n\t&__menutoggle:hover,\n\t&__menutoggle:focus,\n\t&__menutoggle:active {\n\t\topacity: $opacity_full;\n\t\t// good looking on dark AND white bg\n\t\tbackground-color: $icon-focus-bg;\n\t}\n\n\t// TODO: handle this in the future button component\n\t&__menutoggle:disabled,\n\t&--single:disabled {\n\t\topacity: .3 !important;\n\t}\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tbackground-color: $action-background-hover;\n\t}\n\n\t// icons\n\t&--single,\n\t&__menutoggle {\n\t\tbox-sizing: border-box;\n\t\twidth: auto;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tmargin: 0;\n\t\tpadding: $icon-margin;\n\t\tcursor: pointer;\n\t\tborder: none;\n\t\tborder-radius: $clickable-area / 2;\n\t\tbackground-color: transparent;\n\t}\n\n\t// icon-more\n\t&__menutoggle {\n\t\t// align menu icon in center\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\topacity: $opacity_normal;\n\t\tfont-weight: bold;\n\t\tline-height: $icon-size;\n\n\t\t// image slot\n\t\t/deep/ span {\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t\tline-height: $icon-size;\n\t\t}\n\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t}\n\n\t\t&--default-icon {\n\t\t\t@include iconfont('more');\n\t\t\t&::before {\n\t\t\t\tfont-size: $icon-size;\n\t\t\t}\n\t\t}\n\n\t\t&--with-title {\n\t\t\tposition: relative;\n\t\t\tpadding-left: $clickable-area;\n\t\t\twhite-space: nowrap;\n\t\t\topacity: $opacity_full;\n\t\t\tborder: 1px solid var(--color-border-dark);\n\t\t\t// with a title, we need to display this as a real button\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\tbackground-position: $icon-margin center;\n\t\t\tfont-size: inherit;\n\t\t\t// non-background icon class\n\t\t\t&:before {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: $icon-margin;\n\t\t\t\tleft: $icon-margin;\n\t\t\t}\n\t\t}\n\n\t\t&--primary {\n\t\t\topacity: $opacity_full;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tborder: none;\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t.action-item--open &,\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\tcolor: var(--color-primary-text) !important;\n\t\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--single {\n\t\topacity: $opacity_normal;\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t\t// hide anything the slot is displaying\n\t\t& > [hidden] {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.ie,\n.edge {\n\t.action-item__menu,\n\t.action-item__menu .action-item__menu_arrow {\n\t\tborder: 1px solid var(--color-border);\n\t}\n}\n\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: ($clickable-area - $icon-size) / 2;\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n"],sourceRoot:""}]),e.a=f},function(t,e){},function(t,e){t.exports=n(79432)},,function(t,e){t.exports=n(83851)},function(t,e){t.exports=n(81278)},function(t,e,n){"use strict";n.r(e);var r=n(84);e.default=r.a},,,,,,,,,,,,function(t,e,n){"use strict";n(22),n(50),n(68),n(31),n(70),n(27),n(71),n(37),n(5),n(45),n(16),n(17),n(18),n(51),n(40),n(14);var r=n(21),o=n(33),i=n(12),a=n(46);function s(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1},isValidSingleAction:function(){return 1===this.actions.length&&null!==this.firstActionElement},firstActionVNode:function(){return this.actions[0]},firstAction:function(){return this.children[0]?this.children[0]:{}},firstActionBinding:function(){if(this.firstActionVNode&&this.firstActionVNode.componentOptions){var t=this.firstActionVNode.componentOptions.tag;if("ActionLink"===t)return u(u({is:"a",href:this.firstAction.href,target:this.firstAction.target,"aria-label":this.firstAction.ariaLabel},this.firstAction.$attrs),this.firstAction.$props);if("ActionRouter"===t)return u(u({is:"router-link",to:this.firstAction.to,exact:this.firstAction.exact,"aria-label":this.firstAction.ariaLabel},this.firstAction.$attrs),this.firstAction.$props);if("ActionButton"===t)return u(u({is:"button","aria-label":this.firstAction.ariaLabel},this.firstAction.$attrs),this.firstAction.$props)}return null},firstActionEvent:function(){var t,e,n;return null===(t=this.firstActionVNode)||void 0===t||null===(e=t.componentOptions)||void 0===e||null===(n=e.listeners)||void 0===n?void 0:n.click},firstActionEventBinding:function(){return this.firstActionEvent?"click":null},firstActionIconSlot:function(){var t,e;return null===(t=this.firstAction)||void 0===t||null===(e=t.$slots)||void 0===e?void 0:e.icon},firstActionClass:function(){return((this.firstActionVNode&&this.firstActionVNode.data.staticClass)+" "+(this.firstActionVNode&&this.firstActionVNode.data.class)).trim()},iconSlotIsPopulated:function(){return!!this.$slots.icon}},watch:{open:function(t){t!==this.opened&&(this.opened=t)}},beforeMount:function(){this.initActions()},beforeUpdate:function(){this.initActions()},methods:{openMenu:function(t){this.opened||(this.opened=!0,this.$emit("update:open",!0),this.$emit("open"))},closeMenu:function(t){this.opened&&(this.opened=!1,this.$emit("update:open",!1),this.$emit("close"),this.opened=!1,this.focusIndex=0,this.$refs.menuButton.focus())},onOpen:function(t){var e=this;this.$nextTick((function(){e.focusFirstAction(t)}))},onMouseFocusAction:function(t){if(document.activeElement!==t.target){var e=t.target.closest("li");if(e){var n=e.querySelector(".focusable");if(n){var r=s(this.$refs.menu.querySelectorAll(".focusable")).indexOf(n);r>-1&&(this.focusIndex=r,this.focusAction())}}}},removeCurrentActive:function(){var t=this.$refs.menu.querySelector("li.active");t&&t.classList.remove("active")},focusAction:function(){var t=this.$refs.menu.querySelectorAll(".focusable")[this.focusIndex];if(t){this.removeCurrentActive();var e=t.closest("li.action");t.focus(),e&&e.classList.add("active")}},focusPreviousAction:function(t){this.opened&&(0===this.focusIndex?this.closeMenu():(this.preventIfEvent(t),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction:function(t){if(this.opened){var e=this.$refs.menu.querySelectorAll(".focusable").length-1;this.focusIndex===e?this.closeMenu():(this.preventIfEvent(t),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction:function(t){this.opened&&(this.preventIfEvent(t),this.focusIndex=0,this.focusAction())},focusLastAction:function(t){this.opened&&(this.preventIfEvent(t),this.focusIndex=this.$el.querySelectorAll(".focusable").length-1,this.focusAction())},preventIfEvent:function(t){t&&(t.preventDefault(),t.stopPropagation())},execFirstAction:function(t){this.firstActionEvent&&this.firstActionEvent(t)},initActions:function(){this.actions=(this.$slots.default||[]).filter((function(t){return!!t&&!!t.componentOptions}))},onFocus:function(t){this.$emit("focus",t)},onBlur:function(t){this.$emit("blur",t)}}},f=n(2),d=n.n(f),h=n(66),m={insert:"head",singleton:!1},g=(d()(h.a,m),h.a.locals,n(3)),v=n(67),y=n.n(v),b=Object(g.a)(p,(function(){var t,e,n=this,r=n.$createElement,o=n._self._c||r;return n.isValidSingleAction&&!n.forceMenu?o("element",n._b({directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.firstAction.text,expression:"firstAction.text",modifiers:{auto:!0}}],staticClass:"action-item action-item--single",class:(t={},t[n.firstAction.icon]=n.firstAction.icon,t[n.firstActionClass]=n.firstActionClass,t),attrs:{rel:"noreferrer noopener",disabled:n.disabled},on:n._d({focus:n.onFocus,blur:n.onBlur},[n.firstActionEventBinding,n.execFirstAction])},"element",n.firstActionBinding,!1),[o("VNodes",{attrs:{vnodes:n.firstActionIconSlot}}),n._v(" "),o("span",{attrs:{"aria-hidden":!0,hidden:""}},[n._t("default")],2)],1):o("div",{directives:[{name:"show",rawName:"v-show",value:n.hasMultipleActions||n.forceMenu,expression:"hasMultipleActions || forceMenu"}],staticClass:"action-item",class:{"action-item--open":n.opened}},[o("Popover",{attrs:{delay:0,"handle-resize":!0,open:n.opened,placement:n.placement,"boundaries-element":n.boundariesElement,container:n.container},on:{"update:open":function(t){n.opened=t},show:n.openMenu,"after-show":n.onOpen,hide:n.closeMenu}},[o("button",{ref:"menuButton",staticClass:"icon action-item__menutoggle",class:(e={},e[n.defaultIcon]=!n.iconSlotIsPopulated,e["action-item__menutoggle--with-title"]=n.menuTitle,e["action-item__menutoggle--primary"]=n.primary,e),attrs:{slot:"trigger",disabled:n.disabled,"aria-haspopup":"true","aria-label":n.ariaLabel,"aria-controls":n.randomId,"aria-expanded":n.opened?"true":"false","test-attr":"1",type:"button"},on:{focus:n.onFocus,blur:n.onBlur},slot:"trigger"},[n._t("icon"),n._v("\n\t\t\t"+n._s(n.menuTitle)+"\n\t\t")],2),n._v(" "),o("div",{directives:[{name:"show",rawName:"v-show",value:n.opened,expression:"opened"}],ref:"menu",class:{open:n.opened},attrs:{tabindex:"-1"},on:{keydown:[function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:n.focusPreviousAction(t)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:n.focusNextAction(t)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"tab",9,t.key,"Tab")||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:n.focusNextAction(t)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"tab",9,t.key,"Tab")?null:t.shiftKey?t.ctrlKey||t.altKey||t.metaKey?null:n.focusPreviousAction(t):null},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"page-up",void 0,t.key,void 0)||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:n.focusFirstAction(t)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"page-down",void 0,t.key,void 0)||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:n.focusLastAction(t)},function(t){return!t.type.indexOf("key")&&n._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])||t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),n.closeMenu(t))}],mousemove:n.onMouseFocusAction}},[o("ul",{attrs:{id:n.randomId,tabindex:"-1"}},[n.opened?[n._t("default")]:n._e()],2)])])],1)}),[],!1,null,"74d0a51f",null);"function"==typeof y.a&&y()(b),e.a=b.exports}])},59593:(t,e,n)=>{window,t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/dist/",n(n.s=79)}([function(t,e,n){"use strict";function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(t,e)||function(t,e){if(t){if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n
'),r.VTooltip.options.defaultHtml=!1,e.default=r.VTooltip},,function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i)()(o.a);a.push([t.i,".vue-tooltip[data-v-f56d517]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-f56d517][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-f56d517][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-f56d517][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-f56d517][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-f56d517] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-f56d517] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\n","",{version:3,sources:["webpack://./index.scss"],names:[],mappings:"AAeA,6BACC,iBAAkB,CAClB,cAAe,CACf,UAAW,CACX,SAAU,CACV,aAAc,CACd,QAAS,CAET,eAAgB,CAChB,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,SAAU,CACV,eAAgB,CAEhB,eAAgB,CAChB,sDAAuD,CAhBxD,gEAqBG,QAAS,CACT,YAAa,CACb,eAAgB,CAChB,6BA1Be,CA2Bf,8BAA+B,CAC/B,+BAAgC,CAChC,6BAA8B,CA3BjC,mEAkCG,KAAM,CACN,YAAa,CACb,eAAgB,CAChB,6BAvCe,CAwCf,4BAA6B,CAC7B,8BAA+B,CAC/B,6BAA8B,CAxCjC,kEA+CG,UAAW,CACX,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,4BAA6B,CAC7B,+BAAgC,CAChC,6BAA8B,CArDjC,iEA4DG,SAAU,CACV,cAAe,CACf,aAAc,CACd,6BAjEe,CAkEf,4BAA6B,CAC7B,8BAA+B,CAC/B,+BAAgC,CAlEnC,iDAwEE,iBAAkB,CAClB,wCAAyC,CACzC,SAAU,CA1EZ,kDA6EE,kBAAmB,CACnB,uBAAwB,CACxB,SAAU,CA/EZ,4CAoFE,eAAgB,CAChB,eAAgB,CAChB,iBAAkB,CAClB,4BAA6B,CAC7B,kCAAmC,CACnC,6CAA8C,CAzFhD,4CA8FE,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,QAAS,CACT,kBAAmB,CACnB,yCAA0C",sourcesContent:["$scope_version:\"f56d517\"; @import 'variables';\n/**\n* @copyright Copyright (c) 2016, John Molakvoæ \n* @copyright Copyright (c) 2016, Robin Appelman \n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt \n* @copyright Copyright (c) 2016, Erik Pellikka \n* @copyright Copyright (c) 2015, Vincent Petry \n*\n* Bootstrap v3.3.5 (http://getbootstrap.com)\n* Copyright 2011-2015 Twitter, Inc.\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n*/\n\n$arrow-width: 10px;\n\n.vue-tooltip[data-v-#{$scope_version}] {\n\tposition: absolute;\n\tz-index: 100000;\n\tright: auto;\n\tleft: auto;\n\tdisplay: block;\n\tmargin: 0;\n\t/* default to top */\n\tmargin-top: -3px;\n\tpadding: 10px 0;\n\ttext-align: left;\n\ttext-align: start;\n\topacity: 0;\n\tline-height: 1.6;\n\n\tline-break: auto;\n\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t// TOP\n\t&[x-placement^='top'] {\n\t\t.tooltip-arrow {\n\t\t\tbottom: 0;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// BOTTOM\n\t&[x-placement^='bottom'] {\n\t\t.tooltip-arrow {\n\t\t\ttop: 0;\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// RIGHT\n\t&[x-placement^='right'] {\n\t\t.tooltip-arrow {\n\t\t\tright: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width $arrow-width $arrow-width 0;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t\tborder-left-color: transparent;\n\t\t}\n\t}\n\n\t// LEFT\n\t&[x-placement^='left'] {\n\t\t.tooltip-arrow {\n\t\t\tleft: 100%;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent;\n\t\t\tborder-right-color: transparent;\n\t\t\tborder-bottom-color: transparent;\n\t\t}\n\t}\n\n\t// HIDDEN / SHOWN\n\t&[aria-hidden='true'] {\n\t\tvisibility: hidden;\n\t\ttransition: opacity .15s, visibility .15s;\n\t\topacity: 0;\n\t}\n\t&[aria-hidden='false'] {\n\t\tvisibility: visible;\n\t\ttransition: opacity .15s;\n\t\topacity: 1;\n\t}\n\n\t// CONTENT\n\t.tooltip-inner {\n\t\tmax-width: 350px;\n\t\tpadding: 5px 8px;\n\t\ttext-align: center;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t// ARROW\n\t.tooltip-arrow {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: 0;\n\t\tborder-style: solid;\n\t\tborder-color: var(--color-main-background);\n\t}\n}\n"],sourceRoot:""}]),e.a=a},function(t,e){t.exports=n(62062)},function(t,e){t.exports=n(25440)},function(t,e){t.exports=n(38781)},,function(t,e,n){"use strict";var r={name:"Popover",components:{VPopover:n(6).VPopover},mounted:function(){var t=this;this.$watch((function(){return t.$refs.popover.isOpen}),(function(e){e?t.$emit("after-show"):t.$emit("after-hide")}))}},o=n(2),i=n.n(o),a=n(19),s={insert:"head",singleton:!1},c=(i()(a.a,s),a.a.locals,n(3)),l=n(20),u=n.n(l),A=Object(c.a)(r,(function(){var t=this.$createElement,e=this._self._c||t;return e("VPopover",this._g(this._b({ref:"popover",attrs:{"popover-base-class":"popover","popover-wrapper-class":"popover__wrapper","popover-arrow-class":"popover__arrow","popover-inner-class":"popover__inner"}},"VPopover",this.$attrs,!1),this.$listeners),[this._t("trigger"),this._v(" "),e("template",{slot:"popover"},[this._t("default")],2)],2)}),[],!1,null,null,null);"function"==typeof u.a&&u()(A),e.a=A.exports},function(t,e){t.exports=n(69896)},function(t,e){t.exports=n(2892)},function(t,e){t.exports=n(52675)},,,function(t,e){t.exports=n(3643)},function(t,e,n){"use strict";n.r(e);var r=n(11),o=new(n.n(r).a)({data:function(){return{isMobile:!1}},watch:{isMobile:function(t){this.$emit("changed",t)}},created:function(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy:function(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize:function(){this.isMobile=document.documentElement.clientWidth<1024}}});e.default={data:function(){return{isMobile:!1}},mounted:function(){o.$on("changed",this.onIsMobileChanged),this.isMobile=o.isMobile},beforeDestroy:function(){o.$off("changed",this.onIsMobileChanged)},methods:{onIsMobileChanged:function(t){this.isMobile=t}}}},function(t,e){t.exports=n(73607)},function(t,e){t.exports=n(89463)},,function(t,e){t.exports=n(3296)},function(t,e){t.exports=n(34782)},function(t,e){t.exports=n(31062)},function(t,e){t.exports=n(67098)},function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i)()(o.a);a.push([t.i,".mention-bubble--primary .mention-bubble__content[data-v-724f9d58]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-724f9d58]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-724f9d58]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-right:6px;padding-left:2px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-724f9d58]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-724f9d58]{color:inherit;background-size:cover}.mention-bubble__title[data-v-724f9d58]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-724f9d58]::before{content:attr(title)}.mention-bubble__select[data-v-724f9d58]{position:absolute;z-index:-1;left:-1000px}\n","",{version:3,sources:["webpack://./MentionBubble.vue"],names:[],mappings:"AAsGC,mEACC,+BAAgC,CAChC,6CAA8C,CAC9C,0CAGA,eAXsB,CAatB,WAAwC,CACxC,0BAA2B,CAC3B,mBAAoB,CACpB,kBAAmB,CACnB,0CAGA,mBAAoB,CACpB,eAAgB,CAChB,kBAAmB,CACnB,cAAe,CACf,WAzBkB,CA0BlB,wBAAyB,CACzB,gBAAiB,CACjB,iBAAkC,CAClC,gBA3BkB,CA4BlB,kBAAiC,CACjC,6CAA8C,CAC9C,uCAGA,iBAAkB,CAClB,UAjCuD,CAkCvD,WAlCuD,CAmCvD,iBAAsC,CACtC,+CAAgD,CAChD,2BAA4B,CAC5B,0BAA2B,CAC3B,oBAA0D,CAE1D,oDACC,aAAc,CACd,qBAAsB,CACtB,wCAID,eAAgB,CAChB,eAlDkB,CAmDlB,kBAAmB,CACnB,sBAAuB,CAJvB,gDAOC,mBAAoB,CACpB,yCAKD,iBAAkB,CAClB,UAAW,CACX,YAAa",sourcesContent:["$scope_version:\"f56d517\"; @import 'variables';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: $bubble-height / 2;\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: $bubble-avatar-size / 2;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n"],sourceRoot:""}]),e.a=a},function(t,e,n){"use strict";n.d(e,"a",(function(){return r.default})),n.d(e,"b",(function(){return o.default})),n.d(e,"c",(function(){return i.default})),n.d(e,"d",(function(){return a.default})),n.d(e,"e",(function(){return f}));var r=n(74),o=n(75),i=n(35),a=n(59),s=(n(5),n(58),n(57),n(36)),c=n.n(s),l=n(13),u=n(81),A=n(34);function p(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}var f={data:function(){return{hasStatus:!1,userStatus:{status:null,message:null,icon:null}}},methods:{fetchUserStatus:function(t){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var r,o,i,a,s,p,f,d,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=Object(u.getCapabilities)(),Object.prototype.hasOwnProperty.call(r,"user_status")&&r.user_status.enabled){e.next=3;break}return e.abrupt("return");case 3:if(Object(A.getCurrentUser)()){e.next=5;break}return e.abrupt("return");case 5:return e.prev=5,e.next=8,c.a.get(Object(l.generateOcsUrl)("apps/user_status/api/v1",2)+"statuses/".concat(encodeURIComponent(t)));case 8:o=e.sent,i=o.data,a=i.ocs.data,s=a.status,p=a.message,f=a.icon,n.userStatus.status=s,n.userStatus.message=p||"",n.userStatus.icon=f||"",n.hasStatus=!0,e.next=22;break;case 17:if(e.prev=17,e.t0=e.catch(5),404!==e.t0.response.status||0!==(null===(d=e.t0.response.data.ocs)||void 0===d||null===(h=d.data)||void 0===h?void 0:h.length)){e.next=21;break}return e.abrupt("return");case 21:console.error(e.t0);case 22:case"end":return e.stop()}}),e,null,[[5,17]])})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(t){p(i,r,o,a,s,"next",t)}function s(t){p(i,r,o,a,s,"throw",t)}a(void 0)}))})()}}}},function(t,e){t.exports=n(2259)},,function(t,e){t.exports=n(40321)},,function(t,e){t.exports=n(28706)},,function(t,e){t.exports=n(23418)},function(t,e,n){"use strict";var r=n(0),o=n.n(r),i=n(1),a=n.n(i)()(o.a);a.push([t.i,"\nbutton.menuitem[data-v-54983729] {\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-54983729] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-54983729]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-54983729] {\n\tcursor: default;\n}\n.menuitem.active[data-v-54983729] {\n\tbox-shadow: inset 2px 0 var(--color-primary);\n\tborder-radius: 0;\n}\n","",{version:3,sources:["webpack://./PopoverMenuItem.vue"],names:[],mappings:";AAoLA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,4CAAA;CACA,gBAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 John Molakvoæ \n -\n - @author John Molakvoæ \n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\n\n\n\n","\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedFile.vue?vue&type=template&id=3dc2f712&scoped=true\"\nimport script from \"./RecommendedFile.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedFile.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dc2f712\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"recommendation\",attrs:{\"tabindex\":\"0\",\"aria-describedby\":`recommendation-description-${_vm.id}`,\"title\":_vm.path},on:{\"click\":function($event){$event.preventDefault();return _vm.navigate.apply(null, arguments)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.navigate.apply(null, arguments)}}},[(_vm.isFolder)?_c('FolderIcon',{staticClass:\"thumbnail\"}):_c('div',{staticClass:\"thumbnail\",style:({ 'background-image': 'url(' + _vm.previewUrl + ')' })}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"file-name\"},[(_vm.extension)?[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.nameWithoutExtension))]),(_vm.extension)?_c('span',{staticClass:\"extension\"},[_vm._v(\".\"+_vm._s(_vm.extension))]):_vm._e()]:[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.name))])]],2),_vm._v(\" \"),_c('div',{staticClass:\"reason\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.reason)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":`recommendation-description-${_vm.id}`}},[_vm._v(_vm._s(_vm.t('recommendations', 'Path name {path}', {path: _vm.path})))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&id=4557f1a7&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=style&index=0&id=4557f1a7&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=4557f1a7&scoped=true\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=js\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=js\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&id=4557f1a7&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4557f1a7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('DashboardWidget',{attrs:{\"id\":\"recommendations\",\"items\":_vm.recommendedFiles},scopedSlots:_vm._u([{key:\"default\",fn:function({ item }){return [_c('RecommendedFile',{key:item.id,attrs:{\"id\":item.id,\"extension\":item.extension,\"mime-type\":item.mimeType,\"name\":item.name,\"directory\":item.directory,\"reason\":item.reason,\"has-preview\":item.hasPreview}})]}},{key:\"empty-content\",fn:function(){return [_c('EmptyContent',{attrs:{\"id\":\"recommendations--empty-content\",\"icon\":\"icon-files-dark\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('recommendations', 'No recommendations yet'))+\"\\n\\t\\t\\t\")]},proxy:true}])})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","import valid from \"semver/functions/valid.js\";\nimport major from \"semver/functions/major.js\";\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction subscribe(name, handler) {\n getBus().subscribe(name, handler);\n}\nfunction unsubscribe(name, handler) {\n getBus().unsubscribe(name, handler);\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\nexport {\n ProxyBus,\n SimpleBus,\n emit,\n subscribe,\n unsubscribe\n};\n","import { subscribe, emit } from \"@nextcloud/event-bus\";\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nlet token;\nconst observers = [];\nfunction getRequestToken() {\n if (token === void 0) {\n token = document.head.dataset.requesttoken ?? null;\n }\n return token;\n}\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n}\nsubscribe(\"csrf-token-update\", (e) => {\n token = e.token;\n observers.forEach((observer) => {\n try {\n observer(token);\n } catch (error) {\n console.error(\"Error updating CSRF token observer\", error);\n }\n });\n});\nfunction getCSPNonce() {\n const meta = document?.querySelector('meta[name=\"csp-nonce\"]');\n if (!meta) {\n const token2 = getRequestToken();\n return token2 ? btoa(token2) : void 0;\n }\n return meta.nonce;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nconst browserStorage = getBuilder(\"public\").persist().build();\nclass GuestUser {\n _displayName;\n uid;\n isAdmin;\n constructor() {\n if (!browserStorage.getItem(\"guestUid\")) {\n browserStorage.setItem(\"guestUid\", randomUUID());\n }\n this._displayName = browserStorage.getItem(\"guestNickname\") || \"\";\n this.uid = browserStorage.getItem(\"guestUid\") || randomUUID();\n this.isAdmin = false;\n subscribe(\"user:info:changed\", (guest) => {\n this._displayName = guest.displayName;\n browserStorage.setItem(\"guestNickname\", guest.displayName || \"\");\n });\n }\n get displayName() {\n return this._displayName;\n }\n set displayName(displayName) {\n this._displayName = displayName;\n browserStorage.setItem(\"guestNickname\", displayName);\n emit(\"user:info:changed\", this);\n }\n}\nlet currentUser$1;\nfunction getGuestUser() {\n if (!currentUser$1) {\n currentUser$1 = new GuestUser();\n }\n return currentUser$1;\n}\nfunction getGuestNickname() {\n return getGuestUser()?.displayName || null;\n}\nfunction setGuestNickname(nickname) {\n if (!nickname || nickname.trim().length === 0) {\n throw new Error(\"Nickname cannot be empty\");\n }\n getGuestUser().displayName = nickname;\n}\nfunction randomUUID() {\n if (globalThis.crypto?.randomUUID) {\n return globalThis.crypto.randomUUID();\n }\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n}\nlet currentUser;\nfunction getAttribute(el, attribute) {\n if (el) {\n return el.getAttribute(attribute);\n }\n return null;\n}\nfunction getCurrentUser() {\n if (currentUser !== void 0) {\n return currentUser;\n }\n const head = document?.getElementsByTagName(\"head\")[0];\n if (!head) {\n return null;\n }\n const uid = getAttribute(head, \"data-user\");\n if (uid === null) {\n currentUser = null;\n return currentUser;\n }\n currentUser = {\n uid,\n displayName: getAttribute(head, \"data-user-displayname\"),\n isAdmin: !!window._oc_isadmin\n };\n return currentUser;\n}\nexport {\n getCSPNonce,\n getCurrentUser,\n getGuestNickname,\n getGuestUser,\n getRequestToken,\n onRequestTokenUpdate,\n setGuestNickname\n};\n//# sourceMappingURL=index.mjs.map\n","/*\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nexport default class ScopedStorage {\n static GLOBAL_SCOPE_VOLATILE = 'nextcloud_vol';\n static GLOBAL_SCOPE_PERSISTENT = 'nextcloud_per';\n scope;\n wrapped;\n constructor(scope, wrapped, persistent) {\n this.scope = `${persistent ? ScopedStorage.GLOBAL_SCOPE_PERSISTENT : ScopedStorage.GLOBAL_SCOPE_VOLATILE}_${btoa(scope)}_`;\n this.wrapped = wrapped;\n }\n scopeKey(key) {\n return `${this.scope}${key}`;\n }\n setItem(key, value) {\n this.wrapped.setItem(this.scopeKey(key), value);\n }\n getItem(key) {\n return this.wrapped.getItem(this.scopeKey(key));\n }\n removeItem(key) {\n this.wrapped.removeItem(this.scopeKey(key));\n }\n clear() {\n Object.keys(this.wrapped)\n .filter((key) => key.startsWith(this.scope))\n .map(this.wrapped.removeItem.bind(this.wrapped));\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nimport ScopedStorage from \"./ScopedStorage.js\";\nexport default class StorageBuilder {\n appId;\n persisted = false;\n clearedOnLogout = false;\n constructor(appId) {\n this.appId = appId;\n }\n persist(persist = true) {\n this.persisted = persist;\n return this;\n }\n clearOnLogout(clear = true) {\n this.clearedOnLogout = clear;\n return this;\n }\n build() {\n return new ScopedStorage(this.appId, this.persisted ? window.localStorage : window.sessionStorage, !this.clearedOnLogout);\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nimport ScopedStorage from \"./ScopedStorage.js\";\nimport StorageBuilder from \"./StorageBuilder.js\";\n/**\n * Get the storage builder for an app\n *\n * @param appId App ID to scope storage\n */\nexport function getBuilder(appId) {\n return new StorageBuilder(appId);\n}\n/**\n * Clear values from storage\n *\n * @param storage The storage to clear\n * @param pred Callback to check if value should be cleared\n */\nfunction clearStorage(storage, pred) {\n Object.keys(storage)\n .filter((k) => pred ? pred(k) : true)\n .map(storage.removeItem.bind(storage));\n}\n/**\n * Clear all values from all storages\n */\nexport function clearAll() {\n const storages = [\n window.sessionStorage,\n window.localStorage,\n ];\n storages.map((s) => clearStorage(s));\n}\n/**\n * Clear ony non persistent values\n */\nexport function clearNonPersistent() {\n const storages = [\n window.sessionStorage,\n window.localStorage,\n ];\n storages.map((s) => clearStorage(s, (k) => !k.startsWith(ScopedStorage.GLOBAL_SCOPE_PERSISTENT)));\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters, config) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.12.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { getRequestToken, onRequestTokenUpdate } from \"@nextcloud/auth\";\nimport Axios, { isAxiosError } from \"axios\";\nimport { isAxiosError as isAxiosError2, isCancel } from \"axios\";\nimport { generateUrl } from \"@nextcloud/router\";\n/*!\n * SPDX-License-Identifier: GPL-3.0-or-later\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n */\nconst client = Axios.create({\n headers: {\n requesttoken: getRequestToken() ?? \"\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n }\n});\nonRequestTokenUpdate((token) => {\n client.defaults.headers.requesttoken = token;\n});\nconst cancelableClient = Object.assign(client, {\n CancelToken: Axios.CancelToken,\n isCancel: Axios.isCancel\n});\nconst RETRY_KEY = Symbol(\"csrf-retry\");\nfunction onCsrfTokenError(axios) {\n return async (error) => {\n if (!isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n if (config && !config[RETRY_KEY] && response?.status === 412 && response?.data?.message === \"CSRF check failed\") {\n console.warn(`Request to ${responseURL} failed because of a CSRF mismatch. Fetching a new token`);\n const { data: { token } } = await axios.get(generateUrl(\"/csrftoken\"));\n console.debug(`New request token ${token} fetched`);\n axios.defaults.headers.requesttoken = token;\n return axios({\n ...config,\n headers: {\n ...config.headers,\n requesttoken: token\n },\n [RETRY_KEY]: true\n });\n }\n throw error;\n };\n}\nconst RETRY_DELAY_KEY = Symbol(\"retryDelay\");\nfunction onMaintenanceModeError(axios) {\n return async (error) => {\n if (!isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n const headers = response?.headers;\n let retryDelay = typeof config?.[RETRY_DELAY_KEY] === \"number\" ? config?.[RETRY_DELAY_KEY] : 1;\n if (status === 503 && headers?.[\"x-nextcloud-maintenance-mode\"] === \"1\" && config?.retryIfMaintenanceMode) {\n retryDelay *= 2;\n if (retryDelay > 32) {\n console.error(\"Retry delay exceeded one minute, giving up.\", { responseURL });\n throw error;\n }\n console.warn(`Request to ${responseURL} failed because of maintenance mode. Retrying in ${retryDelay}s`);\n await new Promise((resolve) => {\n setTimeout(resolve, retryDelay * 1e3);\n });\n return axios({\n ...config,\n [RETRY_DELAY_KEY]: retryDelay\n });\n }\n throw error;\n };\n}\nasync function onNotLoggedInError(error) {\n if (isAxiosError(error)) {\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n if (status === 401 && response?.data?.message === \"Current user is not logged in\" && config?.reloadExpiredSession && window?.location) {\n console.error(`Request to ${responseURL} failed because the user session expired. Reloading the page …`);\n window.location.reload();\n }\n }\n throw error;\n}\ncancelableClient.interceptors.response.use((r) => r, onCsrfTokenError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onMaintenanceModeError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onNotLoggedInError);\nexport {\n cancelableClient as default,\n isAxiosError2 as isAxiosError,\n isCancel\n};\n//# sourceMappingURL=index.mjs.map\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport const fetchRecommendedFiles = (always) => {\n\tconst url = generateOcsUrl('apps/recommendations/api/v1/recommendations' + (always ? '/always' : ''))\n\n\treturn Axios.get(url)\n\t\t.then(resp => resp.data.ocs.data)\n}\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\nimport { fetchRecommendedFiles } from '../service/RecommendationService.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tstate: {\n\t\tenabled: true,\n\t\tloadedRecommendations: false,\n\t\tloading: false,\n\t\trecommendedFiles: [],\n\t},\n\tmutations: {\n\t\tenabled(state, val) {\n\t\t\tstate.enabled = val\n\t\t},\n\t\tloadedRecommendations(state, val) {\n\t\t\tstate.loadedRecommendations = val\n\t\t},\n\t\tloading(state, val) {\n\t\t\tstate.loading = val\n\t\t},\n\t\trecommendedFiles(state, val) {\n\t\t\tstate.recommendedFiles = val\n\t\t},\n\t},\n\tactions: {\n\t\t/**\n\t\t * Toggle the recommendations and fetch recommended files if required\n\t\t *\n\t\t * @async\n\t\t * @param {object} context the store context\n\t\t * @param {boolean} enabled recommendations status\n\t\t */\n\t\tasync enabled(context, enabled) {\n\t\t\tcontext.commit('enabled', enabled)\n\t\t\tawait axios.put(generateUrl('apps/recommendations/settings/enabled'), {\n\t\t\t\tvalue: enabled.toString(),\n\t\t\t})\n\t\t\tif (enabled) {\n\t\t\t\tcontext.dispatch('fetchRecommendations')\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch recommendations and current enabled setting\n\t\t *\n\t\t * @async\n\t\t * @param {object} context the store context\n\t\t * @param {boolean} [always] set to true to always get recommendations regardless of enabled setting\n\t\t */\n\t\tasync fetchRecommendations(context, always) {\n\t\t\tif (context.state.loadedRecommendations || context.state.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.commit('loading', true)\n\t\t\tconst fetched = await fetchRecommendedFiles(always)\n\n\t\t\tcontext.commit('enabled', fetched.enabled)\n\t\t\tif (fetched.recommendations) {\n\t\t\t\tcontext.commit('recommendedFiles', fetched.recommendations)\n\t\t\t\tthis.commit('loadedRecommendations', true)\n\t\t\t}\n\t\t\tthis.commit('loading', false)\n\t\t},\n\t},\n})\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue'\n\nimport Dashboard from './components/Dashboard.vue'\nimport store from './store/store.js'\n\n// Load recommendations\nstore.dispatch('fetchRecommendations', true)\n\ndocument.addEventListener('DOMContentLoaded', function() {\n\n\tOCA.Dashboard.register('recommendations', (el) => {\n\t\tconst View = Vue.extend(Dashboard)\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst vm = new View({\n\t\t\tpropsData: {},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n\n})\n"],"names":["Object","defineProperty","exports","value","enumerable","get","_requesttoken","getRequestToken","onRequestTokenUpdate","_user","getCurrentUser","token","observer","observers","push","_eventBus","tokenElement","document","getElementsByTagName","getAttribute","subscribe","e","forEach","console","error","uid","displayName","isAdmin","uidElement","displayNameElement","OC","isUserAdmin","obj","_getRequestToken","_axios","__esModule","default","_auth","client","create","headers","requesttoken","cancelableClient","assign","CancelToken","isCancel","defaults","_default","getBuilder","appId","_storagebuilder","clearAll","window","sessionStorage","localStorage","map","s","clearStorage","clearNonPersistent","k","startsWith","_scopedstorage","GLOBAL_SCOPE_PERSISTENT","_interopRequireDefault","storage","pred","keys","filter","removeItem","bind","_defineProperties","target","props","i","length","descriptor","configurable","writable","key","_defineProperty","ScopedStorage","scope","wrapped","persistent","instance","Constructor","TypeError","_classCallCheck","this","concat","GLOBAL_SCOPE_VOLATILE","btoa","protoProps","staticProps","setItem","scopeKey","getItem","_this","prototype","StorageBuilder","_persist","arguments","undefined","persisted","clear","clearedOnLogout","module","it","String","isObject","toIndexedObject","toLength","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","O","index","includes","indexOf","IndexedObject","toObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","specificCreate","result","self","boundFunction","call","some","every","find","findIndex","fails","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","isArray","originalArray","C","Array","aFunction","fn","a","b","c","apply","toString","slice","has","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","f","getOwnPropertyDescriptor","MATCH","regexp","DESCRIPTORS","createPropertyDescriptor","object","bitmap","toPrimitive","propertyKey","global","EXISTS","createElement","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","exec","path","variable","namespace","method","check","Math","globalThis","g","Function","hasOwnProperty","classof","split","propertyIsEnumerable","store","functionToString","inspectSource","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","enforce","getterFor","state","type","arg","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isRegExp","getOwnPropertySymbols","Symbol","test","IE8_DOM_DEFINE","anObject","nativeDefineProperty","P","Attributes","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","internalObjectKeys","getOwnPropertyNames","names","enumBugKeys","nativePropertyIsEnumerable","NASHORN_BUG","V","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","join","shared","SHARED","IS_PURE","version","mode","copyright","toInteger","max","min","integer","requireObjectCoercible","ceil","floor","argument","isNaN","input","PREFERRED_STRING","val","valueOf","id","postfix","random","NATIVE_SYMBOL","iterator","match","userAgent","process","versions","v8","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","name","$","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","proto","len","E","A","n","$filter","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","$map","nativeKeys","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","searchString","search","commonjsGlobal","createCommonjsModule","global$1","descriptors","$propertyIsEnumerable","getOwnPropertyDescriptor$2","objectPropertyIsEnumerable","classofRaw","indexedObject","has$1","document$1","documentCreateElement","ie8DomDefine","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","$defineProperty","objectDefineProperty","sharedStore","WeakMap$1","nativeWeakMap","keys$2","hiddenKeys$1","OBJECT_ALREADY_INITIALIZED","facade","internalState","aFunction$1","min$2","min$1","createMethod$3","objectKeysInternal","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","isForced_1","getOwnPropertyDescriptor$1","_export","activeXDocument","objectSetPrototypeOf","setPrototypeOf","setter","CORRECT_SETTER","aPossiblePrototype","__proto__","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","objectKeys","objectDefineProperties","defineProperties","Properties","html","PROTOTYPE","SCRIPT","IE_PROTO$1","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","JS","write","close","temp","parentWindow","NullProtoObjectViaActiveX","style","display","appendChild","src","contentWindow","open","F","objectCreate","whitespaces","whitespace","ltrim","RegExp","rtrim","createMethod$2","stringTrim","start","end","trim","getOwnPropertyNames$1","defineProperty$3","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","first","third","radix","maxCode","digits","code","charCodeAt","NaN","parseInt","NumberWrapper","keys$1","j","constants","SEMVER_SPEC_VERSION","MAX_LENGTH","Number","MAX_SAFE_COMPONENT_LENGTH","engineIsNode","engineUserAgent","process$1","engineV8Version","nativeSymbol","useSymbolAsUid","Symbol$1","MATCH$1","isRegexp","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","RE","UNSUPPORTED_Y$3","re","lastIndex","BROKEN_CARET","regexpStickyHelpers","UNSUPPORTED_Y","SPECIES$4","setSpecies","CONSTRUCTOR_NAME","defineProperty$2","NativeRegExp","RegExpPrototype$1","re1","re2","CORRECT_NEW","UNSUPPORTED_Y$2","RegExpWrapper","pattern","flags","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y$1","NPCG_INCLUDED","str","reCopy","charsAdded","strCopy","regexpExec","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","R","p","rf","SPECIES$3","SPECIES$2","MAX_SAFE_INTEGER$1","_typeof","debug_1","env","NODE_DEBUG","_console","_len","args","_key","re_1","t","createToken","isGlobal","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","SPECIES$1","REPLACE_SUPPORTS_NAMED_GROUPS","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","fixRegexpWellKnownSymbolLogic","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","arg2","forceStringMethod","done","stringMethod","regexMethod","createMethod$1","CONVERT_TO_STRING","pos","second","S","position","size","charAt","stringMultibyte","codeAt","charAt$1","advanceStringIndex","regexpExecAbstract","nativeMatch","maybeCallNative","matcher","res","rx","fullUnicode","matchStr","$trim","stringTrimForced","functionBindContext","IS_FILTER_OUT","arrayIteration","filterOut","HAS_SPECIES_SUPPORT$1","arrayPush","MAX_UINT32","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","defaultConstructor","speciesConstructor","unicodeMatching","q","z","arrayMethodIsStrict","nativeJoin","ES3_STRINGS","STRICT_METHOD$1","opts","parseOptions_1","loose","reduce","numeric","compareIdentifiers$1","anum","bnum","identifiers","MAX_LENGTH$1","re$1","t$1","compareIdentifiers","SemVer","includePrerelease","m","LOOSE","FULL","raw","major","minor","patch","prerelease","num","build","format","other","compareMain","comparePre","release","identifier","inc","Error","semver","parse_1","er","valid_1","v","major_1","packageJson$1","ProxyBus","bus","getVersion","warn","handler","unsubscribe","emit","event","UNSCOPABLES","ArrayPrototype$1","IteratorPrototype$2","PrototypeOfArrayIteratorPrototype","arrayIterator","addToUnscopables","iterators","correctPrototypeGetter","getPrototypeOf","IE_PROTO","ObjectPrototype","objectGetPrototypeOf","ITERATOR$5","BUGGY_SAFARI_ITERATORS$1","NEW_ITERATOR_PROTOTYPE","iteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","defineProperty$1","TO_STRING_TAG$3","setToStringTag","TAG","IteratorPrototype$1","returnThis$1","ITERATOR$4","KEYS","VALUES","ENTRIES","returnThis","defineIterator","Iterable","NAME","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","TO_STRING_TAG","createIteratorConstructor","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","ARRAY_ITERATOR","setInternalState$2","getInternalState$1","es_array_iterator","iterated","kind","Arguments","freezing","isExtensible","preventExtensions","internalMetadata","METADATA","setMetadata","objectID","weakData","meta","REQUIRED","fastKey","getWeakData","onFreeze","ITERATOR$3","ArrayPrototype","toStringTagSupport","TO_STRING_TAG$1","CORRECT_ARGUMENTS","tag","tryGet","callee","ITERATOR$2","iteratorClose","returnMethod","Result","stopped","iterate","iterable","unboundFunction","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","getIteratorMethod","anInstance","ITERATOR$1","SAFE_CLOSING","called","iteratorWithReturn","from","redefineAll","setInternalState$1","internalStateGetterFor","collectionStrong","getConstructor","wrapper","ADDER","last","define","previous","entry","getEntry","removed","prev","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","SKIP_CLOSING","ITERATION_SUPPORT","checkCorrectnessOfIteration","BUGGY_ZERO","$instance","collection","init","objectToString","STRING_ITERATOR","setInternalState","point","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","ITERATOR","ArrayValues","COLLECTION_NAME$1","Collection$1","CollectionPrototype$1","$forEach","arrayForEach","COLLECTION_NAME","Collection","CollectionPrototype","packageJson","SimpleBus","handlers","Map","h","_nc_event_bus","getGettextBuilder","GettextBuilder","_nodeGettext","_","_createClass","translations","debug","language","locale","setLanguage","getLanguage","GettextWrapper","gt","sourceLocale","addTranslations","setLocale","translated","vars","r","original","placeholders","subtitudePlaceholders","gettext","singular","plural","count","ngettext","getLocale","documentElement","dataset","getCanonicalLocale","getDayNames","dayNames","getDayNamesMin","dayNamesMin","getDayNamesShort","dayNamesShort","getFirstDay","firstDay","lang","getMonthNames","monthNames","getMonthNamesShort","monthNamesShort","translate","app","text","L10N","translatePlural","textSingular","textPlural","getRootUrl","generateFilePath","imagePath","generateUrl","generateOcsUrl","generateRemoteUrl","linkTo","file","service","location","protocol","host","linkToRemoteBase","url","params","allOptions","escape","noRewrite","_build","encodeURIComponent","config","modRewriteWorking","isCore","coreApps","link","substring","appswebroots","encodeURI","webroot","o","l","d","toStringTag","return","unescape","JSON","stringify","sources","sourceRoot","mixins","disabled","computed","isFocusable","insert","singleton","locals","u","$createElement","_self","_c","staticClass","class","focusable","attrs","ariaLabel","on","click","onClick","isIconUrl","icon","backgroundImage","_t","_v","title","_s","domProps","textContent","isLongText","_e","all","atob","querySelector","HTMLIFrameElement","contentDocument","head","base","css","media","sourceMap","references","updater","attributes","nonce","nc","setAttribute","styleSheet","cssText","createTextNode","childNodes","removeChild","insertBefore","removeAttribute","firstChild","parentNode","splice","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","before","$slots","util","$destroy","$el","remove","beforeUpdate","getText","$parent","closeAfterClick","URL","$emit","closeMenu","mappings","sourcesContent","hash","needQuotes","detectLocale","Actions","Activities","Choose","Close","Custom","Flags","Next","Objects","Previous","Search","Settings","Symbols","Submit","pluralId","msgid","msgid_plural","msgstr","addTranslation","VTooltip","defaultTemplate","defaultHtml","components","VPopover","mounted","$watch","$refs","popover","isOpen","_g","_b","ref","$attrs","$listeners","slot","substr","getOwnPropertyDescriptors","directives","tooltip","Popover","VNodes","vnodes","forceMenu","menuTitle","primary","defaultIcon","placement","boundariesElement","Element","container","actions","opened","focusIndex","randomId","children","$children","hasMultipleActions","isValidSingleAction","firstActionElement","firstActionVNode","firstAction","firstActionBinding","componentOptions","is","href","$props","to","exact","firstActionEvent","listeners","firstActionEventBinding","firstActionIconSlot","firstActionClass","iconSlotIsPopulated","watch","beforeMount","initActions","openMenu","menuButton","focus","onOpen","$nextTick","focusFirstAction","onMouseFocusAction","activeElement","closest","menu","querySelectorAll","focusAction","removeCurrentActive","classList","focusPreviousAction","preventIfEvent","focusNextAction","focusLastAction","preventDefault","stopPropagation","execFirstAction","onFocus","onBlur","B","y","rawName","expression","modifiers","auto","rel","_d","blur","hidden","delay","show","hide","tabindex","keydown","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","mousemove","isMobile","created","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","clientWidth","$on","onIsMobileChanged","$off","Promise","resolve","then","hasStatus","userStatus","status","message","fetchUserStatus","regeneratorRuntime","mark","wrap","getCapabilities","user_status","enabled","abrupt","sent","ocs","t0","catch","response","required","label","avatarUrl","getAvatarUrl","mentionText","user","contenteditable","role","userData","renderContent","flat","defaultProtocol","className","genSelectTemplate","parseContent","renderComponentHtml","extend","propsData","body","$mount","innerHTML","excludeClickOutsideClasses","clickOutsideMiddleware","hasNodeOrAnyParentClass","contains","parentElement","isFullscreen","_isFullscreen","_onResize","outerHeight","screen","height","item","validator","round","iconIsUrl","action","PopoverMenuItem","download","longtext","active","submit","placeholder","model","checked","_i","change","$set","_q","composing","for","_l","persist","ClickOutside","directive","PopoverMenu","iconClass","showUserStatus","showUserStatusCompact","preloadedUserStatus","isGuest","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","statusColor","menuPosition","menuContainer","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuLoading","contactsMenuActions","contactsMenuOpenState","canDisplayUserStatus","showUserStatusIconOnAvatar","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","shouldShowPlaceholder","avatarStyle","width","lineHeight","fontSize","backgroundColor","initials","fromCodePoint","codePointAt","toUpperCase","hyperlink","loadAvatarUrl","handleUserStatusUpdated","beforeDestroyed","userId","toggleMenu","fetchContactsMenu","post","topAction","updateImageIfValid","avatarUrlGenerator","oc_userconfig","avatar","Image","onload","onerror","srcset","x","M","I","w","T","alt","xmlns","viewBox","fill","stroke","D","desc","linkify","newObj","_interopRequireWildcard","tokenize","Options","escapeText","escapeAttr","attributesToString","attr","linkifyStr","tokens","nl2br","isLink","_opts$resolve","formatted","formattedHref","tagName","scanner","parser","inherits","_class","run","filtered","TOKENS","State","_state","_multi","MULTI_TOKENS","_text","makeState","tokenClass","TokenState","S_START","S_PROTOCOL","S_MAILTO","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","MAILTOEMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","NL","PROTOCOL","MAILTO","SLASH","TLD","DOMAIN","LOCALHOST","NUM","DOT","COLON","qsAccepting","AT","PLUS","POUND","UNDERSCORE","SYM","AMPERSAND","qsNonAccepting","QUERY","PUNCTUATION","CLOSEBRACE","CLOSEBRACKET","CLOSEANGLEBRACKET","CLOSEPAREN","OPENBRACE","OPENBRACKET","OPENANGLEBRACKET","OPENPAREN","localpartAccepting","cursor","multis","textTokens","secondState","nextState","multiLength","latestAccepting","sinceAccepts","accepts","TEXT","MULTI","tlds","NUMBERS","ALPHANUM","WHITESPACE","domainStates","CharacterState","S_NUM","S_DOMAIN_HYPHEN","S_WS","WS","newStates","stateify","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","pop","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","defaultTransition","lowerStr","tokenLength","TOKEN","BaseState","tClass","symbol","jump","character","charOrRegExp","endToken","defaultToken","createTokenClass","Base","_createTokenClass","MultiToken","toHref","hasProtocol","hasSlashSlash","TextToken","inheritsToken","child","extended","events","noop","formatHref","validate","ignoreTags","linkAttributes","linkClass","ignoredTags","arr","getObject","operator","optionValue","option","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","err","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","reject","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","accidentalStrictMode","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Cancel","onCanceled","requestData","requestHeaders","responseType","cancelToken","signal","isFormData","request","XMLHttpRequest","auth","username","password","Authorization","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","setTimeout","onabort","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancel","abort","aborted","send","Axios","mergeConfig","axios","createInstance","defaultConfig","instanceConfig","VERSION","promises","spread","isAxiosError","__CANCEL__","executor","resolvePromise","promise","_listeners","onfulfilled","_resolve","reason","throwIfRequested","listener","InterceptorManager","dispatchRequest","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","shift","newConfig","onFulfilled","onRejected","getUri","use","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","merge","adapter","transformResponse","toJSON","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","getMergedValue","isPlainObject","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","rawValue","encoder","isString","parse","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","encode","serializedParams","parts","isDate","toISOString","hashmarkIndex","relativeURL","expires","secure","cookie","isNumber","Date","toGMTString","decodeURIComponent","now","payload","originURL","msie","navigator","urlParsingNode","resolveURL","hostname","port","pathname","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","callback","thing","deprecatedWarnings","formatMessage","opt","schema","allowUnknown","isFunction","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","stripBOM","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","base64","ieee754","customInspectSymbol","Buffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","fromString","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","numberIsNaN","fromObject","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","typedArraySupport","poolSize","alloc","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","toLocaleString","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","sym","getMessage","super","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","msg","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","dst","alphabet","table","i16","BufferBigIntNotDefined","charenc","utf8","stringToBytes","bin","bytesToString","base64map","crypt","rotl","rotr","endian","randomBytes","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","triplet","imod4","___CSS_LOADER_EXPORT___","cssWithMappingToString","needLayer","modules","dedupe","supports","layer","alreadyImportedModules","cssMapping","sourceMapping","matchHtmlRegExp","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","log","LN2","isSlowBuffer","HASH_UNDEFINED","INFINITY","funcTag","genTag","symbolTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","freeGlobal","freeSelf","root","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","funcToString","reIsNative","getNative","nativeCreate","symbolProto","symbolToString","Hash","ListCache","MapCache","assocIndexOf","baseGet","isSymbol","isKey","stringToPath","toKey","baseIsNative","func","isHostObject","toSource","getMapData","__data__","getValue","memoize","baseToString","quote","resolver","memoized","cache","Cache","isObjectLike","defaultValue","DataView","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Set","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","predicate","resIndex","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","eq","objValue","baseCreate","baseFor","createBaseFor","keysFunc","symbolsFunc","getRawTag","symToStringTag","baseGetTag","baseIsEqualDeep","baseIsEqual","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isMasked","isLength","typedArrayTags","isPrototype","nativeKeysIn","isProto","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","srcValue","newValue","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","stacked","isCommon","isTyped","identity","overRest","setToString","constant","baseSetToString","iteratee","arrayBuffer","freeExports","nodeType","freeModule","isDeep","cloneArrayBuffer","typedArray","isNew","baseRest","isIterateeCall","assigner","guard","fromRight","arraySome","cacheHas","isPartial","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","convert","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","isKeyable","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","reIsUint","isArrayLike","freeProcess","nodeUtil","types","require","binding","transform","nativeMax","otherArgs","shortOut","nativeNow","lastCalled","stamp","pairs","LARGE_ARRAY_SIZE","baseIsArguments","stubFalse","objectCtorString","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseKeysIn","createAssigner","copyObject","md5","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","plurals","Gettext","catalogs","eventName","off","eventData","setTextDomain","dnpgettext","dgettext","msgidPlural","dngettext","pgettext","msgctxt","dpgettext","npgettext","translation","defaultTranslation","_getTranslation","pluralsFunc","getLanguageCode","getComment","comments","textdomain","setlocale","addTextdomain","ach","examples","sample","nplurals","pluralsText","af","ak","am","an","ar","arn","ast","ay","az","be","bg","bn","bo","br","brx","bs","ca","cgg","cs","csb","cy","da","de","doi","dz","en","eo","es","et","eu","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gu","gun","ha","he","hne","hr","hu","hy","ja","jbo","jv","ka","kk","km","kn","ko","ku","kw","ky","lb","ln","lt","lv","mai","mfe","mg","mi","mk","ml","mn","mni","mnk","mr","ms","mt","my","nah","nap","nb","ne","nl","nn","no","nso","oc","or","pa","pap","pl","pms","ps","pt","rm","ro","ru","rw","sah","sat","sco","sd","se","si","sk","sl","so","son","sq","sr","su","sv","sw","ta","te","tg","th","ti","tk","tr","tt","ug","uk","ur","uz","vi","wa","wo","yo","zh","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","argv","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","safeRe","parseOptions","compareBuild","identifierBase","throwErrors","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","rcompareIdentifiers","looseOption","freeze","emptyOpts","LETTERDASHNUMBER","safeRegexReplacements","safe","makeSafeRegex","COERCEPLAIN","COERCEFULL","nonNative","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","allowable_tags","tag_replacement","striptags_internal","init_context","tag_set","parse_allowable_tags","tag_buffer","depth","in_quote_char","idx","char","normalize_tag","init_streaming_mode","stylesInDOM","getIndexByIdentifier","modulesToDom","idCountMap","indexByIdentifier","addElementStyle","byIndex","api","domAPI","update","lastIdentifiers","newList","newLastIdentifiers","_index","memo","styleTarget","getTarget","element","setAttributes","styleElement","insertStyleElement","styleTagTransform","removeStyleElement","msMaxTouchPoints","middleware","isActive","detectIframe","capture","srcTarget","composedPath","oldValue","unbind","install","toPropertyKey","isBrowser","timeoutDuration","longerTimeoutBrowsers","debounce","scheduled","functionToCheck","getStyleComputedProperty","property","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","getScrollParent","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","createClass","_extends","getClientRect","offsets","right","left","bottom","top","getBoundingClientRect","rect","scrollTop","scrollLeft","sizes","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","padding","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","area","_ref","sort","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","marginRight","getOppositePlacement","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","cur","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","prefix","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListeners","isNumeric","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","priority","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","classCallCheck","requestAnimationFrame","jquery","Utils","PopperUtils","initCompat","ua","rv","edge","getInternetExplorerVersion","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","originalRender","existing","__vue_script__","emitOnMount","ignoreWidth","ignoreHeight","_w","_h","emitSize","_resizeObject","addResizeHandlers","removeResizeHandlers","compareAndNotify","__vue_render__","_withStripped","__vue_component__","Vue","component","GlobalVue","SVGAnimatedString","convertToArray","addClasses","classes","newClasses","baseVal","newClass","SVGElement","removeClasses","supportsPassive","ownKeys$2","enumerableOnly","symbols","_objectSpread$2","DEFAULT_OPTIONS","trigger","openTooltips","Tooltip","_reference","_options","evt","relatedreference","toElement","relatedTarget","_tooltipNode","evt2","relatedreference2","_scheduleHide","_isOpen","_init","_show","_hide","_dispose","_classes","_setContent","classesUpdated","defaultClass","setClasses","getOptions","needPopperUpdate","needRestart","dispose","popperInstance","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","_this2","tooltipGenerator","tooltipNode","ariaId","autoHide","_this3","asyncContent","_applyContent","_this4","allowHtml","rootNode","titleNode","innerSelector","loadingClass","loadingContent","asyncResult","innerText","_disposeTimer","updateClasses","_ensureShown","_this5","_create","_findContainer","_append","popperOptions","arrowSelector","_this6","_noLongerOpen","disposeTime","disposeTimeout","_removeTooltipNode","_this7","_events","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","_setTooltipNodeEvent","ownKeys$1","_objectSpread$1","_onDocumentTouch","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","getPlacement","getContent","createTooltip","_tooltip","_vueEl","targetClasses","_tooltipTargetClasses","destroyTooltip","_tooltipOldShow","setContent","setOptions","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","screenY","screenX","vclosepopover","_objectSpread","getDefault","isIOS","MSStream","openPopovers","ResizeObserver","popoverClass","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","cssClass","popoverId","oldVal","popoverNode","$_findContainer","$_removeEventListeners","$_addEventListeners","$_updatePopper","deep","$_isDisposed","$_mounted","$_events","$_preventOpen","$_init","deactivated","skipDelay","_ref2$force","force","$_scheduleShow","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","cb","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClose","_loop","_vm","staticStyle","visibility","keyup","$event","notify","installed","finalOptions","insertAt","styleInject","VClosePopover","emptyObject","isUndef","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","replacer","__v_isRef","makeMap","expectsLowerCase","isReservedAttribute","remove$2","cached","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","toArray","_from","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","hasProto","inBrowser","UA","isIE9","isEdge","_isServer","isFF","nativeWatch","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","_Set","hasSymbol","Reflect","currentInstance","getCurrentInstance","setCurrentInstance","vm","_scope","VNode","elm","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","SuppressedError","uid$2","pendingCleanupDeps","cleanupDeps","dep","subs","_pending","Dep","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","arrayMethods","inserted","ob","__ob__","observeArray","arrayKeys","NO_INITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","vmCount","defineReactive","observe","ssrMockReactivity","__v_skip","isRef","customSetter","observeEvenIfShallow","getter","childOb","dependArray","newVal","isReadonly","_isVue","del","reactive","makeReactive","shallowReactive","isReactive","isShallow","__v_isShallow","__v_isReadonly","isProxy","toRaw","observed","markRaw","RefFlag","ref$1","createRef","shallowRef","triggerRef","unref","proxyRefs","objectWithRefs","proxyWithRefUnwrap","customRef","factory","_a","toRefs","toRef","rawToReadonlyFlag","rawToShallowReadonlyFlag","readonly","createReadonly","existingFlag","existingProxy","defineReadonlyProperty","shallowReadonly","getterOrOptions","debugOptions","onlyGetter","watcher","Watcher","lazy","effect","dirty","evaluate","WATCHER","WATCHER_CB","WATCHER_GETTER","WATCHER_CLEANUP","watchEffect","doWatch","watchPostEffect","flush","watchSyncEffect","activeEffectScope","INITIAL_WATCHER_VALUE","immediate","onTrack","onTrigger","cleanup","invokeWithErrorHandling","forceTrigger","isMultiSource","traverse","_isDestroyed","onCleanup","baseGetter_1","onStop","noRecurse","queueWatcher","_isMounted","_preWatchers","$once","teardown","EffectScope","detached","effects","cleanups","scopes","currentEffectScope","fromParent","effectScope","getCurrentScope","onScopeDispose","provide","resolveProvided","_provided","parentProvides","inject","treatDefaultAsFactory","provides","normalizeEvent","createFnInvoker","invoker","updateListeners","oldOn","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","renderList","renderSlot","fallbackRender","bindObject","nodes","scopedSlotFn","$scopedSlots","resolveFilter","resolveAsset","isKeyNotMatch","expect","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","_loop_1","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","tree","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","$key","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_m","_f","_u","_p","resolveSlots","slots","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","scopedSlots","normalSlots","prevScopedSlots","hasNormalSlots","isStable","_normalized","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","normalized","createSetupContext","_attrsProxy","syncSetupProxy","_listenersProxy","_slotsProxy","syncSetupSlots","initSlotsProxy","expose","exposed","changed","defineProxyAttr","useSlots","getContext","useAttrs","useListeners","_setupContext","mergeDefaults","currentRenderingInstance","ensureCtor","comp","getFirstComponentChild","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","createElement$1","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","createComponent","applyNS","registerDeepBindings","_createElement","handleError","hooks","errorCaptured","globalHandleError","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","p_1","MutationObserver","setImmediate","counter_1","textNode_1","characterData","useCssModule","mod","useCssVars","_setupProxy","setProperty","defineAsyncComponent","loader","loadingComponent","errorComponent","userOnError","suspensible","onError","pendingRequest","retries","load","thisRequest","loading","createLifeCycle","hookName","mergeLifecycleHook","injectHook","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onServerPrefetch","onRenderTracked","onRenderTriggered","injectErrorCapturedHook","onErrorCaptured","defineComponent","seenObjects","_traverse","isA","isFrozen","depId","target$1","uid$1","expOrFn","isRenderWatcher","_watcher","sync","deps","newDeps","depIds","newDepIds","segments","parsePath","_isBeingDestroyed","add$1","remove$1","createOnceHandler$1","_target","onceHandler","updateComponentListeners","oldListeners","activeInstance","setActiveInstance","prevActiveInstance","isInInactiveTree","_inactive","activateChildComponent","direct","_directInactive","callHook$1","deactivateChildComponent","setContext","prevInst","prevScope","_hasHookEvent","activatedChildren","waiting","flushing","currentFlushTimestamp","getNow","performance_1","createEvent","timeStamp","sortCompareFn","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","resolveInject","provideKey","provideDefault","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","injections","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","getComponentName","__name","_componentTag","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","prevVNode","_vnode","prevListeners","_parentListeners","_props","propKeys","_propKeys","propOptions","validateProp","$forceUpdate","updateChildComponent","hooksToMerge","baseCtor","_base","cid","errorComp","resolved","owner","owners","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","res_1","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","extractPropsFromVNodeData","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook","installComponentHooks","f1","f2","strats","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","parent_1","defaultStrat","mergeOptions","normalizeProps","normalizeInject","dirs","normalizeDirectives$1","extends","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","sharedPropertyDefinition","sourceKey","initState","propsOptions","isRoot","initProps$1","setup","setupResult","_setupState","__sfc","initSetup","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed$1","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps","initComputed","mixin","_getComponentName","matches","pruneCache","keepAliveInstance","pruneCacheEntry","current","_uid","vnodeComponentOptions","initInternalComponent","initLifecycle","initEvents","parentData","initRender","initInjections","provideOption","provided","initProvide","initMixin$1","dataDef","propsDef","$delete","stateMixin","hookRE","i_1","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","_render","prevRenderInst","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","destroyed","updated","configDef","delete","observable","plugin","installedPlugins","_installedPlugins","initUse","initMixin","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","multiple","createElementNS","createComment","newNode","nextSibling","setTextContent","setStyleScope","registerRef","isRemoval","refValue","$refsValue","isFor","refInFor","_isString","_isRef","refs","setSetupRef","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","callInsert","emptyModifiers","getRawDirName","setupDef","baseModules","updateAttrs","inheritAttrs","oldAttrs","_v_attr_proxy","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker_1","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","updateDOMListeners","event_1","normalizeEvents","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","checkVal","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","i_3","childElm","createRmCb","findIdxInOld","oldCh","i_5","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","i_6","isRenderedModule","inVPre","hasChildNodes","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i_8","i_9","insert_1","i_10","createPatchFunction","vmodel","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","selectedIndex","initEvent","dispatchEvent","locateNode","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave_1","moveClass","TransitionGroup","kept","prevChildren","rawChildren","transitionData","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","moved","el_1","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","dy","platformComponents","HTMLUnknownElement","HTMLElement","updateComponent","preWatchers","mountComponent","query","loadState","_oc_capabilities","fallback","elem","isCallable","tryToString","$TypeError","isConstructor","isPossiblePrototype","$String","isPrototypeOf","Prototype","STRICT_METHOD","callWithSafeIterationClosing","isArrayIteratorMethod","lengthOfArrayLike","getIterator","$Array","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","uncurryThis","IS_FILTER_REJECT","filterReject","arraySlice","comparefn","middle","llength","rlength","lindex","rindex","arraySpeciesConstructor","stringSlice","TO_STRING_TAG_SUPPORT","$Object","exceptions","error1","error2","makeBuiltIn","defineGlobalProperty","nonConfigurable","nonWritable","defineBuiltIn","DOMTokenListPrototype","IS_DENO","IS_NODE","Deno","Pebble","dontCallGetSet","SHAM","$exec","doesNotExceedSafeInteger","flattenIntoArray","sourceLen","mapper","elementLen","targetIndex","sourceIndex","mapFn","NATIVE_BIND","FunctionPrototype","aCallable","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","getMethod","isNullOrUndefined","Iterators","usingIterator","rawLength","keysLength","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","captures","namedCaptures","tailPos","documentAll","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","ResultPrototype","IS_RECORD","innerResult","innerError","ENUMERABLE_NEXT","FunctionName","IteratorsCore","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE_LENGTH","arity","trunc","toggle","safeGetBuiltIn","macrotask","Queue","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","microtask","exit","PromiseCapability","$$resolve","$$reject","$assign","chr","definePropertiesModule","V8_PROTOTYPE_DEFINE_BUG","ENUMERABLE","WRITABLE","$getOwnPropertyNames","windowNames","getWindowNames","CORRECT_PROTOTYPE_GETTER","uncurryThisAccessor","pref","NativePromiseConstructor","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","newPromiseCapability","promiseCapability","Target","Source","tail","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","group","hasIndices","unicodeSets","regExpFlags","$RegExp","MISSED_STICKY","defineBuiltInAccessor","license","aConstructor","toIntegerOrInfinity","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","$RangeError","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","labels","SymbolPrototype","TO_PRIMITIVE","hint","keyFor","$location","defer","channel","validateArgumentsLength","clearImmediate","Dispatch","MessageChannel","ONREADYSTATECHANGE","runner","eventListener","globalPostMessageDefer","postMessage","port2","port1","onmessage","importScripts","ordinaryToPrimitive","exoticToPrim","searchParams","params2","passed","wrappedWellKnownSymbolModule","depthArg","$includes","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","createIterResultObject","nativeSlice","fin","FUNCTION_NAME_EXISTS","nameRE","regExpExec","getReplacerFunction","$stringify","numberToString","tester","low","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","space","thisNumberValue","PureNumberNamespace","primValue","toNumeric","$getOwnPropertySymbols","newPromiseCapabilityModule","perform","capability","$promiseResolve","alreadyCalled","real","Internal","OwnPromiseCapability","nativeThen","task","hostReportErrors","PromiseConstructorDetection","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","isUnhandled","unwrap","internalReject","internalResolve","PromiseWrapper","race","capabilityReject","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","getRegExpFlags","proxyAccessor","SyntaxError","stringIndexOf","IS_NCG","BASE_FORCED","rawFlags","handled","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","$toString","$fromCodePoint","elements","fixRegExpWellKnownSymbolLogic","getSubstitution","UNSAFE_SUBSTITUTE","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","BUGGY","forcedStringTrimMethod","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","HIDDEN","QObject","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","$defineProperties","properties","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","thisSymbolValue","symbolDescriptiveString","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","DOMIterables","handlePrototype","ArrayIteratorMethods","USE_NATIVE_URL","defineBuiltIns","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","nativeFetch","NativeRequest","Headers","RequestPrototype","HeadersPrototype","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","serialize","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","attribute","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","append","$value","getAll","headersHas","headersSet","wrapRequestOptions","fetch","RequestConstructor","Request","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","http","https","ws","wss","isWindowsDriveLetter","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","FRAGMENT","URLState","isBase","baseState","failure","urlString","stateOverride","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","fragment","cannotBeABaseURL","isSpecial","includesCredentials","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","address","pieceIndex","parseIPv6","partsLength","numbers","part","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","origin","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","nmd","paths","seal","Func","_len2","_key2","unapply","arrayLastIndexOf","arrayPop","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","objectHasOwnProperty","regExpTest","typeErrorCreate","_len4","_key4","_len3","_key3","addToSet","transformCaseFunc","lcElement","cleanArray","newObject","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","purify","createDOMPurify","DOMPurify","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","NodeFilter","MozNamedAttrMap","DOMParser","trustedTypes","ElementPrototype","getNextSibling","getChildNodes","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","policyName","scriptUrl","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","doc","leadingWhitespace","dirtyPayload","parseFromString","createDocument","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","namespaceURI","_isNode","_executeHooks","currentNode","_sanitizeElements","allowedTags","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","getAttributeType","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","getAppTranslations","_oc_l10n_registry_translations","pluralFunction","_oc_l10n_registry_plural_functions","placeholdersOrNumber","optionsOrNumber","optSanitize","optEscape","isValidReplacement","bundle","vars2","number2","_nc_l10n_locale","Intl","DateTimeFormat","resolvedOptions","replaceAll","_nc_l10n_language","N","U","L","W","G","X","Y","J","K","H","Q","Z","nt","ot","at","st","ct","ut","ft","dt","vt","yt","ht","bt","xt","wt","St","Ct","It","Et","Ot","Nt","Tt","jt","Ut","Mt","At","kt","Pt","Ft","Rt","Lt","Dt","$t","Bt","zt","Wt","Gt","Xt","Yt","qt","Jt","Kt","Ht","Qt","Zt","ee","oe","ie","ce","ue","le","fe","me","pe","ve","ye","ge","xe","we","Se","Ce","Ie","Ee","Oe","Ne","ae","Te","Ue","je","Avatar","ActionButton","targetUrl","avatarUsername","avatarIsNoUser","overlayIconUrl","mainText","subText","itemMenu","hovered","gotMenu","gotOverlayIcon","onLinkClick","Ae","Me","ke","Fe","ids","Pe","Re","mouseover","mouseleave","Le","showItemsAndEmptyContent","halfEmptyContentString","items","halfEmptyContentIcon","displayedItems","emptyContentMessage","emptyContentIcon","showMore","showMoreUrl","what","showMoreText","DashboardWidgetItem","EmptyContent","halfEmptyContentMessage","maxItemNumber","scriptExports","functionalTemplate","injectStyles","_nc_vue_element_id","NcEmptyContent","nameId","hasName","hasDescription","_oc_webroot","joinPaths","nonEmptyArgs","lastArg","leadingSlash","trailingSlash","sections","acc","section","FolderIcon","emits","fillColor","extension","mimeType","directory","hasPreview","previewUrl","MimeType","getIconUrl","nameWithoutExtension","endsWith","isFolder","fileId","img","navigate","_window$OCA","_window$OCP","OCA","Viewer","mimetypes","OCP","Files","Router","fileid","goToRoute","view","RecommendedFile","DashboardWidget","$store","recommendedFiles","devtoolHook","deepCopy","hit","forEachValue","Module","rawModule","_children","_rawModule","rawState","prototypeAccessors","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","targetModule","newModule","getNamespace","this$1","rawChildModule","unregister","isRegistered","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","commit","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","mutation","prepend","subscribeAction","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","_Vue","vuexInit","applyMixin","after","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","startMessage","logger","collapsed","groupCollapsed","endMessage","groupEnd","getFormattedTime","time","pad","getHours","getMinutes","getSeconds","getMilliseconds","times","createNamespacedHelpers","createLogger","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","formattedTime","formattedMutation","formattedAction","bus2","valid","getBus","Proxy","static","clearOnLogout","kindOf","kindOfTest","typeOfTest","isFileList","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","TypedArray","isHTMLForm","reduceDescriptors","reducer","reducedDescriptors","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","asap","queueMicrotask","isBoolean","isEmptyObject","caseless","skipUndefined","targetKey","superConstructor","toFlatObject","sourceObj","destObj","propFilter","forEachEntry","_iterator","pair","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","p1","p2","toFiniteNumber","isSpecCompliantForm","toJSONObject","visit","reducedValue","isIterable","AxiosError","captureStackTrace","customProps","axiosError","errCode","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","indexes","visitor","defaultVisitor","useBlob","Blob","convertValue","isFlatArray","exposedHelpers","charMap","AxiosURLSearchParams","_pairs","_encode","serializeFn","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","platform","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","JSONRequested","parseReviver","ERR_BAD_RESPONSE","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","dest","tokensRE","parseTokens","deleted","deleteHeader","formatHeader","targets","asStrings","getSetCookie","accessor","accessors","defineAccessor","accessorName","arg1","arg3","buildAccessors","mapped","headerValue","CanceledError","ERR_CANCELED","ERR_BAD_REQUEST","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","freq","lastArgs","timer","timestamp","threshold","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","total","lengthComputable","progressBytes","rate","progress","estimated","progressEventDecorator","throttled","asyncDecorator","isMSIE","allowAbsoluteUrls","isRelativeUrl","headersToObject","timeoutMessage","withXSRFToken","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","getHeaders","formHeaders","allowedHeaders","_config","resolveConfig","uploadThrottled","downloadThrottled","flushUpload","flushDownload","ECONNABORTED","ERR_NETWORK","ETIMEDOUT","parseProtocol","signals","controller","AbortController","streamChunk","chunk","chunkSize","readStream","stream","reader","getReader","trackStream","onProgress","onFinish","readBytes","_onFinish","ReadableStream","pull","loadedBytes","enqueue","highWaterMark","globalFetchAPI","Response","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","TextEncoder","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","fetchOptions","_fetch","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","seeds","seed","knownAdapters","xhr","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","ERR_DEPRECATED","spelling","correctSpelling","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","configOrUrl","function","baseUrl","withXsrfToken","contextHeaders","generateHTTPMethod","isForm","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","toFormData","formToJSON","getAdapter","RETRY_KEY","RETRY_DELAY_KEY","onCsrfTokenError","retryDelay","retryIfMaintenanceMode","onMaintenanceModeError","reloadExpiredSession","reload","fetchRecommendedFiles","always","ocsVersion","resp","Vuex","loadedRecommendations","put","fetchRecommendations","fetched","recommendations","Dashboard"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"recommendations-dashboard.js?v=f39d4c993add2bd4c416","mappings":"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GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,KAAM,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,GAAK,CAAE,EAAK,QAAS,EAAK,CAAC,KsH4E3yC,MAAM81H,GAR8B/zD,GA9H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","sources":["webpack:///recommendations/node_modules/base64-js/index.js","webpack:///recommendations/node_modules/buffer/index.js","webpack:///recommendations/node_modules/charenc/charenc.js","webpack:///recommendations/node_modules/crypt/crypt.js","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcActionButton-CG4V9b5b.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcActionLink-BtpJIbvI.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcActionRouter-Bpv5Ywxq.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcActionText-IMOkntPi.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcActions-Dfs69WGA.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcAvatar-Cm4kVIfS.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcButton-uQUvp7DS.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-DzJMoJ_B.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-CAsF_ZMZ.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-CUFc_Dds.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-DJQ2Kuip.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-C7S2_wmi.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-CaztX9Pv.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcPopover--XoXIhLx.css","webpack:///recommendations/node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-Bw8yMFMP.css","webpack:///recommendations/src/components/DashboardWidget.vue?vue&type=style&index=0&id=cc8d7294&prod&lang=scss&scoped=true","webpack:///recommendations/src/components/RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss","webpack:///recommendations/node_modules/css-loader/dist/runtime/api.js","webpack:///recommendations/node_modules/css-loader/dist/runtime/sourceMaps.js","webpack:///recommendations/node_modules/escape-html/index.js","webpack:///recommendations/node_modules/ieee754/index.js","webpack:///recommendations/node_modules/is-buffer/index.js","webpack:///recommendations/node_modules/md5/md5.js","webpack:///recommendations/node_modules/process/browser.js","webpack:///recommendations/node_modules/semver/classes/semver.js","webpack:///recommendations/node_modules/semver/functions/major.js","webpack:///recommendations/node_modules/semver/functions/parse.js","webpack:///recommendations/node_modules/semver/functions/valid.js","webpack:///recommendations/node_modules/semver/internal/constants.js","webpack:///recommendations/node_modules/semver/internal/debug.js","webpack:///recommendations/node_modules/semver/internal/identifiers.js","webpack:///recommendations/node_modules/semver/internal/parse-options.js","webpack:///recommendations/node_modules/semver/internal/re.js","webpack:///recommendations/node_modules/striptags/src/striptags.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/insertBySelector.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack:///recommendations/node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack:///recommendations/webpack/bootstrap","webpack:///recommendations/webpack/runtime/compat get default export","webpack:///recommendations/webpack/runtime/define property getters","webpack:///recommendations/webpack/runtime/global","webpack:///recommendations/webpack/runtime/hasOwnProperty shorthand","webpack:///recommendations/webpack/runtime/make namespace object","webpack:///recommendations/webpack/runtime/nonce","webpack:///recommendations/node_modules/vue/dist/vue.runtime.esm.js","webpack:///recommendations/node_modules/dompurify/dist/purify.es.mjs","webpack:///recommendations/node_modules/@nextcloud/l10n/dist/chunks/translation-DoG5ZELJ.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-DzJMoJ_B.css?7a2e","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/Check-BkThHPH7.mjs","webpack:///recommendations/node_modules/@nextcloud/l10n/dist/gettext.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/_l10n-BmKQgz1z.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-CaztX9Pv.css?3082","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcAvatar-Cm4kVIfS.css?a4e8","webpack:///recommendations/node_modules/@nextcloud/event-bus/dist/index.mjs","webpack:///recommendations/node_modules/@nextcloud/auth/dist/index.mjs","webpack:///recommendations/node_modules/@nextcloud/browser-storage/dist/ScopedStorage.js","webpack:///recommendations/node_modules/@nextcloud/browser-storage/dist/StorageBuilder.js","webpack:///recommendations/node_modules/@nextcloud/browser-storage/dist/index.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/AxiosError.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/toFormData.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/defaults/transitional.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/browser/index.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/common/utils.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/platform/index.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/defaults/index.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/AxiosHeaders.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CanceledError.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/speedometer.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/throttle.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/progressEventReducer.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/resolveConfig.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseProtocol.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/composeSignals.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/trackStream.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/fetch.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/adapters.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/null.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/env/data.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/validator.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///recommendations/node_modules/@nextcloud/axios/node_modules/axios/index.js","webpack:///recommendations/node_modules/@nextcloud/router/dist/index.mjs","webpack:///recommendations/node_modules/@nextcloud/axios/dist/index.mjs","webpack:///recommendations/node_modules/@vueuse/shared/node_modules/vue-demi/lib/index.mjs","webpack:///recommendations/node_modules/@vueuse/shared/index.mjs","webpack:///recommendations/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs","webpack:///recommendations/node_modules/@vueuse/core/index.mjs","webpack:///recommendations/node_modules/@vueuse/components/node_modules/vue-demi/lib/index.mjs","webpack:///recommendations/node_modules/@vueuse/components/index.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcActions-Dfs69WGA.css?6a55","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/focusTrap-HJQ4pqHV.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/useTrapStackControl-BnLfCgGU.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcButton-uQUvp7DS.css?62d6","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/legacy-MK4GvP26.mjs","webpack:///recommendations/node_modules/@nextcloud/logger/dist/index.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/logger-D3RVzcfQ.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcButton-DUZTtFhr.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcPopover--XoXIhLx.css?2e85","webpack:///recommendations/node_modules/floating-vue/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:///recommendations/node_modules/floating-vue/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:///recommendations/node_modules/floating-vue/dist/floating-vue.es.js","webpack:///recommendations/node_modules/tabbable/dist/index.esm.js","webpack:///recommendations/node_modules/focus-trap/dist/focus-trap.esm.js","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcPopover-gxcAqoEb.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcActions-CpdT2y6O.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/GenRandomId-F5ebeBB_.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Functions/isDarkTheme.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/constants-Bls5liKo.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Composables/useIsDarkTheme.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/colors-BwQwSDJi.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Functions/usernameToColor.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Composables/useIsFullscreen.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Composables/useIsMobile.mjs","webpack:///recommendations/node_modules/@nextcloud/capabilities/dist/index.mjs","webpack:///recommendations/node_modules/@nextcloud/initial-state/dist/index.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-Bw8yMFMP.css?bbec","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-D_kxQky5.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CG4V9b5b.css?3cf0","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/mdi-C_j0YT8c.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-DJQ2Kuip.css?cb25","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcIconSvgWrapper-BreCg8pX.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/actionText-BMig9Egt.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/actionGlobal-DqVa7c7G.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcActionButton-DykQxmXJ.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcActionLink-BtpJIbvI.css?7920","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Components/NcActionLink.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-Bpv5Ywxq.css?897a","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Components/NcActionRouter.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcActionText-IMOkntPi.css?5e5c","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Components/NcActionText.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-C7S2_wmi.css?e310","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Components/NcLoadingIcon.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcAvatar-D5nljVEA.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/autolink-D2pIbi92.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Functions/contactsMenu.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/getAvatarUrl-IhLacDEr.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-CAsF_ZMZ.css?a54a","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidgetItem-DZ13sBtT.mjs","webpack://recommendations/./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-CUFc_Dds.css?a358","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/createElementId-DhjFt1I9.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/Components/NcEmptyContent.mjs","webpack:///recommendations/node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-DpzjksBk.mjs","webpack:///recommendations/node_modules/@nextcloud/paths/dist/index.mjs","webpack:///recommendations/node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://recommendations/./node_modules/vue-material-design-icons/Folder.vue?b60e","webpack:///recommendations/src/components/RecommendedFile.vue?vue&type=script&lang=js","webpack:///recommendations/src/components/RecommendedFile.vue","webpack:///recommendations/node_modules/vue-material-design-icons/Folder.vue","webpack:///recommendations/node_modules/vue-material-design-icons/Folder.vue?vue&type=template&id=07f089a4","webpack://recommendations/./src/components/RecommendedFile.vue?eaaa","webpack://recommendations/./src/components/RecommendedFile.vue?23a9","webpack:///recommendations/src/components/DashboardWidget.vue?vue&type=script&lang=js","webpack:///recommendations/src/components/DashboardWidget.vue","webpack://recommendations/./src/components/RecommendedFile.vue?c922","webpack://recommendations/./src/components/DashboardWidget.vue?a7f3","webpack://recommendations/./src/components/DashboardWidget.vue?dd2e","webpack://recommendations/./src/components/DashboardWidget.vue?1550","webpack:///recommendations/node_modules/vuex/dist/vuex.esm.js","webpack:///recommendations/src/store/store.js","webpack:///recommendations/src/service/RecommendationService.js","webpack:///recommendations/src/dashboard.js"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-5b4c6c71] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n\n/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nli.action[data-v-5b4c6c71]:hover, li.action.active[data-v-5b4c6c71] {\n border-radius: 6px;\n padding: 0;\n}\nli.action[data-v-5b4c6c71]:hover {\n background-color: var(--color-background-hover);\n}\n.action--disabled[data-v-5b4c6c71] {\n pointer-events: none;\n opacity: 0.5;\n}\n.action--disabled[data-v-5b4c6c71]:hover, .action--disabled[data-v-5b4c6c71]:focus {\n cursor: default;\n opacity: 0.5;\n}\n.action--disabled *[data-v-5b4c6c71] {\n opacity: 1 !important;\n}\n.action-button[data-v-5b4c6c71] {\n display: flex;\n align-items: flex-start;\n width: 100%;\n height: auto;\n margin: 0;\n padding: 0;\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n color: var(--color-main-text);\n border: 0;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n font-weight: normal;\n font-size: var(--default-font-size);\n line-height: var(--default-clickable-area);\n}\n.action-button > span[data-v-5b4c6c71] {\n cursor: pointer;\n white-space: nowrap;\n}\n.action-button__icon[data-v-5b4c6c71] {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\n background-size: 16px;\n background-repeat: no-repeat;\n}\n.action-button[data-v-5b4c6c71] .material-design-icon {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n}\n.action-button[data-v-5b4c6c71] .material-design-icon .material-design-icon__svg {\n vertical-align: middle;\n}\n.action-button__longtext-wrapper[data-v-5b4c6c71], .action-button__longtext[data-v-5b4c6c71] {\n max-width: 220px;\n line-height: 1.6em;\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\n cursor: pointer;\n text-align: start;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.action-button__longtext[data-v-5b4c6c71] {\n cursor: pointer;\n white-space: pre-wrap !important;\n}\n.action-button__name[data-v-5b4c6c71] {\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n display: block;\n}\n.action-button__description[data-v-5b4c6c71] {\n display: block;\n white-space: pre-wrap;\n font-size: var(--font-size-small);\n line-height: var(--default-line-height);\n color: var(--color-text-maxcontrast);\n cursor: pointer;\n}\n.action-button__menu-icon[data-v-5b4c6c71] {\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\n}\n.action-button__pressed-icon[data-v-5b4c6c71] {\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\n}\n.action-button *[data-v-5b4c6c71] {\n cursor: pointer;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CG4V9b5b.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;;;EAGE;AACF;EACE,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,+CAA+C;AACjD;AACA;EACE,oBAAoB;EACpB,YAAY;AACd;AACA;EACE,eAAe;EACf,YAAY;AACd;AACA;EACE,qBAAqB;AACvB;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,oEAAoE;EACpE,sBAAsB;EACtB,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,mBAAmB;EACnB,mCAAmC;EACnC,0CAA0C;AAC5C;AACA;EACE,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;EACV,4EAA4E;EAC5E,qBAAqB;EACrB,4BAA4B;AAC9B;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;AACZ;AACA;EACE,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,eAAe;EACf,gCAAgC;AAClC;AACA;EACE,iBAAiB;EACjB,uBAAuB;EACvB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,cAAc;AAChB;AACA;EACE,cAAc;EACd,qBAAqB;EACrB,iCAAiC;EACjC,uCAAuC;EACvC,oCAAoC;EACpC,eAAe;AACjB;AACA;EACE,yEAAyE;AAC3E;AACA;EACE,yEAAyE;AAC3E;AACA;EACE,eAAe;AACjB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-5b4c6c71] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\nli.action[data-v-5b4c6c71]:hover, li.action.active[data-v-5b4c6c71] {\\n border-radius: 6px;\\n padding: 0;\\n}\\nli.action[data-v-5b4c6c71]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.action--disabled[data-v-5b4c6c71] {\\n pointer-events: none;\\n opacity: 0.5;\\n}\\n.action--disabled[data-v-5b4c6c71]:hover, .action--disabled[data-v-5b4c6c71]:focus {\\n cursor: default;\\n opacity: 0.5;\\n}\\n.action--disabled *[data-v-5b4c6c71] {\\n opacity: 1 !important;\\n}\\n.action-button[data-v-5b4c6c71] {\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\\n box-sizing: border-box;\\n cursor: pointer;\\n white-space: nowrap;\\n color: var(--color-main-text);\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n box-shadow: none;\\n font-weight: normal;\\n font-size: var(--default-font-size);\\n line-height: var(--default-clickable-area);\\n}\\n.action-button > span[data-v-5b4c6c71] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\n.action-button__icon[data-v-5b4c6c71] {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\\n background-size: 16px;\\n background-repeat: no-repeat;\\n}\\n.action-button[data-v-5b4c6c71] .material-design-icon {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n}\\n.action-button[data-v-5b4c6c71] .material-design-icon .material-design-icon__svg {\\n vertical-align: middle;\\n}\\n.action-button__longtext-wrapper[data-v-5b4c6c71], .action-button__longtext[data-v-5b4c6c71] {\\n max-width: 220px;\\n line-height: 1.6em;\\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\\n cursor: pointer;\\n text-align: start;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.action-button__longtext[data-v-5b4c6c71] {\\n cursor: pointer;\\n white-space: pre-wrap !important;\\n}\\n.action-button__name[data-v-5b4c6c71] {\\n font-weight: bold;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n}\\n.action-button__description[data-v-5b4c6c71] {\\n display: block;\\n white-space: pre-wrap;\\n font-size: var(--font-size-small);\\n line-height: var(--default-line-height);\\n color: var(--color-text-maxcontrast);\\n cursor: pointer;\\n}\\n.action-button__menu-icon[data-v-5b4c6c71] {\\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\\n}\\n.action-button__pressed-icon[data-v-5b4c6c71] {\\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\\n}\\n.action-button *[data-v-5b4c6c71] {\\n cursor: pointer;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-86e09254] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n\n/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nli.action[data-v-86e09254]:hover, li.action.active[data-v-86e09254] {\n border-radius: 6px;\n padding: 0;\n}\nli.action[data-v-86e09254]:hover {\n background-color: var(--color-background-hover);\n}\n.action-link[data-v-86e09254] {\n display: flex;\n align-items: flex-start;\n width: 100%;\n height: auto;\n margin: 0;\n padding: 0;\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n color: var(--color-main-text);\n border: 0;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n font-weight: normal;\n font-size: var(--default-font-size);\n line-height: var(--default-clickable-area);\n}\n.action-link > span[data-v-86e09254] {\n cursor: pointer;\n white-space: nowrap;\n}\n.action-link__icon[data-v-86e09254] {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\n background-size: 16px;\n background-repeat: no-repeat;\n}\n.action-link[data-v-86e09254] .material-design-icon {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n}\n.action-link[data-v-86e09254] .material-design-icon .material-design-icon__svg {\n vertical-align: middle;\n}\n.action-link__longtext-wrapper[data-v-86e09254], .action-link__longtext[data-v-86e09254] {\n max-width: 220px;\n line-height: 1.6em;\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\n cursor: pointer;\n text-align: start;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.action-link__longtext[data-v-86e09254] {\n cursor: pointer;\n white-space: pre-wrap !important;\n}\n.action-link__name[data-v-86e09254] {\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n display: block;\n}\n.action-link__description[data-v-86e09254] {\n display: block;\n white-space: pre-wrap;\n font-size: var(--font-size-small);\n line-height: var(--default-line-height);\n color: var(--color-text-maxcontrast);\n cursor: pointer;\n}\n.action-link__menu-icon[data-v-86e09254] {\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcActionLink-BtpJIbvI.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;;;EAGE;AACF;EACE,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,oEAAoE;EACpE,sBAAsB;EACtB,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,mBAAmB;EACnB,mCAAmC;EACnC,0CAA0C;AAC5C;AACA;EACE,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;EACV,4EAA4E;EAC5E,qBAAqB;EACrB,4BAA4B;AAC9B;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;AACZ;AACA;EACE,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,eAAe;EACf,gCAAgC;AAClC;AACA;EACE,iBAAiB;EACjB,uBAAuB;EACvB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,cAAc;AAChB;AACA;EACE,cAAc;EACd,qBAAqB;EACrB,iCAAiC;EACjC,uCAAuC;EACvC,oCAAoC;EACpC,eAAe;AACjB;AACA;EACE,yEAAyE;AAC3E\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-86e09254] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\nli.action[data-v-86e09254]:hover, li.action.active[data-v-86e09254] {\\n border-radius: 6px;\\n padding: 0;\\n}\\nli.action[data-v-86e09254]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.action-link[data-v-86e09254] {\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\\n box-sizing: border-box;\\n cursor: pointer;\\n white-space: nowrap;\\n color: var(--color-main-text);\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n box-shadow: none;\\n font-weight: normal;\\n font-size: var(--default-font-size);\\n line-height: var(--default-clickable-area);\\n}\\n.action-link > span[data-v-86e09254] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\n.action-link__icon[data-v-86e09254] {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\\n background-size: 16px;\\n background-repeat: no-repeat;\\n}\\n.action-link[data-v-86e09254] .material-design-icon {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n}\\n.action-link[data-v-86e09254] .material-design-icon .material-design-icon__svg {\\n vertical-align: middle;\\n}\\n.action-link__longtext-wrapper[data-v-86e09254], .action-link__longtext[data-v-86e09254] {\\n max-width: 220px;\\n line-height: 1.6em;\\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\\n cursor: pointer;\\n text-align: start;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.action-link__longtext[data-v-86e09254] {\\n cursor: pointer;\\n white-space: pre-wrap !important;\\n}\\n.action-link__name[data-v-86e09254] {\\n font-weight: bold;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n}\\n.action-link__description[data-v-86e09254] {\\n display: block;\\n white-space: pre-wrap;\\n font-size: var(--font-size-small);\\n line-height: var(--default-line-height);\\n color: var(--color-text-maxcontrast);\\n cursor: pointer;\\n}\\n.action-link__menu-icon[data-v-86e09254] {\\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-4dae1ff7] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n\n/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nli.action[data-v-4dae1ff7]:hover, li.action.active[data-v-4dae1ff7] {\n border-radius: 6px;\n padding: 0;\n}\nli.action[data-v-4dae1ff7]:hover {\n background-color: var(--color-background-hover);\n}\n.action-router[data-v-4dae1ff7] {\n display: flex;\n align-items: flex-start;\n width: 100%;\n height: auto;\n margin: 0;\n padding: 0;\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n color: var(--color-main-text);\n border: 0;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n font-weight: normal;\n font-size: var(--default-font-size);\n line-height: var(--default-clickable-area);\n}\n.action-router > span[data-v-4dae1ff7] {\n cursor: pointer;\n white-space: nowrap;\n}\n.action-router__icon[data-v-4dae1ff7] {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\n background-size: 16px;\n background-repeat: no-repeat;\n}\n.action-router[data-v-4dae1ff7] .material-design-icon {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n}\n.action-router[data-v-4dae1ff7] .material-design-icon .material-design-icon__svg {\n vertical-align: middle;\n}\n.action-router__longtext-wrapper[data-v-4dae1ff7], .action-router__longtext[data-v-4dae1ff7] {\n max-width: 220px;\n line-height: 1.6em;\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\n cursor: pointer;\n text-align: start;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.action-router__longtext[data-v-4dae1ff7] {\n cursor: pointer;\n white-space: pre-wrap !important;\n}\n.action-router__name[data-v-4dae1ff7] {\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n display: block;\n}\n.action-router__description[data-v-4dae1ff7] {\n display: block;\n white-space: pre-wrap;\n font-size: var(--font-size-small);\n line-height: var(--default-line-height);\n color: var(--color-text-maxcontrast);\n cursor: pointer;\n}\n.action-router__menu-icon[data-v-4dae1ff7] {\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\n}\n.action--disabled[data-v-4dae1ff7] {\n pointer-events: none;\n opacity: 0.5;\n}\n.action--disabled[data-v-4dae1ff7]:hover, .action--disabled[data-v-4dae1ff7]:focus {\n cursor: default;\n opacity: 0.5;\n}\n.action--disabled *[data-v-4dae1ff7] {\n opacity: 1 !important;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-Bpv5Ywxq.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;;;EAGE;AACF;EACE,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,oEAAoE;EACpE,sBAAsB;EACtB,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,mBAAmB;EACnB,mCAAmC;EACnC,0CAA0C;AAC5C;AACA;EACE,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;EACV,4EAA4E;EAC5E,qBAAqB;EACrB,4BAA4B;AAC9B;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;AACZ;AACA;EACE,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,eAAe;EACf,gCAAgC;AAClC;AACA;EACE,iBAAiB;EACjB,uBAAuB;EACvB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,cAAc;AAChB;AACA;EACE,cAAc;EACd,qBAAqB;EACrB,iCAAiC;EACjC,uCAAuC;EACvC,oCAAoC;EACpC,eAAe;AACjB;AACA;EACE,yEAAyE;AAC3E;AACA;EACE,oBAAoB;EACpB,YAAY;AACd;AACA;EACE,eAAe;EACf,YAAY;AACd;AACA;EACE,qBAAqB;AACvB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-4dae1ff7] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\nli.action[data-v-4dae1ff7]:hover, li.action.active[data-v-4dae1ff7] {\\n border-radius: 6px;\\n padding: 0;\\n}\\nli.action[data-v-4dae1ff7]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.action-router[data-v-4dae1ff7] {\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\\n box-sizing: border-box;\\n cursor: pointer;\\n white-space: nowrap;\\n color: var(--color-main-text);\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n box-shadow: none;\\n font-weight: normal;\\n font-size: var(--default-font-size);\\n line-height: var(--default-clickable-area);\\n}\\n.action-router > span[data-v-4dae1ff7] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\n.action-router__icon[data-v-4dae1ff7] {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\\n background-size: 16px;\\n background-repeat: no-repeat;\\n}\\n.action-router[data-v-4dae1ff7] .material-design-icon {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n}\\n.action-router[data-v-4dae1ff7] .material-design-icon .material-design-icon__svg {\\n vertical-align: middle;\\n}\\n.action-router__longtext-wrapper[data-v-4dae1ff7], .action-router__longtext[data-v-4dae1ff7] {\\n max-width: 220px;\\n line-height: 1.6em;\\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\\n cursor: pointer;\\n text-align: start;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.action-router__longtext[data-v-4dae1ff7] {\\n cursor: pointer;\\n white-space: pre-wrap !important;\\n}\\n.action-router__name[data-v-4dae1ff7] {\\n font-weight: bold;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n}\\n.action-router__description[data-v-4dae1ff7] {\\n display: block;\\n white-space: pre-wrap;\\n font-size: var(--font-size-small);\\n line-height: var(--default-line-height);\\n color: var(--color-text-maxcontrast);\\n cursor: pointer;\\n}\\n.action-router__menu-icon[data-v-4dae1ff7] {\\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\\n}\\n.action--disabled[data-v-4dae1ff7] {\\n pointer-events: none;\\n opacity: 0.5;\\n}\\n.action--disabled[data-v-4dae1ff7]:hover, .action--disabled[data-v-4dae1ff7]:focus {\\n cursor: default;\\n opacity: 0.5;\\n}\\n.action--disabled *[data-v-4dae1ff7] {\\n opacity: 1 !important;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-2fe7eb92] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n\n/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nli.action[data-v-2fe7eb92]:hover, li.action.active[data-v-2fe7eb92] {\n border-radius: 6px;\n padding: 0;\n}\nli.action[data-v-2fe7eb92]:hover {\n background-color: var(--color-background-hover);\n}\n.action-text[data-v-2fe7eb92] {\n display: flex;\n align-items: flex-start;\n width: 100%;\n height: auto;\n margin: 0;\n padding: 0;\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\n box-sizing: border-box;\n cursor: pointer;\n white-space: nowrap;\n color: var(--color-main-text);\n border: 0;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n font-weight: normal;\n font-size: var(--default-font-size);\n line-height: var(--default-clickable-area);\n}\n.action-text > span[data-v-2fe7eb92] {\n cursor: pointer;\n white-space: nowrap;\n}\n.action-text__icon[data-v-2fe7eb92] {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\n background-size: 16px;\n background-repeat: no-repeat;\n}\n.action-text[data-v-2fe7eb92] .material-design-icon {\n width: var(--default-clickable-area);\n height: var(--default-clickable-area);\n opacity: 1;\n}\n.action-text[data-v-2fe7eb92] .material-design-icon .material-design-icon__svg {\n vertical-align: middle;\n}\n.action-text__longtext-wrapper[data-v-2fe7eb92], .action-text__longtext[data-v-2fe7eb92] {\n max-width: 220px;\n line-height: 1.6em;\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\n cursor: pointer;\n text-align: start;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.action-text__longtext[data-v-2fe7eb92] {\n cursor: pointer;\n white-space: pre-wrap !important;\n}\n.action-text__name[data-v-2fe7eb92] {\n font-weight: bold;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 100%;\n display: block;\n}\n.action-text__description[data-v-2fe7eb92] {\n display: block;\n white-space: pre-wrap;\n font-size: var(--font-size-small);\n line-height: var(--default-line-height);\n color: var(--color-text-maxcontrast);\n cursor: pointer;\n}\n.action-text__menu-icon[data-v-2fe7eb92] {\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\n}\n.action--disabled[data-v-2fe7eb92] {\n pointer-events: none;\n opacity: 0.5;\n}\n.action--disabled[data-v-2fe7eb92]:hover, .action--disabled[data-v-2fe7eb92]:focus {\n cursor: default;\n opacity: 0.5;\n}\n.action--disabled *[data-v-2fe7eb92] {\n opacity: 1 !important;\n}\n.action-text[data-v-2fe7eb92],\n.action-text span[data-v-2fe7eb92] {\n cursor: default;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcActionText-IMOkntPi.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;;;EAGE;AACF;EACE,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,oEAAoE;EACpE,sBAAsB;EACtB,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,mBAAmB;EACnB,mCAAmC;EACnC,0CAA0C;AAC5C;AACA;EACE,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;EACV,4EAA4E;EAC5E,qBAAqB;EACrB,4BAA4B;AAC9B;AACA;EACE,oCAAoC;EACpC,qCAAqC;EACrC,UAAU;AACZ;AACA;EACE,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,eAAe;EACf,gCAAgC;AAClC;AACA;EACE,iBAAiB;EACjB,uBAAuB;EACvB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,cAAc;AAChB;AACA;EACE,cAAc;EACd,qBAAqB;EACrB,iCAAiC;EACjC,uCAAuC;EACvC,oCAAoC;EACpC,eAAe;AACjB;AACA;EACE,yEAAyE;AAC3E;AACA;EACE,oBAAoB;EACpB,YAAY;AACd;AACA;EACE,eAAe;EACf,YAAY;AACd;AACA;EACE,qBAAqB;AACvB;AACA;;EAEE,eAAe;AACjB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-2fe7eb92] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\nli.action[data-v-2fe7eb92]:hover, li.action.active[data-v-2fe7eb92] {\\n border-radius: 6px;\\n padding: 0;\\n}\\nli.action[data-v-2fe7eb92]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.action-text[data-v-2fe7eb92] {\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n height: auto;\\n margin: 0;\\n padding: 0;\\n padding-inline-end: calc((var(--default-clickable-area) - 16px) / 2);\\n box-sizing: border-box;\\n cursor: pointer;\\n white-space: nowrap;\\n color: var(--color-main-text);\\n border: 0;\\n border-radius: 0;\\n background-color: transparent;\\n box-shadow: none;\\n font-weight: normal;\\n font-size: var(--default-font-size);\\n line-height: var(--default-clickable-area);\\n}\\n.action-text > span[data-v-2fe7eb92] {\\n cursor: pointer;\\n white-space: nowrap;\\n}\\n.action-text__icon[data-v-2fe7eb92] {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n background-position: calc((var(--default-clickable-area) - 16px) / 2) center;\\n background-size: 16px;\\n background-repeat: no-repeat;\\n}\\n.action-text[data-v-2fe7eb92] .material-design-icon {\\n width: var(--default-clickable-area);\\n height: var(--default-clickable-area);\\n opacity: 1;\\n}\\n.action-text[data-v-2fe7eb92] .material-design-icon .material-design-icon__svg {\\n vertical-align: middle;\\n}\\n.action-text__longtext-wrapper[data-v-2fe7eb92], .action-text__longtext[data-v-2fe7eb92] {\\n max-width: 220px;\\n line-height: 1.6em;\\n padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0;\\n cursor: pointer;\\n text-align: start;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.action-text__longtext[data-v-2fe7eb92] {\\n cursor: pointer;\\n white-space: pre-wrap !important;\\n}\\n.action-text__name[data-v-2fe7eb92] {\\n font-weight: bold;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n}\\n.action-text__description[data-v-2fe7eb92] {\\n display: block;\\n white-space: pre-wrap;\\n font-size: var(--font-size-small);\\n line-height: var(--default-line-height);\\n color: var(--color-text-maxcontrast);\\n cursor: pointer;\\n}\\n.action-text__menu-icon[data-v-2fe7eb92] {\\n margin-inline: auto calc((var(--default-clickable-area) - 16px) / 2 * -1);\\n}\\n.action--disabled[data-v-2fe7eb92] {\\n pointer-events: none;\\n opacity: 0.5;\\n}\\n.action--disabled[data-v-2fe7eb92]:hover, .action--disabled[data-v-2fe7eb92]:focus {\\n cursor: default;\\n opacity: 0.5;\\n}\\n.action--disabled *[data-v-2fe7eb92] {\\n opacity: 1 !important;\\n}\\n.action-text[data-v-2fe7eb92],\\n.action-text span[data-v-2fe7eb92] {\\n cursor: default;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c816308a] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.action-items[data-v-c816308a] {\n display: flex;\n align-items: center;\n gap: calc((var(--default-clickable-area) - 16px) / 2 / 2);\n}\n.action-item[data-v-c816308a] {\n --open-background-color: var(--color-background-hover, \\$action-background-hover);\n position: relative;\n display: inline-block;\n}\n.action-item.action-item--primary[data-v-c816308a] {\n --open-background-color: var(--color-primary-element-hover);\n}\n.action-item.action-item--secondary[data-v-c816308a] {\n --open-background-color: var(--color-primary-element-light-hover);\n}\n.action-item.action-item--error[data-v-c816308a] {\n --open-background-color: var(--color-error-hover);\n}\n.action-item.action-item--warning[data-v-c816308a] {\n --open-background-color: var(--color-warning-hover);\n}\n.action-item.action-item--success[data-v-c816308a] {\n --open-background-color: var(--color-success-hover);\n}\n.action-item.action-item--tertiary-no-background[data-v-c816308a] {\n --open-background-color: transparent;\n}\n.action-item.action-item--open .action-item__menutoggle[data-v-c816308a] {\n background-color: var(--open-background-color);\n}\n.action-item__menutoggle__icon[data-v-c816308a] {\n width: 20px;\n height: 20px;\n object-fit: contain;\n}/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper {\n border-radius: var(--border-radius-large);\n}\n.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner {\n border-radius: var(--border-radius-large);\n padding: 4px;\n max-height: calc(100vh - var(--header-height));\n overflow: auto;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcActions-Dfs69WGA.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,yDAAyD;AAC3D;AACA;EACE,gFAAgF;EAChF,kBAAkB;EAClB,qBAAqB;AACvB;AACA;EACE,2DAA2D;AAC7D;AACA;EACE,iEAAiE;AACnE;AACA;EACE,iDAAiD;AACnD;AACA;EACE,mDAAmD;AACrD;AACA;EACE,mDAAmD;AACrD;AACA;EACE,oCAAoC;AACtC;AACA;EACE,8CAA8C;AAChD;AACA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;AACrB,CAAC;;;EAGC;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,yCAAyC;AAC3C;AACA;EACE,yCAAyC;EACzC,YAAY;EACZ,8CAA8C;EAC9C,cAAc;AAChB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c816308a] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.action-items[data-v-c816308a] {\\n display: flex;\\n align-items: center;\\n gap: calc((var(--default-clickable-area) - 16px) / 2 / 2);\\n}\\n.action-item[data-v-c816308a] {\\n --open-background-color: var(--color-background-hover, $action-background-hover);\\n position: relative;\\n display: inline-block;\\n}\\n.action-item.action-item--primary[data-v-c816308a] {\\n --open-background-color: var(--color-primary-element-hover);\\n}\\n.action-item.action-item--secondary[data-v-c816308a] {\\n --open-background-color: var(--color-primary-element-light-hover);\\n}\\n.action-item.action-item--error[data-v-c816308a] {\\n --open-background-color: var(--color-error-hover);\\n}\\n.action-item.action-item--warning[data-v-c816308a] {\\n --open-background-color: var(--color-warning-hover);\\n}\\n.action-item.action-item--success[data-v-c816308a] {\\n --open-background-color: var(--color-success-hover);\\n}\\n.action-item.action-item--tertiary-no-background[data-v-c816308a] {\\n --open-background-color: transparent;\\n}\\n.action-item.action-item--open .action-item__menutoggle[data-v-c816308a] {\\n background-color: var(--open-background-color);\\n}\\n.action-item__menutoggle__icon[data-v-c816308a] {\\n width: 20px;\\n height: 20px;\\n object-fit: contain;\\n}/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper {\\n border-radius: var(--border-radius-large);\\n}\\n.v-popper--theme-nc-popover-8.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner {\\n border-radius: var(--border-radius-large);\\n padding: 4px;\\n max-height: calc(100vh - var(--header-height));\\n overflow: auto;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-936fbce2] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.avatardiv[data-v-936fbce2] {\n position: relative;\n display: inline-block;\n width: var(--avatar-size);\n height: var(--avatar-size);\n}\n.avatardiv--unknown[data-v-936fbce2] {\n position: relative;\n background-color: var(--color-main-background);\n white-space: normal;\n}\n.avatardiv[data-v-936fbce2]:not(.avatardiv--unknown) {\n background-color: var(--color-main-background) !important;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n}\n.avatardiv--with-menu[data-v-936fbce2] {\n cursor: pointer;\n}\n.avatardiv--with-menu .action-item[data-v-936fbce2] {\n position: absolute;\n top: 0;\n left: 0;\n}\n.avatardiv--with-menu[data-v-936fbce2] .action-item__menutoggle {\n cursor: pointer;\n opacity: 0;\n}\n.avatardiv--with-menu[data-v-936fbce2]:focus-within .action-item__menutoggle, .avatardiv--with-menu[data-v-936fbce2]:hover .action-item__menutoggle, .avatardiv--with-menu.avatardiv--with-menu-loading[data-v-936fbce2] .action-item__menutoggle {\n opacity: 1;\n}\n.avatardiv--with-menu:focus-within img[data-v-936fbce2], .avatardiv--with-menu:hover img[data-v-936fbce2], .avatardiv--with-menu.avatardiv--with-menu-loading img[data-v-936fbce2] {\n opacity: 0.3;\n}\n.avatardiv--with-menu[data-v-936fbce2] .action-item__menutoggle,\n.avatardiv--with-menu img[data-v-936fbce2] {\n transition: opacity var(--animation-quick);\n}\n.avatardiv--with-menu[data-v-936fbce2] .button-vue,\n.avatardiv--with-menu[data-v-936fbce2] .button-vue__icon {\n height: var(--avatar-size);\n min-height: var(--avatar-size);\n width: var(--avatar-size) !important;\n min-width: var(--avatar-size);\n}\n.avatardiv--with-menu[data-v-936fbce2] > .button-vue, .avatardiv--with-menu[data-v-936fbce2] > .action-item .button-vue {\n --button-radius: calc(var(--avatar-size) / 2);\n}\n.avatardiv .avatardiv__initials-wrapper[data-v-936fbce2] {\n display: block;\n height: var(--avatar-size);\n width: var(--avatar-size);\n background-color: var(--color-main-background);\n border-radius: calc(var(--avatar-size) / 2);\n}\n.avatardiv .avatardiv__initials-wrapper .avatardiv__initials[data-v-936fbce2] {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 100%;\n text-align: center;\n font-weight: normal;\n}\n.avatardiv img[data-v-936fbce2] {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n.avatardiv .material-design-icon[data-v-936fbce2] {\n width: var(--avatar-size);\n height: var(--avatar-size);\n}\n.avatardiv .avatardiv__user-status[data-v-936fbce2] {\n --avatar-status-size-orbital: calc(var(--avatar-size) * (1 - 1 / sqrt(2)));\n --avatar-status-size-min: var(--font-size-small);\n --avatar-status-size: max(var(--avatar-status-size-orbital), var(--avatar-status-size-min));\n box-sizing: border-box;\n position: absolute;\n inset-inline-end: 0;\n inset-block-end: 0;\n height: var(--avatar-status-size);\n width: var(--avatar-status-size);\n line-height: 1;\n font-size: calc(var(--avatar-status-size) / 1.2);\n background-color: var(--color-main-background);\n background-repeat: no-repeat;\n background-size: var(--avatar-status-size);\n background-position: center;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.acli:hover .avatardiv .avatardiv__user-status[data-v-936fbce2] {\n border-color: var(--color-background-hover);\n background-color: var(--color-background-hover);\n}\n.acli.active .avatardiv .avatardiv__user-status[data-v-936fbce2] {\n border-color: var(--color-primary-element-light);\n background-color: var(--color-primary-element-light);\n}\n.avatardiv .avatardiv__user-status--icon[data-v-936fbce2] {\n border: none;\n background-color: transparent;\n}\n.avatardiv .popovermenu-wrapper[data-v-936fbce2] {\n position: relative;\n display: inline-block;\n}\n.avatar-class-icon[data-v-936fbce2] {\n display: block;\n border-radius: calc(var(--avatar-size) / 2);\n background-color: var(--color-background-darker);\n height: 100%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcAvatar-Cm4kVIfS.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,yBAAyB;EACzB,0BAA0B;AAC5B;AACA;EACE,kBAAkB;EAClB,8CAA8C;EAC9C,mBAAmB;AACrB;AACA;EACE,yDAAyD;EACzD,6CAA6C;AAC/C;AACA;EACE,eAAe;AACjB;AACA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;AACT;AACA;EACE,eAAe;EACf,UAAU;AACZ;AACA;EACE,UAAU;AACZ;AACA;EACE,YAAY;AACd;AACA;;EAEE,0CAA0C;AAC5C;AACA;;EAEE,0BAA0B;EAC1B,8BAA8B;EAC9B,oCAAoC;EACpC,6BAA6B;AAC/B;AACA;EACE,6CAA6C;AAC/C;AACA;EACE,cAAc;EACd,0BAA0B;EAC1B,yBAAyB;EACzB,8CAA8C;EAC9C,2CAA2C;AAC7C;AACA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,cAAc;EACd,WAAW;EACX,kBAAkB;EAClB,mBAAmB;AACrB;AACA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,yBAAyB;EACzB,0BAA0B;AAC5B;AACA;EACE,0EAA0E;EAC1E,gDAAgD;EAChD,2FAA2F;EAC3F,sBAAsB;EACtB,kBAAkB;EAClB,mBAAmB;EACnB,kBAAkB;EAClB,iCAAiC;EACjC,gCAAgC;EAChC,cAAc;EACd,gDAAgD;EAChD,8CAA8C;EAC9C,4BAA4B;EAC5B,0CAA0C;EAC1C,2BAA2B;EAC3B,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,2CAA2C;EAC3C,+CAA+C;AACjD;AACA;EACE,gDAAgD;EAChD,oDAAoD;AACtD;AACA;EACE,YAAY;EACZ,6BAA6B;AAC/B;AACA;EACE,kBAAkB;EAClB,qBAAqB;AACvB;AACA;EACE,cAAc;EACd,2CAA2C;EAC3C,gDAAgD;EAChD,YAAY;AACd\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-936fbce2] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.avatardiv[data-v-936fbce2] {\\n position: relative;\\n display: inline-block;\\n width: var(--avatar-size);\\n height: var(--avatar-size);\\n}\\n.avatardiv--unknown[data-v-936fbce2] {\\n position: relative;\\n background-color: var(--color-main-background);\\n white-space: normal;\\n}\\n.avatardiv[data-v-936fbce2]:not(.avatardiv--unknown) {\\n background-color: var(--color-main-background) !important;\\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n}\\n.avatardiv--with-menu[data-v-936fbce2] {\\n cursor: pointer;\\n}\\n.avatardiv--with-menu .action-item[data-v-936fbce2] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n.avatardiv--with-menu[data-v-936fbce2] .action-item__menutoggle {\\n cursor: pointer;\\n opacity: 0;\\n}\\n.avatardiv--with-menu[data-v-936fbce2]:focus-within .action-item__menutoggle, .avatardiv--with-menu[data-v-936fbce2]:hover .action-item__menutoggle, .avatardiv--with-menu.avatardiv--with-menu-loading[data-v-936fbce2] .action-item__menutoggle {\\n opacity: 1;\\n}\\n.avatardiv--with-menu:focus-within img[data-v-936fbce2], .avatardiv--with-menu:hover img[data-v-936fbce2], .avatardiv--with-menu.avatardiv--with-menu-loading img[data-v-936fbce2] {\\n opacity: 0.3;\\n}\\n.avatardiv--with-menu[data-v-936fbce2] .action-item__menutoggle,\\n.avatardiv--with-menu img[data-v-936fbce2] {\\n transition: opacity var(--animation-quick);\\n}\\n.avatardiv--with-menu[data-v-936fbce2] .button-vue,\\n.avatardiv--with-menu[data-v-936fbce2] .button-vue__icon {\\n height: var(--avatar-size);\\n min-height: var(--avatar-size);\\n width: var(--avatar-size) !important;\\n min-width: var(--avatar-size);\\n}\\n.avatardiv--with-menu[data-v-936fbce2] > .button-vue, .avatardiv--with-menu[data-v-936fbce2] > .action-item .button-vue {\\n --button-radius: calc(var(--avatar-size) / 2);\\n}\\n.avatardiv .avatardiv__initials-wrapper[data-v-936fbce2] {\\n display: block;\\n height: var(--avatar-size);\\n width: var(--avatar-size);\\n background-color: var(--color-main-background);\\n border-radius: calc(var(--avatar-size) / 2);\\n}\\n.avatardiv .avatardiv__initials-wrapper .avatardiv__initials[data-v-936fbce2] {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: block;\\n width: 100%;\\n text-align: center;\\n font-weight: normal;\\n}\\n.avatardiv img[data-v-936fbce2] {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n.avatardiv .material-design-icon[data-v-936fbce2] {\\n width: var(--avatar-size);\\n height: var(--avatar-size);\\n}\\n.avatardiv .avatardiv__user-status[data-v-936fbce2] {\\n --avatar-status-size-orbital: calc(var(--avatar-size) * (1 - 1 / sqrt(2)));\\n --avatar-status-size-min: var(--font-size-small);\\n --avatar-status-size: max(var(--avatar-status-size-orbital), var(--avatar-status-size-min));\\n box-sizing: border-box;\\n position: absolute;\\n inset-inline-end: 0;\\n inset-block-end: 0;\\n height: var(--avatar-status-size);\\n width: var(--avatar-status-size);\\n line-height: 1;\\n font-size: calc(var(--avatar-status-size) / 1.2);\\n background-color: var(--color-main-background);\\n background-repeat: no-repeat;\\n background-size: var(--avatar-status-size);\\n background-position: center;\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.acli:hover .avatardiv .avatardiv__user-status[data-v-936fbce2] {\\n border-color: var(--color-background-hover);\\n background-color: var(--color-background-hover);\\n}\\n.acli.active .avatardiv .avatardiv__user-status[data-v-936fbce2] {\\n border-color: var(--color-primary-element-light);\\n background-color: var(--color-primary-element-light);\\n}\\n.avatardiv .avatardiv__user-status--icon[data-v-936fbce2] {\\n border: none;\\n background-color: transparent;\\n}\\n.avatardiv .popovermenu-wrapper[data-v-936fbce2] {\\n position: relative;\\n display: inline-block;\\n}\\n.avatar-class-icon[data-v-936fbce2] {\\n display: block;\\n border-radius: calc(var(--avatar-size) / 2);\\n background-color: var(--color-background-darker);\\n height: 100%;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-bfde1a98] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.button-vue[data-v-bfde1a98] {\n --button-size: var(--default-clickable-area);\n --button-inner-size: calc(var(--button-size) - 4px);\n --button-radius: var(--border-radius-element, calc(var(--button-size) / 2));\n --button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n --button-padding: var(--default-grid-baseline) var(--button-padding-default);\n color: var(--color-primary-element-light-text);\n background-color: var(--color-primary-element-light);\n border: 1px solid var(--color-primary-element-light-hover);\n border-bottom-width: 2px;\n border-radius: var(--button-radius);\n box-sizing: border-box;\n position: relative;\n width: fit-content;\n overflow: hidden;\n padding-block: 1px 0;\n padding-inline: var(--button-padding);\n min-height: var(--button-size);\n min-width: var(--button-size);\n display: flex;\n align-items: center;\n justify-content: center;\n transition-property: color, border-color, background-color;\n transition-duration: 0.1s;\n transition-timing-function: linear;\n cursor: pointer;\n font-size: var(--default-font-size);\n font-weight: bold;\n}\n.button-vue--size-small[data-v-bfde1a98] {\n --button-size: var(--clickable-area-small, 24px);\n --button-radius: var(--border-radius);\n}\n.button-vue--size-large[data-v-bfde1a98] {\n --button-size: var(--clickable-area-large, 48px);\n}\n.button-vue[data-v-bfde1a98], .button-vue[data-v-bfde1a98] * {\n cursor: pointer;\n}\n.button-vue[data-v-bfde1a98]:focus {\n outline: none;\n}\n.button-vue[data-v-bfde1a98]:disabled {\n cursor: default;\n opacity: 0.5;\n filter: saturate(0.7);\n}\n.button-vue[data-v-bfde1a98]:disabled * {\n cursor: default;\n}\n.button-vue[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-primary-element-light-hover);\n}\n.button-vue[data-v-bfde1a98]:active {\n background-color: var(--color-primary-element-light);\n}\n.button-vue__wrapper[data-v-bfde1a98] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n}\n.button-vue--end .button-vue__wrapper[data-v-bfde1a98] {\n justify-content: end;\n}\n.button-vue--start .button-vue__wrapper[data-v-bfde1a98] {\n justify-content: start;\n}\n.button-vue--reverse .button-vue__wrapper[data-v-bfde1a98] {\n flex-direction: row-reverse;\n}\n.button-vue--reverse.button-vue--icon-and-text[data-v-bfde1a98] {\n --button-padding: var(--button-padding-default) var(--default-grid-baseline);\n}\n.button-vue__icon[data-v-bfde1a98] {\n --default-clickable-area: var(--button-inner-size);\n height: var(--button-inner-size);\n width: var(--button-inner-size);\n min-height: var(--button-inner-size);\n min-width: var(--button-inner-size);\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.button-vue--size-small .button-vue__icon[data-v-bfde1a98] > * {\n max-height: 16px;\n max-width: 16px;\n}\n.button-vue--size-small .button-vue__icon[data-v-bfde1a98] svg {\n height: 16px;\n width: 16px;\n}\n.button-vue__text[data-v-bfde1a98] {\n font-weight: bold;\n margin-bottom: 1px;\n padding: 2px 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.button-vue--icon-only[data-v-bfde1a98] {\n --button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\n line-height: 1;\n width: var(--button-size) !important;\n}\n.button-vue--text-only[data-v-bfde1a98] {\n --button-padding: var(--button-padding-default);\n}\n.button-vue--text-only .button-vue__text[data-v-bfde1a98] {\n margin-inline: 4px;\n}\n.button-vue--wide[data-v-bfde1a98] {\n width: 100%;\n}\n.button-vue[data-v-bfde1a98]:focus-visible {\n outline: 2px solid var(--color-main-text) !important;\n box-shadow: 0 0 0 4px var(--color-main-background) !important;\n}\n.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-bfde1a98] {\n outline: 2px solid var(--color-primary-element-text);\n border-radius: var(--border-radius-element, var(--border-radius));\n background-color: transparent;\n}\n.button-vue--vue-primary[data-v-bfde1a98] {\n background-color: var(--color-primary-element);\n border-color: var(--color-primary-element-hover);\n color: var(--color-primary-element-text);\n}\n.button-vue--vue-primary[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-primary-element-hover);\n}\n.button-vue--vue-primary[data-v-bfde1a98]:active {\n background-color: var(--color-primary-element);\n}\n.button-vue--vue-secondary[data-v-bfde1a98] {\n background-color: var(--color-primary-element-light);\n border-color: var(--color-primary-element-light-hover);\n color: var(--color-primary-element-light-text);\n}\n.button-vue--vue-secondary[data-v-bfde1a98]:hover:not(:disabled) {\n color: var(--color-primary-element-light-text);\n background-color: var(--color-primary-element-light-hover);\n}\n.button-vue--tertiary[data-v-bfde1a98], .button-vue--vue-tertiary[data-v-bfde1a98] {\n background-color: transparent;\n border-color: transparent;\n color: var(--color-main-text);\n}\n.button-vue--tertiary[data-v-bfde1a98]:hover:not(:disabled), .button-vue--vue-tertiary[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-background-hover);\n}\n.button-vue--vue-tertiary-no-background[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: transparent;\n}\n.button-vue--vue-tertiary-on-primary[data-v-bfde1a98] {\n color: var(--color-primary-element-text);\n}\n.button-vue--vue-tertiary-on-primary[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: transparent;\n}\n.button-vue--vue-success[data-v-bfde1a98] {\n background-color: var(--color-success);\n border-color: var(--color-success-hover);\n color: var(--color-success-text);\n}\n.button-vue--vue-success[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-success-hover);\n}\n.button-vue--vue-success[data-v-bfde1a98]:active {\n background-color: var(--color-success);\n}\n.button-vue--vue-warning[data-v-bfde1a98] {\n background-color: var(--color-warning);\n border-color: var(--color-warning-hover);\n color: var(--color-warning-text);\n}\n.button-vue--vue-warning[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-warning-hover);\n}\n.button-vue--vue-warning[data-v-bfde1a98]:active {\n background-color: var(--color-warning);\n}\n.button-vue--vue-error[data-v-bfde1a98] {\n background-color: var(--color-error);\n border-color: var(--color-error-hover);\n color: var(--color-error-text);\n}\n.button-vue--vue-error[data-v-bfde1a98]:hover:not(:disabled) {\n background-color: var(--color-error-hover);\n}\n.button-vue--vue-error[data-v-bfde1a98]:active {\n background-color: var(--color-error);\n}\n.button-vue--legacy[data-v-bfde1a98] {\n --button-inner-size: var(--button-size);\n border: none;\n padding-block: 0;\n}\n.button-vue--legacy.button-vue--vue-error[data-v-bfde1a98], .button-vue--legacy.button-vue--vue-success[data-v-bfde1a98], .button-vue--legacy.button-vue--vue-warning[data-v-bfde1a98] {\n color: white;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcButton-uQUvp7DS.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,4CAA4C;EAC5C,mDAAmD;EACnD,2EAA2E;EAC3E,2HAA2H;EAC3H,4EAA4E;EAC5E,8CAA8C;EAC9C,oDAAoD;EACpD,0DAA0D;EAC1D,wBAAwB;EACxB,mCAAmC;EACnC,sBAAsB;EACtB,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,oBAAoB;EACpB,qCAAqC;EACrC,8BAA8B;EAC9B,6BAA6B;EAC7B,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,0DAA0D;EAC1D,yBAAyB;EACzB,kCAAkC;EAClC,eAAe;EACf,mCAAmC;EACnC,iBAAiB;AACnB;AACA;EACE,gDAAgD;EAChD,qCAAqC;AACvC;AACA;EACE,gDAAgD;AAClD;AACA;EACE,eAAe;AACjB;AACA;EACE,aAAa;AACf;AACA;EACE,eAAe;EACf,YAAY;EACZ,qBAAqB;AACvB;AACA;EACE,eAAe;AACjB;AACA;EACE,0DAA0D;AAC5D;AACA;EACE,oDAAoD;AACtD;AACA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;AACb;AACA;EACE,oBAAoB;AACtB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,4EAA4E;AAC9E;AACA;EACE,kDAAkD;EAClD,gCAAgC;EAChC,+BAA+B;EAC/B,oCAAoC;EACpC,mCAAmC;EACnC,aAAa;EACb,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,eAAe;AACjB;AACA;EACE,YAAY;EACZ,WAAW;AACb;AACA;EACE,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;AAClB;AACA;EACE,mHAAmH;EACnH,cAAc;EACd,oCAAoC;AACtC;AACA;EACE,+CAA+C;AACjD;AACA;EACE,kBAAkB;AACpB;AACA;EACE,WAAW;AACb;AACA;EACE,oDAAoD;EACpD,6DAA6D;AAC/D;AACA;EACE,oDAAoD;EACpD,iEAAiE;EACjE,6BAA6B;AAC/B;AACA;EACE,8CAA8C;EAC9C,gDAAgD;EAChD,wCAAwC;AAC1C;AACA;EACE,oDAAoD;AACtD;AACA;EACE,8CAA8C;AAChD;AACA;EACE,oDAAoD;EACpD,sDAAsD;EACtD,8CAA8C;AAChD;AACA;EACE,8CAA8C;EAC9C,0DAA0D;AAC5D;AACA;EACE,6BAA6B;EAC7B,yBAAyB;EACzB,6BAA6B;AAC/B;AACA;EACE,+CAA+C;AACjD;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,wCAAwC;AAC1C;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,sCAAsC;EACtC,wCAAwC;EACxC,gCAAgC;AAClC;AACA;EACE,4CAA4C;AAC9C;AACA;EACE,sCAAsC;AACxC;AACA;EACE,sCAAsC;EACtC,wCAAwC;EACxC,gCAAgC;AAClC;AACA;EACE,4CAA4C;AAC9C;AACA;EACE,sCAAsC;AACxC;AACA;EACE,oCAAoC;EACpC,sCAAsC;EACtC,8BAA8B;AAChC;AACA;EACE,0CAA0C;AAC5C;AACA;EACE,oCAAoC;AACtC;AACA;EACE,uCAAuC;EACvC,YAAY;EACZ,gBAAgB;AAClB;AACA;EACE,YAAY;AACd\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-bfde1a98] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.button-vue[data-v-bfde1a98] {\\n --button-size: var(--default-clickable-area);\\n --button-inner-size: calc(var(--button-size) - 4px);\\n --button-radius: var(--border-radius-element, calc(var(--button-size) / 2));\\n --button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\\n --button-padding: var(--default-grid-baseline) var(--button-padding-default);\\n color: var(--color-primary-element-light-text);\\n background-color: var(--color-primary-element-light);\\n border: 1px solid var(--color-primary-element-light-hover);\\n border-bottom-width: 2px;\\n border-radius: var(--button-radius);\\n box-sizing: border-box;\\n position: relative;\\n width: fit-content;\\n overflow: hidden;\\n padding-block: 1px 0;\\n padding-inline: var(--button-padding);\\n min-height: var(--button-size);\\n min-width: var(--button-size);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n transition-property: color, border-color, background-color;\\n transition-duration: 0.1s;\\n transition-timing-function: linear;\\n cursor: pointer;\\n font-size: var(--default-font-size);\\n font-weight: bold;\\n}\\n.button-vue--size-small[data-v-bfde1a98] {\\n --button-size: var(--clickable-area-small, 24px);\\n --button-radius: var(--border-radius);\\n}\\n.button-vue--size-large[data-v-bfde1a98] {\\n --button-size: var(--clickable-area-large, 48px);\\n}\\n.button-vue[data-v-bfde1a98], .button-vue[data-v-bfde1a98] * {\\n cursor: pointer;\\n}\\n.button-vue[data-v-bfde1a98]:focus {\\n outline: none;\\n}\\n.button-vue[data-v-bfde1a98]:disabled {\\n cursor: default;\\n opacity: 0.5;\\n filter: saturate(0.7);\\n}\\n.button-vue[data-v-bfde1a98]:disabled * {\\n cursor: default;\\n}\\n.button-vue[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-primary-element-light-hover);\\n}\\n.button-vue[data-v-bfde1a98]:active {\\n background-color: var(--color-primary-element-light);\\n}\\n.button-vue__wrapper[data-v-bfde1a98] {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 100%;\\n}\\n.button-vue--end .button-vue__wrapper[data-v-bfde1a98] {\\n justify-content: end;\\n}\\n.button-vue--start .button-vue__wrapper[data-v-bfde1a98] {\\n justify-content: start;\\n}\\n.button-vue--reverse .button-vue__wrapper[data-v-bfde1a98] {\\n flex-direction: row-reverse;\\n}\\n.button-vue--reverse.button-vue--icon-and-text[data-v-bfde1a98] {\\n --button-padding: var(--button-padding-default) var(--default-grid-baseline);\\n}\\n.button-vue__icon[data-v-bfde1a98] {\\n --default-clickable-area: var(--button-inner-size);\\n height: var(--button-inner-size);\\n width: var(--button-inner-size);\\n min-height: var(--button-inner-size);\\n min-width: var(--button-inner-size);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.button-vue--size-small .button-vue__icon[data-v-bfde1a98] > * {\\n max-height: 16px;\\n max-width: 16px;\\n}\\n.button-vue--size-small .button-vue__icon[data-v-bfde1a98] svg {\\n height: 16px;\\n width: 16px;\\n}\\n.button-vue__text[data-v-bfde1a98] {\\n font-weight: bold;\\n margin-bottom: 1px;\\n padding: 2px 0;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n}\\n.button-vue--icon-only[data-v-bfde1a98] {\\n --button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));\\n line-height: 1;\\n width: var(--button-size) !important;\\n}\\n.button-vue--text-only[data-v-bfde1a98] {\\n --button-padding: var(--button-padding-default);\\n}\\n.button-vue--text-only .button-vue__text[data-v-bfde1a98] {\\n margin-inline: 4px;\\n}\\n.button-vue--wide[data-v-bfde1a98] {\\n width: 100%;\\n}\\n.button-vue[data-v-bfde1a98]:focus-visible {\\n outline: 2px solid var(--color-main-text) !important;\\n box-shadow: 0 0 0 4px var(--color-main-background) !important;\\n}\\n.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-bfde1a98] {\\n outline: 2px solid var(--color-primary-element-text);\\n border-radius: var(--border-radius-element, var(--border-radius));\\n background-color: transparent;\\n}\\n.button-vue--vue-primary[data-v-bfde1a98] {\\n background-color: var(--color-primary-element);\\n border-color: var(--color-primary-element-hover);\\n color: var(--color-primary-element-text);\\n}\\n.button-vue--vue-primary[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-primary-element-hover);\\n}\\n.button-vue--vue-primary[data-v-bfde1a98]:active {\\n background-color: var(--color-primary-element);\\n}\\n.button-vue--vue-secondary[data-v-bfde1a98] {\\n background-color: var(--color-primary-element-light);\\n border-color: var(--color-primary-element-light-hover);\\n color: var(--color-primary-element-light-text);\\n}\\n.button-vue--vue-secondary[data-v-bfde1a98]:hover:not(:disabled) {\\n color: var(--color-primary-element-light-text);\\n background-color: var(--color-primary-element-light-hover);\\n}\\n.button-vue--tertiary[data-v-bfde1a98], .button-vue--vue-tertiary[data-v-bfde1a98] {\\n background-color: transparent;\\n border-color: transparent;\\n color: var(--color-main-text);\\n}\\n.button-vue--tertiary[data-v-bfde1a98]:hover:not(:disabled), .button-vue--vue-tertiary[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-background-hover);\\n}\\n.button-vue--vue-tertiary-no-background[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: transparent;\\n}\\n.button-vue--vue-tertiary-on-primary[data-v-bfde1a98] {\\n color: var(--color-primary-element-text);\\n}\\n.button-vue--vue-tertiary-on-primary[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: transparent;\\n}\\n.button-vue--vue-success[data-v-bfde1a98] {\\n background-color: var(--color-success);\\n border-color: var(--color-success-hover);\\n color: var(--color-success-text);\\n}\\n.button-vue--vue-success[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-success-hover);\\n}\\n.button-vue--vue-success[data-v-bfde1a98]:active {\\n background-color: var(--color-success);\\n}\\n.button-vue--vue-warning[data-v-bfde1a98] {\\n background-color: var(--color-warning);\\n border-color: var(--color-warning-hover);\\n color: var(--color-warning-text);\\n}\\n.button-vue--vue-warning[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-warning-hover);\\n}\\n.button-vue--vue-warning[data-v-bfde1a98]:active {\\n background-color: var(--color-warning);\\n}\\n.button-vue--vue-error[data-v-bfde1a98] {\\n background-color: var(--color-error);\\n border-color: var(--color-error-hover);\\n color: var(--color-error-text);\\n}\\n.button-vue--vue-error[data-v-bfde1a98]:hover:not(:disabled) {\\n background-color: var(--color-error-hover);\\n}\\n.button-vue--vue-error[data-v-bfde1a98]:active {\\n background-color: var(--color-error);\\n}\\n.button-vue--legacy[data-v-bfde1a98] {\\n --button-inner-size: var(--button-size);\\n border: none;\\n padding-block: 0;\\n}\\n.button-vue--legacy.button-vue--vue-error[data-v-bfde1a98], .button-vue--legacy.button-vue--vue-success[data-v-bfde1a98], .button-vue--legacy.button-vue--vue-warning[data-v-bfde1a98] {\\n color: white;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-7631d51f] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.dashboard-widget[data-v-7631d51f] .empty-content {\n text-align: center;\n padding-top: 5vh;\n}\n.dashboard-widget[data-v-7631d51f] .empty-content.half-screen {\n padding-top: 0;\n margin-bottom: 1vh;\n}\n.more[data-v-7631d51f] {\n display: block;\n text-align: center;\n color: var(--color-text-maxcontrast);\n line-height: 60px;\n cursor: pointer;\n}\n.more[data-v-7631d51f]:hover, .more[data-v-7631d51f]:focus {\n background-color: var(--color-background-hover);\n border-radius: var(--border-radius-large);\n color: var(--color-main-text);\n}\n\n/* skeleton */\n.item-list__entry[data-v-7631d51f] {\n display: flex;\n align-items: flex-start;\n padding: 8px;\n}\n.item-list__entry .item-avatar[data-v-7631d51f] {\n position: relative;\n margin-top: auto;\n margin-bottom: auto;\n background-color: var(--color-background-dark) !important;\n}\n.item-list__entry .item__details[data-v-7631d51f] {\n padding-left: 8px;\n max-height: var(--default-clickable-area);\n flex-grow: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n.item-list__entry .item__details h3[data-v-7631d51f],\n.item-list__entry .item__details .message[data-v-7631d51f] {\n white-space: nowrap;\n background-color: var(--color-background-dark);\n}\n.item-list__entry .item__details h3[data-v-7631d51f] {\n font-size: 100%;\n margin: 0;\n}\n.item-list__entry .item__details .message[data-v-7631d51f] {\n width: 80%;\n height: 15px;\n margin-top: 5px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidget-DzJMoJ_B.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,cAAc;EACd,kBAAkB;AACpB;AACA;EACE,cAAc;EACd,kBAAkB;EAClB,oCAAoC;EACpC,iBAAiB;EACjB,eAAe;AACjB;AACA;EACE,+CAA+C;EAC/C,yCAAyC;EACzC,6BAA6B;AAC/B;;AAEA,aAAa;AACb;EACE,aAAa;EACb,uBAAuB;EACvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,yDAAyD;AAC3D;AACA;EACE,iBAAiB;EACjB,yCAAyC;EACzC,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;AACxB;AACA;;EAEE,mBAAmB;EACnB,8CAA8C;AAChD;AACA;EACE,eAAe;EACf,SAAS;AACX;AACA;EACE,UAAU;EACV,YAAY;EACZ,eAAe;AACjB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-7631d51f] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.dashboard-widget[data-v-7631d51f] .empty-content {\\n text-align: center;\\n padding-top: 5vh;\\n}\\n.dashboard-widget[data-v-7631d51f] .empty-content.half-screen {\\n padding-top: 0;\\n margin-bottom: 1vh;\\n}\\n.more[data-v-7631d51f] {\\n display: block;\\n text-align: center;\\n color: var(--color-text-maxcontrast);\\n line-height: 60px;\\n cursor: pointer;\\n}\\n.more[data-v-7631d51f]:hover, .more[data-v-7631d51f]:focus {\\n background-color: var(--color-background-hover);\\n border-radius: var(--border-radius-large);\\n color: var(--color-main-text);\\n}\\n\\n/* skeleton */\\n.item-list__entry[data-v-7631d51f] {\\n display: flex;\\n align-items: flex-start;\\n padding: 8px;\\n}\\n.item-list__entry .item-avatar[data-v-7631d51f] {\\n position: relative;\\n margin-top: auto;\\n margin-bottom: auto;\\n background-color: var(--color-background-dark) !important;\\n}\\n.item-list__entry .item__details[data-v-7631d51f] {\\n padding-left: 8px;\\n max-height: var(--default-clickable-area);\\n flex-grow: 1;\\n overflow: hidden;\\n display: flex;\\n flex-direction: column;\\n}\\n.item-list__entry .item__details h3[data-v-7631d51f],\\n.item-list__entry .item__details .message[data-v-7631d51f] {\\n white-space: nowrap;\\n background-color: var(--color-background-dark);\\n}\\n.item-list__entry .item__details h3[data-v-7631d51f] {\\n font-size: 100%;\\n margin: 0;\\n}\\n.item-list__entry .item__details .message[data-v-7631d51f] {\\n width: 80%;\\n height: 15px;\\n margin-top: 5px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-3c6f752d] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.item-list__entry[data-v-3c6f752d] {\n display: flex;\n align-items: center;\n position: relative;\n padding: 8px;\n}\n.item-list__entry[data-v-3c6f752d]:hover, .item-list__entry[data-v-3c6f752d]:focus {\n background-color: var(--color-background-hover);\n border-radius: var(--border-radius-large);\n}\n.item-list__entry .item-avatar[data-v-3c6f752d] {\n position: relative;\n margin-top: auto;\n margin-bottom: auto;\n}\n.item-list__entry .item__details[data-v-3c6f752d] {\n padding-inline-start: 8px;\n max-height: fit-content;\n flex-grow: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-height: var(--default-clickable-area);\n}\n.item-list__entry .item__details h3[data-v-3c6f752d],\n.item-list__entry .item__details .message[data-v-3c6f752d] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.item-list__entry .item__details .message span[data-v-3c6f752d] {\n width: 10px;\n display: inline-block;\n margin-bottom: -3px;\n}\n.item-list__entry .item__details h3[data-v-3c6f752d] {\n font-size: 100%;\n margin: 0;\n}\n.item-list__entry .item__details .message[data-v-3c6f752d] {\n width: 100%;\n color: var(--color-text-maxcontrast);\n}\n.item-list__entry .item-icon[data-v-3c6f752d] {\n position: relative;\n width: 14px;\n height: 14px;\n margin-top: 25px;\n margin-inline: -10px -2px;\n}\n.item-list__entry button.primary[data-v-3c6f752d] {\n padding: 21px;\n margin: 0;\n}\n\n/*\n.content-popover {\n\theight: 0px;\n\twidth: 0px;\n\tmargin-inline: auto;\n}\n.popover-container {\n\twidth: 100%;\n\theight: 0px;\n}\n*/`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcDashboardWidgetItem-CAsF_ZMZ.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,YAAY;AACd;AACA;EACE,+CAA+C;EAC/C,yCAAyC;AAC3C;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;AACrB;AACA;EACE,yBAAyB;EACzB,uBAAuB;EACvB,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,yCAAyC;AAC3C;AACA;;EAEE,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,WAAW;EACX,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,eAAe;EACf,SAAS;AACX;AACA;EACE,WAAW;EACX,oCAAoC;AACtC;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,yBAAyB;AAC3B;AACA;EACE,aAAa;EACb,SAAS;AACX;;AAEA;;;;;;;;;;CAUC\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-3c6f752d] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.item-list__entry[data-v-3c6f752d] {\\n display: flex;\\n align-items: center;\\n position: relative;\\n padding: 8px;\\n}\\n.item-list__entry[data-v-3c6f752d]:hover, .item-list__entry[data-v-3c6f752d]:focus {\\n background-color: var(--color-background-hover);\\n border-radius: var(--border-radius-large);\\n}\\n.item-list__entry .item-avatar[data-v-3c6f752d] {\\n position: relative;\\n margin-top: auto;\\n margin-bottom: auto;\\n}\\n.item-list__entry .item__details[data-v-3c6f752d] {\\n padding-inline-start: 8px;\\n max-height: fit-content;\\n flex-grow: 1;\\n overflow: hidden;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n min-height: var(--default-clickable-area);\\n}\\n.item-list__entry .item__details h3[data-v-3c6f752d],\\n.item-list__entry .item__details .message[data-v-3c6f752d] {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.item-list__entry .item__details .message span[data-v-3c6f752d] {\\n width: 10px;\\n display: inline-block;\\n margin-bottom: -3px;\\n}\\n.item-list__entry .item__details h3[data-v-3c6f752d] {\\n font-size: 100%;\\n margin: 0;\\n}\\n.item-list__entry .item__details .message[data-v-3c6f752d] {\\n width: 100%;\\n color: var(--color-text-maxcontrast);\\n}\\n.item-list__entry .item-icon[data-v-3c6f752d] {\\n position: relative;\\n width: 14px;\\n height: 14px;\\n margin-top: 25px;\\n margin-inline: -10px -2px;\\n}\\n.item-list__entry button.primary[data-v-3c6f752d] {\\n padding: 21px;\\n margin: 0;\\n}\\n\\n/*\\n.content-popover {\\n\\theight: 0px;\\n\\twidth: 0px;\\n\\tmargin-inline: auto;\\n}\\n.popover-container {\\n\\twidth: 100%;\\n\\theight: 0px;\\n}\\n*/\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c3123941] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.empty-content[data-v-c3123941] {\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n /* In case of using in a flex container - flex in advance */\n flex-grow: 1;\n padding: var(--default-grid-baseline);\n}\n.modal-wrapper .empty-content[data-v-c3123941] {\n margin-top: 5vh;\n margin-bottom: 5vh;\n}\n.empty-content__icon[data-v-c3123941] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 64px;\n height: 64px;\n margin: 0 auto 15px;\n opacity: 0.4;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 64px;\n}\n.empty-content__icon[data-v-c3123941] svg {\n width: 64px !important;\n height: 64px !important;\n max-width: 64px !important;\n max-height: 64px !important;\n}\n.empty-content__name[data-v-c3123941] {\n margin-bottom: 10px;\n text-align: center;\n font-weight: bold;\n font-size: 20px;\n line-height: 30px;\n}\n.empty-content__description[data-v-c3123941] {\n color: var(--color-text-maxcontrast);\n text-align: center;\n text-wrap-style: balance;\n}\n.empty-content__action[data-v-c3123941] {\n margin-top: 8px;\n}\n.modal-wrapper .empty-content__action[data-v-c3123941] {\n margin-top: 20px;\n display: flex;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcEmptyContent-CUFc_Dds.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,2DAA2D;EAC3D,YAAY;EACZ,qCAAqC;AACvC;AACA;EACE,eAAe;EACf,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,YAAY;EACZ,4BAA4B;EAC5B,2BAA2B;EAC3B,qBAAqB;AACvB;AACA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,2BAA2B;AAC7B;AACA;EACE,mBAAmB;EACnB,kBAAkB;EAClB,iBAAiB;EACjB,eAAe;EACf,iBAAiB;AACnB;AACA;EACE,oCAAoC;EACpC,kBAAkB;EAClB,wBAAwB;AAC1B;AACA;EACE,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,aAAa;AACf\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c3123941] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.empty-content[data-v-c3123941] {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n justify-content: center;\\n /* In case of using in a flex container - flex in advance */\\n flex-grow: 1;\\n padding: var(--default-grid-baseline);\\n}\\n.modal-wrapper .empty-content[data-v-c3123941] {\\n margin-top: 5vh;\\n margin-bottom: 5vh;\\n}\\n.empty-content__icon[data-v-c3123941] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 64px;\\n height: 64px;\\n margin: 0 auto 15px;\\n opacity: 0.4;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 64px;\\n}\\n.empty-content__icon[data-v-c3123941] svg {\\n width: 64px !important;\\n height: 64px !important;\\n max-width: 64px !important;\\n max-height: 64px !important;\\n}\\n.empty-content__name[data-v-c3123941] {\\n margin-bottom: 10px;\\n text-align: center;\\n font-weight: bold;\\n font-size: 20px;\\n line-height: 30px;\\n}\\n.empty-content__description[data-v-c3123941] {\\n color: var(--color-text-maxcontrast);\\n text-align: center;\\n text-wrap-style: balance;\\n}\\n.empty-content__action[data-v-c3123941] {\\n margin-top: 8px;\\n}\\n.modal-wrapper .empty-content__action[data-v-c3123941] {\\n margin-top: 20px;\\n display: flex;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-6a8df8b8] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.icon-vue[data-v-6a8df8b8] {\n --icon-size: var(--0ceed50f);\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: var(--default-clickable-area);\n min-height: var(--default-clickable-area);\n opacity: 1;\n}\n.icon-vue--inline[data-v-6a8df8b8] {\n display: inline-flex;\n min-width: fit-content;\n min-height: fit-content;\n vertical-align: text-bottom;\n}\n.icon-vue span[data-v-6a8df8b8] {\n line-height: 0;\n}\n.icon-vue[data-v-6a8df8b8] svg {\n fill: currentColor;\n width: var(--icon-size, 20px);\n height: var(--icon-size, 20px);\n max-width: var(--icon-size, 20px);\n max-height: var(--icon-size, 20px);\n}\n.icon-vue--directional[data-v-6a8df8b8] svg:dir(rtl) {\n transform: scaleX(-1);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcIconSvgWrapper-DJQ2Kuip.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,4BAA4B;EAC5B,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,wCAAwC;EACxC,yCAAyC;EACzC,UAAU;AACZ;AACA;EACE,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,2BAA2B;AAC7B;AACA;EACE,cAAc;AAChB;AACA;EACE,kBAAkB;EAClB,6BAA6B;EAC7B,8BAA8B;EAC9B,iCAAiC;EACjC,kCAAkC;AACpC;AACA;EACE,qBAAqB;AACvB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-6a8df8b8] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.icon-vue[data-v-6a8df8b8] {\\n --icon-size: var(--0ceed50f);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n min-width: var(--default-clickable-area);\\n min-height: var(--default-clickable-area);\\n opacity: 1;\\n}\\n.icon-vue--inline[data-v-6a8df8b8] {\\n display: inline-flex;\\n min-width: fit-content;\\n min-height: fit-content;\\n vertical-align: text-bottom;\\n}\\n.icon-vue span[data-v-6a8df8b8] {\\n line-height: 0;\\n}\\n.icon-vue[data-v-6a8df8b8] svg {\\n fill: currentColor;\\n width: var(--icon-size, 20px);\\n height: var(--icon-size, 20px);\\n max-width: var(--icon-size, 20px);\\n max-height: var(--icon-size, 20px);\\n}\\n.icon-vue--directional[data-v-6a8df8b8] svg:dir(rtl) {\\n transform: scaleX(-1);\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-94ff8098] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.loading-icon[data-v-94ff8098] {\n overflow: hidden;\n}\n.loading-icon svg[data-v-94ff8098] {\n animation: rotate var(--animation-duration, 0.8s) linear infinite;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcLoadingIcon-C7S2_wmi.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,iEAAiE;AACnE\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-94ff8098] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.loading-icon[data-v-94ff8098] {\\n overflow: hidden;\\n}\\n.loading-icon svg[data-v-94ff8098] {\\n animation: rotate var(--animation-duration, 0.8s) linear infinite;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-07bfaab0] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.mention-bubble--primary .mention-bubble__content[data-v-07bfaab0] {\n color: var(--color-primary-element-text);\n background-color: var(--color-primary-element);\n}\n.mention-bubble__wrapper[data-v-07bfaab0] {\n position: relative;\n max-width: 150px;\n height: 18px;\n vertical-align: text-bottom;\n display: inline-flex;\n align-items: center;\n}\n.mention-bubble__content[data-v-07bfaab0] {\n display: inline-flex;\n overflow: hidden;\n align-items: center;\n max-width: 100%;\n height: 20px;\n -webkit-user-select: none;\n user-select: none;\n padding-inline: 2px 6px;\n border-radius: 10px;\n background-color: var(--color-background-dark);\n}\n.mention-bubble__icon[data-v-07bfaab0] {\n position: relative;\n width: 16px;\n height: 16px;\n border-radius: 8px;\n background-color: var(--color-background-darker);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 12px;\n}\n.mention-bubble__icon--with-avatar[data-v-07bfaab0] {\n color: inherit;\n background-size: cover;\n}\n.mention-bubble__title[data-v-07bfaab0] {\n overflow: hidden;\n margin-inline-start: 2px;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.mention-bubble__title[data-v-07bfaab0]::before {\n content: attr(title);\n}\n.mention-bubble__select[data-v-07bfaab0] {\n position: absolute;\n z-index: -1;\n inset-inline-start: -100vw;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcMentionBubble-CaztX9Pv.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,wCAAwC;EACxC,8CAA8C;AAChD;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,YAAY;EACZ,2BAA2B;EAC3B,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,oBAAoB;EACpB,gBAAgB;EAChB,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,yBAAyB;EACzB,iBAAiB;EACjB,uBAAuB;EACvB,mBAAmB;EACnB,8CAA8C;AAChD;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,gDAAgD;EAChD,4BAA4B;EAC5B,2BAA2B;EAC3B,qBAAqB;AACvB;AACA;EACE,cAAc;EACd,sBAAsB;AACxB;AACA;EACE,gBAAgB;EAChB,wBAAwB;EACxB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,0BAA0B;EAC1B,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-07bfaab0] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.mention-bubble--primary .mention-bubble__content[data-v-07bfaab0] {\\n color: var(--color-primary-element-text);\\n background-color: var(--color-primary-element);\\n}\\n.mention-bubble__wrapper[data-v-07bfaab0] {\\n position: relative;\\n max-width: 150px;\\n height: 18px;\\n vertical-align: text-bottom;\\n display: inline-flex;\\n align-items: center;\\n}\\n.mention-bubble__content[data-v-07bfaab0] {\\n display: inline-flex;\\n overflow: hidden;\\n align-items: center;\\n max-width: 100%;\\n height: 20px;\\n -webkit-user-select: none;\\n user-select: none;\\n padding-inline: 2px 6px;\\n border-radius: 10px;\\n background-color: var(--color-background-dark);\\n}\\n.mention-bubble__icon[data-v-07bfaab0] {\\n position: relative;\\n width: 16px;\\n height: 16px;\\n border-radius: 8px;\\n background-color: var(--color-background-darker);\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 12px;\\n}\\n.mention-bubble__icon--with-avatar[data-v-07bfaab0] {\\n color: inherit;\\n background-size: cover;\\n}\\n.mention-bubble__title[data-v-07bfaab0] {\\n overflow: hidden;\\n margin-inline-start: 2px;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.mention-bubble__title[data-v-07bfaab0]::before {\\n content: attr(title);\\n}\\n.mention-bubble__select[data-v-07bfaab0] {\\n position: absolute;\\n z-index: -1;\\n inset-inline-start: -100vw;\\n width: 1px;\\n height: 1px;\\n overflow: hidden;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n._material-design-icon_hdy45_12 {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer {\n position: absolute;\n top: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n left: 0;\n z-index: -1;\n width: 100%;\n height: 100%;\n border: none;\n background-color: transparent;\n pointer-events: none;\n display: block;\n overflow: hidden;\n opacity: 0;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer object {\n display: block;\n position: absolute;\n top: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n left: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n pointer-events: none;\n z-index: -1;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper {\n z-index: 100000;\n top: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n left: 0;\n display: block !important;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__wrapper {\n /*\n * In theory, \"filter: drop-shadow\" would look better here with arrow shadow.\n * In fact, in results in a blurry popover in Chromium on scaling.\n * The hypothesis is that \"filter\" creates a new composition layer,\n * and with GPU acceleration requires the previous layers content to be rasterized.\n * In combination with translate3d from floating-vue, it makes Chromium to first render and rasterize the popover\n * and then apply scaling, which results in a blurry popover.\n */\n box-shadow: 0 1px 10px var(--color-box-shadow);\n border-radius: var(--border-radius-large);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__inner {\n padding: 0;\n color: var(--color-main-text);\n border-radius: var(--border-radius-large);\n overflow: hidden;\n background: var(--color-main-background);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__arrow-container {\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n border-style: solid;\n border-color: transparent;\n border-width: 10px;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container {\n bottom: -9px;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-bottom-width: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-top-color: var(--color-main-background);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container {\n top: -9px;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-top-width: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-bottom-color: var(--color-main-background);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container {\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n left: -9px;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-left-width: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-right-color: var(--color-main-background);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container {\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n right: -9px;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-right-width: 0;\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\n border-left-color: var(--color-main-background);\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=true] {\n visibility: hidden;\n transition: opacity var(--animation-quick), visibility var(--animation-quick);\n opacity: 0;\n}\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=false] {\n visibility: visible;\n transition: opacity var(--animation-quick);\n opacity: 1;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcPopover--XoXIhLx.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,MAAM;EACN,qDAAqD,EAAE,mBAAmB;EAC1E,OAAO;EACP,WAAW;EACX,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,6BAA6B;EAC7B,oBAAoB;EACpB,cAAc;EACd,gBAAgB;EAChB,UAAU;AACZ;AACA;EACE,cAAc;EACd,kBAAkB;EAClB,MAAM;EACN,qDAAqD,EAAE,mBAAmB;EAC1E,OAAO;EACP,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,oBAAoB;EACpB,WAAW;AACb;AACA;EACE,eAAe;EACf,MAAM;EACN,qDAAqD,EAAE,mBAAmB;EAC1E,OAAO;EACP,yBAAyB;AAC3B;AACA;EACE;;;;;;;IAOE;EACF,8CAA8C;EAC9C,yCAAyC;AAC3C;AACA;EACE,UAAU;EACV,6BAA6B;EAC7B,yCAAyC;EACzC,gBAAgB;EAChB,wCAAwC;AAC1C;AACA;EACE,kBAAkB;EAClB,UAAU;EACV,QAAQ;EACR,SAAS;EACT,mBAAmB;EACnB,yBAAyB;EACzB,kBAAkB;AACpB;AACA;EACE,YAAY;EACZ,qDAAqD,EAAE,mBAAmB;EAC1E,sBAAsB;EACtB,qDAAqD,EAAE,mBAAmB;EAC1E,8CAA8C;AAChD;AACA;EACE,SAAS;EACT,qDAAqD,EAAE,mBAAmB;EAC1E,mBAAmB;EACnB,qDAAqD,EAAE,mBAAmB;EAC1E,iDAAiD;AACnD;AACA;EACE,qDAAqD,EAAE,mBAAmB;EAC1E,UAAU;EACV,qDAAqD,EAAE,mBAAmB;EAC1E,oBAAoB;EACpB,qDAAqD,EAAE,mBAAmB;EAC1E,gDAAgD;AAClD;AACA;EACE,qDAAqD,EAAE,mBAAmB;EAC1E,WAAW;EACX,qDAAqD,EAAE,mBAAmB;EAC1E,qBAAqB;EACrB,qDAAqD,EAAE,mBAAmB;EAC1E,+CAA+C;AACjD;AACA;EACE,kBAAkB;EAClB,6EAA6E;EAC7E,UAAU;AACZ;AACA;EACE,mBAAmB;EACnB,0CAA0C;EAC1C,UAAU;AACZ\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n._material-design-icon_hdy45_12 {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer {\\n position: absolute;\\n top: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n left: 0;\\n z-index: -1;\\n width: 100%;\\n height: 100%;\\n border: none;\\n background-color: transparent;\\n pointer-events: none;\\n display: block;\\n overflow: hidden;\\n opacity: 0;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8 .resize-observer object {\\n display: block;\\n position: absolute;\\n top: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n left: 0;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n z-index: -1;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper {\\n z-index: 100000;\\n top: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n left: 0;\\n display: block !important;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__wrapper {\\n /*\\n * In theory, \\\"filter: drop-shadow\\\" would look better here with arrow shadow.\\n * In fact, in results in a blurry popover in Chromium on scaling.\\n * The hypothesis is that \\\"filter\\\" creates a new composition layer,\\n * and with GPU acceleration requires the previous layers content to be rasterized.\\n * In combination with translate3d from floating-vue, it makes Chromium to first render and rasterize the popover\\n * and then apply scaling, which results in a blurry popover.\\n */\\n box-shadow: 0 1px 10px var(--color-box-shadow);\\n border-radius: var(--border-radius-large);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__inner {\\n padding: 0;\\n color: var(--color-main-text);\\n border-radius: var(--border-radius-large);\\n overflow: hidden;\\n background: var(--color-main-background);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper .v-popper__arrow-container {\\n position: absolute;\\n z-index: 1;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-color: transparent;\\n border-width: 10px;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container {\\n bottom: -9px;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-bottom-width: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-top-color: var(--color-main-background);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container {\\n top: -9px;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-top-width: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-bottom-color: var(--color-main-background);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container {\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n left: -9px;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-left-width: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-right-color: var(--color-main-background);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container {\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n right: -9px;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-right-width: 0;\\n /* stylelint-disable-next-line csstools/use-logical */ /* upstream logic */\\n border-left-color: var(--color-main-background);\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=true] {\\n visibility: hidden;\\n transition: opacity var(--animation-quick), visibility var(--animation-quick);\\n opacity: 0;\\n}\\n._ncPopover_hdy45_20.v-popper--theme-nc-popover-8.v-popper__popper[aria-hidden=false] {\\n visibility: visible;\\n transition: opacity var(--animation-quick);\\n opacity: 1;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-86b73d39] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.user-status-icon[data-v-86b73d39] {\n --user-status-color-online: #2D7B41;\n --user-status-color-busy: #DB0606;\n --user-status-color-away: #C88800;\n --user-status-color-offline: #6B6B6B;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.user-status-icon--invisible[data-v-86b73d39] {\n filter: var(--background-invert-if-dark);\n}\n.user-status-icon[data-v-86b73d39] svg {\n width: 100%;\n height: 100%;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcUserStatusIcon-Bw8yMFMP.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,mCAAmC;EACnC,iCAAiC;EACjC,iCAAiC;EACjC,oCAAoC;EACpC,aAAa;EACb,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,wCAAwC;AAC1C;AACA;EACE,WAAW;EACX,YAAY;AACd\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-86b73d39] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.user-status-icon[data-v-86b73d39] {\\n --user-status-color-online: #2D7B41;\\n --user-status-color-busy: #DB0606;\\n --user-status-color-away: #C88800;\\n --user-status-color-offline: #6B6B6B;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.user-status-icon--invisible[data-v-86b73d39] {\\n filter: var(--background-invert-if-dark);\\n}\\n.user-status-icon[data-v-86b73d39] svg {\\n width: 100%;\\n height: 100%;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `#recommendations[data-v-cc8d7294] .recommendation{max-width:100%;padding:8px;margin-right:0;border-radius:var(--border-radius-large)}#recommendations[data-v-cc8d7294] .recommendation .thumbnail{width:44px;height:44px}#recommendations[data-v-cc8d7294] .recommendation .details .file-name .extension{vertical-align:top}#recommendations[data-v-cc8d7294] .recommendation .details .reason{display:none}#recommendations--empty-content[data-v-cc8d7294]{text-align:center;margin-top:5vh}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/DashboardWidget.vue\"],\"names\":[],\"mappings\":\"AAEC,kDACC,cAAA,CACA,WAAA,CACA,cAAA,CACA,wCAAA,CAEA,6DACC,UAAA,CACA,WAAA,CAIA,iFACC,kBAAA,CAGD,mEACC,YAAA,CAKJ,iDACC,iBAAA,CACA,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.recommendation[data-v-3dc2f712]{display:flex;align-items:center;flex-grow:1;min-width:250px;padding:5px;margin-right:12px;border-radius:var(--border-radius)}.recommendation[data-v-3dc2f712]:hover,.recommendation[data-v-3dc2f712]:focus{background:var(--color-background-hover)}.recommendation[data-v-3dc2f712]:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}.thumbnail[data-v-3dc2f712]{margin-right:9px;width:32px;height:32px;background-size:contain;flex-shrink:0;border-radius:var(--border-radius);display:flex;justify-content:center;align-items:center}.thumbnail[data-v-3dc2f712] svg{color:var(--color-primary-element);width:100%;height:100%}.details[data-v-3dc2f712]{min-width:0}.details .file-name[data-v-3dc2f712]{white-space:nowrap;min-width:0;text-overflow:ellipsis;overflow:hidden}.details .file-name .name[data-v-3dc2f712]{max-width:170px;color:var(--color-main-text)}.details .file-name .extension[data-v-3dc2f712]{color:var(--color-text-maxcontrast)}.details .reason[data-v-3dc2f712]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--color-text-maxcontrast)}@media only screen and (max-width: 1200px){.recommendation[data-v-3dc2f712]{flex-basis:50%;max-width:calc(50% - 15px)}}@media only screen and (max-width: 480px){.recommendation[data-v-3dc2f712]{flex-basis:100%;min-width:100%}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/RecommendedFile.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,eAAA,CACA,WAAA,CACA,iBAAA,CACA,kCAAA,CAEA,8EAEC,wCAAA,CAGD,+CACC,iDAAA,CAIF,4BACC,gBAAA,CACA,UAAA,CACA,WAAA,CACA,uBAAA,CACA,aAAA,CACA,kCAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CAEA,gCACC,kCAAA,CACA,UAAA,CACA,WAAA,CAIF,0BACC,WAAA,CAEA,qCACC,kBAAA,CACA,WAAA,CACA,sBAAA,CACA,eAAA,CAEA,2CACC,eAAA,CACA,4BAAA,CAGD,gDACC,mCAAA,CAIF,kCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,mCAAA,CAKF,2CACC,iCACC,cAAA,CACA,0BAAA,CAAA,CAKF,0CACC,iCACC,eAAA,CACA,cAAA,CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/*!\n * Vue.js v2.7.16\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n return v === true;\n}\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean');\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n return (isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n}\nfunction replacer(_key, val) {\n // avoid circular deps from v3\n if (val && val.__v_isRef) {\n return val.value;\n }\n return val;\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n var len = arr.length;\n if (len) {\n // fast path for the only / last item\n if (item === arr[len - 1]) {\n arr.length = len - 1;\n return;\n }\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx);\n }\n boundFn._length = fn.length;\n return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return (a.length === b.length &&\n a.every(function (e, i) {\n return looseEqual(e, b[i]);\n }));\n }\n else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n }));\n }\n else {\n /* istanbul ignore next */\n return false;\n }\n }\n catch (e) {\n /* istanbul ignore next */\n return false;\n }\n }\n else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n }\n else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val))\n return i;\n }\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n if (x === y) {\n return x === 0 && 1 / x !== 1 / y;\n }\n else {\n return x === x || y === y;\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch',\n 'renderTracked',\n 'renderTriggered'\n];\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n /**\n * Whether to record perf\n */\n performance: false,\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj)\n return;\n obj = obj[segments[i]];\n }\n return obj;\n };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n }\n catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer =\n global['process'] && global['process'].env.VUE_ENV === 'server';\n }\n else {\n _isServer = false;\n }\n }\n return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n isNative(Symbol) &&\n typeof Reflect !== 'undefined' &&\n isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n}\nelse {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /** @class */ (function () {\n function Set() {\n this.set = Object.create(null);\n }\n Set.prototype.has = function (key) {\n return this.set[key] === true;\n };\n Set.prototype.add = function (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n return Set;\n }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n if (vm === void 0) { vm = null; }\n if (!vm)\n currentInstance && currentInstance._scope.off();\n currentInstance = vm;\n vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n }\n Object.defineProperty(VNode.prototype, \"child\", {\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n get: function () {\n return this.componentInstance;\n },\n enumerable: false,\n configurable: true\n });\n return VNode;\n}());\nvar createEmptyVNode = function (text) {\n if (text === void 0) { text = ''; }\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, \n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n for (var i = 0; i < pendingCleanupDeps.length; i++) {\n var dep = pendingCleanupDeps[i];\n dep.subs = dep.subs.filter(function (s) { return s; });\n dep._pending = false;\n }\n pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n function Dep() {\n // pending subs cleanup\n this._pending = false;\n this.id = uid$2++;\n this.subs = [];\n }\n Dep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n };\n Dep.prototype.removeSub = function (sub) {\n // #12696 deps with massive amount of subscribers are extremely slow to\n // clean up in Chromium\n // to workaround this, we unset the sub for now, and clear them on\n // next scheduler flush.\n this.subs[this.subs.indexOf(sub)] = null;\n if (!this._pending) {\n this._pending = true;\n pendingCleanupDeps.push(this);\n }\n };\n Dep.prototype.depend = function (info) {\n if (Dep.target) {\n Dep.target.addDep(this);\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n }\n }\n };\n Dep.prototype.notify = function (info) {\n // stabilize the subscriber list first\n var subs = this.subs.filter(function (s) { return s; });\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n var sub = subs[i];\n if (process.env.NODE_ENV !== 'production' && info) {\n sub.onTrigger &&\n sub.onTrigger(__assign({ effect: subs[i] }, info));\n }\n sub.update();\n }\n };\n return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted)\n ob.observeArray(inserted);\n // notify change\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n target: this,\n key: method\n });\n }\n else {\n ob.dep.notify();\n }\n return result;\n });\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n notify: noop,\n depend: noop,\n addSub: noop,\n removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n function Observer(value, shallow, mock) {\n if (shallow === void 0) { shallow = false; }\n if (mock === void 0) { mock = false; }\n this.value = value;\n this.shallow = shallow;\n this.mock = mock;\n // this.value = value\n this.dep = mock ? mockDep : new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (isArray(value)) {\n if (!mock) {\n if (hasProto) {\n value.__proto__ = arrayMethods;\n /* eslint-enable no-proto */\n }\n else {\n for (var i = 0, l = arrayKeys.length; i < l; i++) {\n var key = arrayKeys[i];\n def(value, key, arrayMethods[key]);\n }\n }\n }\n if (!shallow) {\n this.observeArray(value);\n }\n }\n else {\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);\n }\n }\n }\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function (value) {\n for (var i = 0, l = value.length; i < l; i++) {\n observe(value[i], false, this.mock);\n }\n };\n return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n return value.__ob__;\n }\n if (shouldObserve &&\n (ssrMockReactivity || !isServerRendering()) &&\n (isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value.__v_skip /* ReactiveFlags.SKIP */ &&\n !isRef(value) &&\n !(value instanceof VNode)) {\n return new Observer(value, shallow, ssrMockReactivity);\n }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {\n if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) &&\n (val === NO_INITIAL_VALUE || arguments.length === 2)) {\n val = obj[key];\n }\n var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: obj,\n type: \"get\" /* TrackOpTypes.GET */,\n key: key\n });\n }\n else {\n dep.depend();\n }\n if (childOb) {\n childOb.dep.depend();\n if (isArray(value)) {\n dependArray(value);\n }\n }\n }\n return isRef(value) && !shallow ? value.value : value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (!hasChanged(value, newVal)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n }\n else if (getter) {\n // #7981: for accessor properties without setter\n return;\n }\n else if (!shallow && isRef(value) && !isRef(newVal)) {\n value.value = newVal;\n return;\n }\n else {\n val = newVal;\n }\n childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: obj,\n key: key,\n newValue: newVal,\n oldValue: value\n });\n }\n else {\n dep.notify();\n }\n }\n });\n return dep;\n}\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n var ob = target.__ob__;\n if (isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n // when mocking for SSR, array methods are not hijacked\n if (ob && !ob.shallow && ob.mock) {\n observe(val, false, true);\n }\n return val;\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.');\n return val;\n }\n if (!ob) {\n target[key] = val;\n return val;\n }\n defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"add\" /* TriggerOpTypes.ADD */,\n target: target,\n key: key,\n newValue: val,\n oldValue: undefined\n });\n }\n else {\n ob.dep.notify();\n }\n return val;\n}\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n var ob = target.__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.');\n return;\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n if (!hasOwn(target, key)) {\n return;\n }\n delete target[key];\n if (!ob) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"delete\" /* TriggerOpTypes.DELETE */,\n target: target,\n key: key\n });\n }\n else {\n ob.dep.notify();\n }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n if (e && e.__ob__) {\n e.__ob__.dep.depend();\n }\n if (isArray(e)) {\n dependArray(e);\n }\n }\n}\n\nfunction reactive(target) {\n makeReactive(target, false);\n return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n makeReactive(target, true);\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n return target;\n}\nfunction makeReactive(target, shallow) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (!isReadonly(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n }\n var existingOb = target && target.__ob__;\n if (existingOb && existingOb.shallow !== shallow) {\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n }\n }\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n if (process.env.NODE_ENV !== 'production' && !ob) {\n if (target == null || isPrimitive(target)) {\n warn(\"value cannot be made reactive: \".concat(String(target)));\n }\n if (isCollectionType(target)) {\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n }\n }\n }\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n // non-extensible objects won't be observed anyway\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n }\n return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n var type = toRawType(value);\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n var ref = {};\n def(ref, RefFlag, true);\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n return ref;\n}\nfunction triggerRef(ref) {\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n warn(\"received object is not a triggerable ref.\");\n }\n if (process.env.NODE_ENV !== 'production') {\n ref.dep &&\n ref.dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: ref,\n key: 'value'\n });\n }\n else {\n ref.dep && ref.dep.notify();\n }\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n if (isReactive(objectWithRefs)) {\n return objectWithRefs;\n }\n var proxy = {};\n var keys = Object.keys(objectWithRefs);\n for (var i = 0; i < keys.length; i++) {\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n }\n return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = source[key];\n if (isRef(val)) {\n return val.value;\n }\n else {\n var ob = val && val.__ob__;\n if (ob)\n ob.dep.depend();\n return val;\n }\n },\n set: function (value) {\n var oldValue = source[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n }\n else {\n source[key] = value;\n }\n }\n });\n}\nfunction customRef(factory) {\n var dep = new Dep();\n var _a = factory(function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n dep.depend();\n }\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value'\n });\n }\n else {\n dep.notify();\n }\n }), get = _a.get, set = _a.set;\n var ref = {\n get value() {\n return get();\n },\n set value(newVal) {\n set(newVal);\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\nfunction toRefs(object) {\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n warn(\"toRefs() expects a reactive object but received a plain one.\");\n }\n var ret = isArray(object) ? new Array(object.length) : {};\n for (var key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nfunction toRef(object, key, defaultValue) {\n var val = object[key];\n if (isRef(val)) {\n return val;\n }\n var ref = {\n get value() {\n var val = object[key];\n return val === undefined ? defaultValue : val;\n },\n set value(newVal) {\n object[key] = newVal;\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\nfunction readonly(target) {\n return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n if (!isPlainObject(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Vue 2 does not support readonly arrays.\");\n }\n else if (isCollectionType(target)) {\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n }\n else {\n warn(\"value cannot be made readonly: \".concat(typeof target));\n }\n }\n return target;\n }\n if (process.env.NODE_ENV !== 'production' && !Object.isExtensible(target)) {\n warn(\"Vue 2 does not support creating readonly proxy for non-extensible object.\");\n }\n // already a readonly object\n if (isReadonly(target)) {\n return target;\n }\n // already has a readonly proxy\n var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\n var existingProxy = target[existingFlag];\n if (existingProxy) {\n return existingProxy;\n }\n var proxy = Object.create(Object.getPrototypeOf(target));\n def(target, existingFlag, proxy);\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n if (isRef(target)) {\n def(proxy, RefFlag, true);\n }\n if (shallow || isShallow(target)) {\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n }\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n defineReadonlyProperty(proxy, target, keys[i], shallow);\n }\n return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n Object.defineProperty(proxy, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = target[key];\n return shallow || !isPlainObject(val) ? val : readonly(val);\n },\n set: function () {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n }\n });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n var getter;\n var setter;\n var onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = process.env.NODE_ENV !== 'production'\n ? function () {\n warn('Write operation failed: computed value is readonly');\n }\n : noop;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n var watcher = isServerRendering()\n ? null\n : new Watcher(currentInstance, getter, noop, { lazy: true });\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n watcher.onTrack = debugOptions.onTrack;\n watcher.onTrigger = debugOptions.onTrigger;\n }\n var ref = {\n // some libs rely on the presence effect for checking computed refs\n // from normal refs, but the implementation doesn't matter\n effect: watcher,\n get value() {\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n Dep.target.onTrack({\n effect: Dep.target,\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n watcher.depend();\n }\n return watcher.value;\n }\n else {\n return getter();\n }\n },\n set value(newVal) {\n setter(newVal);\n }\n };\n def(ref, RefFlag, true);\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n \"supports `watch(source, cb, options?) signature.\");\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n if (process.env.NODE_ENV !== 'production' && !cb) {\n if (immediate !== undefined) {\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n if (deep !== undefined) {\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n }\n var warnInvalidSource = function (s) {\n warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n \"function, a ref, a reactive object, or an array of these types.\");\n };\n var instance = currentInstance;\n var call = function (fn, type, args) {\n if (args === void 0) { args = null; }\n var res = invokeWithErrorHandling(fn, null, args, instance, type);\n if (deep && res && res.__ob__)\n res.__ob__.dep.depend();\n return res;\n };\n var getter;\n var forceTrigger = false;\n var isMultiSource = false;\n if (isRef(source)) {\n getter = function () { return source.value; };\n forceTrigger = isShallow(source);\n }\n else if (isReactive(source)) {\n getter = function () {\n source.__ob__.dep.depend();\n return source;\n };\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n getter = function () {\n return source.map(function (s) {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n s.__ob__.dep.depend();\n return traverse(s);\n }\n else if (isFunction(s)) {\n return call(s, WATCHER_GETTER);\n }\n else {\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n }\n });\n };\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = function () { return call(source, WATCHER_GETTER); };\n }\n else {\n // no cb -> simple effect\n getter = function () {\n if (instance && instance._isDestroyed) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return call(source, WATCHER, [onCleanup]);\n };\n }\n }\n else {\n getter = noop;\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n }\n if (cb && deep) {\n var baseGetter_1 = getter;\n getter = function () { return traverse(baseGetter_1()); };\n }\n var cleanup;\n var onCleanup = function (fn) {\n cleanup = watcher.onStop = function () {\n call(fn, WATCHER_CLEANUP);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isServerRendering()) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = noop;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n call(cb, WATCHER_CB, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return noop;\n }\n var watcher = new Watcher(currentInstance, getter, noop, {\n lazy: true\n });\n watcher.noRecurse = !cb;\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n // overwrite default run\n watcher.run = function () {\n if (!watcher.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n var newValue = watcher.get();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some(function (v, i) {\n return hasChanged(v, oldValue[i]);\n })\n : hasChanged(newValue, oldValue))) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n call(cb, WATCHER_CB, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n watcher.get();\n }\n };\n if (flush === 'sync') {\n watcher.update = watcher.run;\n }\n else if (flush === 'post') {\n watcher.post = true;\n watcher.update = function () { return queueWatcher(watcher); };\n }\n else {\n // pre\n watcher.update = function () {\n if (instance && instance === currentInstance && !instance._isMounted) {\n // pre-watcher triggered before\n var buffer = instance._preWatchers || (instance._preWatchers = []);\n if (buffer.indexOf(watcher) < 0)\n buffer.push(watcher);\n }\n else {\n queueWatcher(watcher);\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n watcher.onTrack = onTrack;\n watcher.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n watcher.run();\n }\n else {\n oldValue = watcher.get();\n }\n }\n else if (flush === 'post' && instance) {\n instance.$once('hook:mounted', function () { return watcher.get(); });\n }\n else {\n watcher.get();\n }\n return function () {\n watcher.teardown();\n };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n function EffectScope(detached) {\n if (detached === void 0) { detached = false; }\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n EffectScope.prototype.run = function (fn) {\n if (this.active) {\n var currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"cannot run an inactive effect scope.\");\n }\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.on = function () {\n activeEffectScope = this;\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.off = function () {\n activeEffectScope = this.parent;\n };\n EffectScope.prototype.stop = function (fromParent) {\n if (this.active) {\n var i = void 0, l = void 0;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].teardown();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n var last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n };\n return EffectScope;\n}());\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n if (scope === void 0) { scope = activeEffectScope; }\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"onScopeDispose() is called when there is no active effect scope\" +\n \" to be associated with.\");\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"provide() can only be used inside setup().\");\n }\n }\n else {\n // TS doesn't allow symbol as index type\n resolveProvided(currentInstance)[key] = value;\n }\n}\nfunction resolveProvided(vm) {\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n var existing = vm._provided;\n var parentProvides = vm.$parent && vm.$parent._provided;\n if (parentProvides === existing) {\n return (vm._provided = Object.create(parentProvides));\n }\n else {\n return existing;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n var instance = currentInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n var provides = instance.$parent && instance.$parent._provided;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance)\n : defaultValue;\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"inject() can only be used inside setup() or functional components.\");\n }\n}\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once,\n capture: capture,\n passive: passive\n };\n});\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var fns = invoker.fns;\n if (isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n }\n }\n else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n invoker.fns = fns;\n return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n }\n else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n }\n else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove(event.name, oldOn[name], event.capture);\n }\n }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n function wrappedHook() {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove$2(invoker.fns, wrappedHook);\n }\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n }\n else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n }\n else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return;\n }\n var res = {};\n var attrs = data.attrs, props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n \"\".concat(formatComponentName(\n // @ts-expect-error tag is string\n tag || Ctor), \", but the declared prop name is\") +\n \" \\\"\".concat(key, \"\\\". \") +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true;\n }\n else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true;\n }\n }\n return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. \n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedFile.vue?vue&type=template&id=3dc2f712&scoped=true\"\nimport script from \"./RecommendedFile.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedFile.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedFile.vue?vue&type=style&index=0&id=3dc2f712&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dc2f712\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesRecommendations.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesRecommendations.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"recommendation\",attrs:{\"tabindex\":\"0\",\"aria-describedby\":`recommendation-description-${_vm.id}`,\"title\":_vm.path},on:{\"click\":function($event){$event.preventDefault();return _vm.navigate.apply(null, arguments)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.navigate.apply(null, arguments)}}},[(_vm.isFolder)?_c('FolderIcon',{staticClass:\"thumbnail\"}):_c('div',{staticClass:\"thumbnail\",style:({ 'background-image': 'url(' + _vm.previewUrl + ')' })}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"file-name\"},[(_vm.extension)?[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.nameWithoutExtension))]),(_vm.extension)?_c('span',{staticClass:\"extension\"},[_vm._v(\".\"+_vm._s(_vm.extension))]):_vm._e()]:[_c('span',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.name))])]],2),_vm._v(\" \"),_c('div',{staticClass:\"reason\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.reason)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":`recommendation-description-${_vm.id}`}},[_vm._v(_vm._s(_vm.t('recommendations', 'Path name {path}', {path: _vm.path})))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesRecommendations.vue?vue&type=style&index=0&id=541b09ae&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesRecommendations.vue?vue&type=style&index=0&id=541b09ae&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesRecommendations.vue?vue&type=template&id=541b09ae&scoped=true\"\nimport script from \"./FilesRecommendations.vue?vue&type=script&lang=js\"\nexport * from \"./FilesRecommendations.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilesRecommendations.vue?vue&type=style&index=0&id=541b09ae&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"541b09ae\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.loading && _vm.enabled)?_c('div',[(_vm.recommendedFiles.length > 0)?_c('ul',{staticClass:\"group\",attrs:{\"id\":\"recommendations\"}},_vm._l((_vm.recommendedFiles),function(file){return _c('li',{key:file.id,staticClass:\"recommendation-item\"},[_c('RecommendedFile',{attrs:{\"id\":file.id,\"extension\":file.extension,\"mime-type\":file.mimeType,\"name\":file.name,\"directory\":file.directory,\"reason\":file.reason,\"has-preview\":file.hasPreview}})],1)}),0):_vm._e()]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"recommendations-setting-enabled\"}},[_c('NcCheckboxRadioSwitch',{attrs:{\"id\":\"recommendationsEnabledToggle\",\"checked\":_vm.enabled},on:{\"update:checked\":function($event){_vm.enabled=$event}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('recommendations', 'Show recommendations'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionButtonGroup-CRXLyFpx.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionButtonGroup-CRXLyFpx.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionButtonGroup-CRXLyFpx.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: `nc-action-button-group-${GenRandomId()}`\n };\n },\n methods: {\n t\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"li\", { staticClass: \"nc-button-group-base\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_vm.name ? _c(\"div\", { attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _c(\"ul\", { staticClass: \"nc-button-group-content\", attrs: { \"role\": \"group\", \"aria-labelledby\": _vm.name ? _vm.labelId : void 0 } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"d81f7625\"\n);\nconst NcActionButtonGroup = __component__.exports;\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-Uol_nwut.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionCaption-BNDtcWJ7.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionCaption-BNDtcWJ7.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionCaption-BNDtcWJ7.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionCaption\",\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n props: {\n /**\n * The caption's text\n */\n name: {\n type: String,\n required: true\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-caption\", attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7bf21eca\"\n);\nconst NcActionCaption = __component__.exports;\nexport {\n NcActionCaption as default\n};\n//# sourceMappingURL=NcActionCaption.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionCheckbox-C8I_k6NA.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionCheckbox-C8I_k6NA.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionCheckbox-C8I_k6NA.css';\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"change\",\n \"check\",\n \"uncheck\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n /**\n * Emitted when the checkbox state is changed\n *\n * @type {boolean}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"checked\", \"update:checked\");\n return {\n model\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * aria-checked attribute for role=\"menuitemcheckbox\"\n *\n * @return {'true'|'false'|undefined} aria-checked value if needed\n */\n ariaChecked() {\n if (this.isInSemanticMenu) {\n return this.model ? \"true\" : \"false\";\n }\n return void 0;\n }\n },\n methods: {\n checkInput() {\n this.$refs.label.click();\n },\n onChange(event) {\n this.model = this.$refs.checkbox.checked;\n this.$emit(\"change\", event);\n if (this.$refs.checkbox.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled }, attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"span\", { staticClass: \"action-checkbox\", attrs: { \"role\": _vm.isInSemanticMenu && \"menuitemcheckbox\", \"aria-checked\": _vm.ariaChecked } }, [_c(\"input\", { ref: \"checkbox\", staticClass: \"checkbox action-checkbox__checkbox\", class: { focusable: _vm.isFocusable }, attrs: { \"id\": _vm.id, \"disabled\": _vm.disabled, \"type\": \"checkbox\" }, domProps: { \"checked\": _vm.model, \"value\": _vm.value }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n return _vm.checkInput.apply(null, arguments);\n }, \"change\": _vm.onChange } }), _c(\"label\", { ref: \"label\", staticClass: \"action-checkbox__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"73edcb0b\"\n);\nconst NcActionCheckbox = __component__.exports;\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-D9aQuEYw.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionInput-BvPYSqDP.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionInput-BvPYSqDP.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcDateTimePickerNative-ZqMiOh_m.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcDateTimePickerNative-ZqMiOh_m.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcDateTimePickerNative-ZqMiOh_m.css';\nimport { u as useModelMigration } from \"../chunks/useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-B4ZR5mwH.mjs\";\nconst inputDateTypes = [\"date\", \"datetime-local\", \"month\", \"time\", \"week\"];\nconst _sfc_main = {\n name: \"NcDateTimePickerNative\",\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Date,\n default: void 0\n },\n /**\n * The date is – like the `Date` object in JavaScript – tied to UTC.\n * The selected time zone does not have an influence of the selected time and date value.\n * You have to translate the time yourself when you want to factor in time zones.\n * Pass null to clear the input field.\n */\n modelValue: {\n type: Date,\n default: null\n },\n /**\n * id attribute of the input field\n */\n id: {\n type: String,\n default: () => \"date-time-picker-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * type attribute of the input field\n * default type: String\n * The type of the input element, it can be `date`, `datetime-local`, `month`, `time`, `week`\n */\n type: {\n type: String,\n default: \"date\",\n validate: (name) => inputDateTypes.includes(name)\n },\n /**\n * text inside the label element\n * default type: String\n */\n label: {\n type: String,\n default: \"Please choose a date\"\n },\n /**\n * min attribute of the input field\n * default type: null\n */\n min: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * max attribute of the input field\n * default type: null\n */\n max: {\n type: [Boolean, Date],\n default: null\n },\n /**\n * Flag to hide the label\n * default type: String\n * The hidden input label for accessibility purposes.\n */\n hideLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcDateTimePickerNative in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /**\n * Emitted when the input value changes\n *\n * @return {Date} new chosen Date()\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n computed: {\n formattedValue() {\n return this.formatValue(this.model);\n },\n formattedMin() {\n if (this.min) {\n return this.formatValue(this.min);\n }\n return false;\n },\n formattedMax() {\n if (this.max) {\n return this.formatValue(this.max);\n }\n return false;\n },\n listeners() {\n return {\n ...this.$listeners,\n /**\n * Handle the input event\n *\n * @param {InputEvent} $event input event payloads\n */\n input: ($event) => {\n if (isNaN($event.target.valueAsNumber)) {\n this.model = null;\n } else if (this.type === \"time\") {\n const time = $event.target.value;\n if (this.model === \"\") {\n const { yyyy, MM, dd } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else {\n const { yyyy, MM, dd } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n }\n } else if (this.type === \"month\") {\n const MM = (new Date($event.target.value).getMonth() + 1).toString().padStart(2, \"0\");\n if (this.model === \"\") {\n const { yyyy, dd, hh, mm } = this.getReadableDate(/* @__PURE__ */ new Date());\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const { yyyy, dd, hh, mm } = this.getReadableDate(this.model);\n this.model = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n }\n } else {\n const timezoneOffsetSeconds = new Date($event.target.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = $event.target.valueAsNumber + timezoneOffsetSeconds;\n this.model = new Date(inputDateWithTimezone);\n }\n }\n };\n }\n },\n methods: {\n /**\n * Returns Object with string values of a Date\n *\n * @param {Date} value The selected value\n * @return {object|undefined}\n */\n getReadableDate(value) {\n if (value instanceof Date) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n },\n /**\n * Returns preformatted value for the input field\n *\n * @param {Date} value The selected value\n * @return {string|undefined}\n */\n formatValue(value) {\n if (value instanceof Date) {\n const { yyyy, MM, dd, hh, mm } = this.getReadableDate(value);\n if (this.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (this.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (this.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (this.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (this.type === \"week\") {\n const startDate = new Date(yyyy, 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value - startDate) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n } else {\n return \"\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"native-datetime-picker\" }, [_c(\"label\", { staticClass: \"native-datetime-picker--label\", class: { \"hidden-visually\": _vm.hideLabel }, attrs: { \"for\": _vm.id } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]), _c(\"input\", _vm._g(_vm._b({ staticClass: \"native-datetime-picker--input\", class: _vm.inputClass, attrs: { \"id\": _vm.id, \"type\": _vm.type, \"min\": _vm.formattedMin, \"max\": _vm.formattedMax }, domProps: { \"value\": _vm.formattedValue } }, \"input\", _vm.$attrs, false), _vm.listeners))]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"6c1feae8\"\n);\nconst NcDateTimePickerNative = __component__.exports;\nScopeComponent(NcDateTimePickerNative);\nexport {\n NcDateTimePickerNative as default\n};\n//# sourceMappingURL=NcDateTimePickerNative.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcPasswordField-mhXQk8aT.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcPasswordField-mhXQk8aT.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcInputField-CtUAgq1i.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcInputField-CtUAgq1i.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"AlertCircleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-circle-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst AlertCircle = __component__.exports;\nexport {\n AlertCircle as A\n};\n//# sourceMappingURL=AlertCircleOutline-DBxbepLy.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon check-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst Check = __component__.exports;\nexport {\n Check as C\n};\n//# sourceMappingURL=Check-BkThHPH7.mjs.map\n","import '../assets/NcInputField-CtUAgq1i.css';\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { i as isLegacy32 } from \"./legacy-MK4GvP26.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcInputField\",\n components: {\n NcButton,\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:modelValue` will also be 'number'\n */\n modelValue: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The type of the input element\n */\n type: {\n type: String,\n default: \"text\",\n validator: (value) => [\n \"text\",\n \"password\",\n \"email\",\n \"tel\",\n \"url\",\n \"search\",\n \"number\"\n ].includes(value)\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n *\n * Note: If the background color is not `--color-main-background` consider using an external label instead (see `labelOutside`).\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n default: false\n },\n /**\n * Label of the trailing button\n *\n * Required when showTrailingButton is set\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Specifies whether the input should have a pill form.\n * By default, input has rounded corners.\n */\n pill: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"trailing-button-click\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n isLegacy32,\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasTrailingIcon() {\n return this.success;\n },\n computedPlaceholder() {\n if (this.placeholder) {\n return this.placeholder;\n }\n if (this.label) {\n return isLegacy32 ? this.label : \"\";\n }\n return void 0;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n logger.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n const newValue = this.type === \"number\" && typeof this.model === \"number\" ? parseFloat(event.target.value, 10) : event.target.value;\n this.model = newValue;\n },\n handleTrailingButtonClick(event) {\n this.$emit(\"trailing-button-click\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"input-field\", class: {\n \"input-field--disabled\": _vm.disabled,\n \"input-field--error\": _vm.error,\n \"input-field--label-outside\": _vm.labelOutside || !_vm.isValidLabel,\n \"input-field--leading-icon\": !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default,\n \"input-field--success\": _vm.success,\n \"input-field--trailing-icon\": _vm.showTrailingButton || _vm.hasTrailingIcon,\n \"input-field--pill\": _vm.pill,\n \"input-field--legacy\": _vm.isLegacy32\n } }, [_c(\"div\", { staticClass: \"input-field__main-wrapper\" }, [_c(\"input\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"input-field__input\", class: [\n _vm.inputClass,\n {\n \"input-field__input--success\": _vm.success,\n \"input-field__input--error\": _vm.error\n }\n ], attrs: { \"id\": _vm.computedId, \"type\": _vm.type, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model?.toString() }, on: { \"input\": _vm.handleInput } }, \"input\", _vm.$attrs, false), _vm.$listeners)), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"input-field__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !!_vm.$scopedSlots.icon || !!_vm.$scopedSlots.default || !!_vm.$slots.default, expression: \"!!$scopedSlots.icon || !!$scopedSlots.default || !!$slots.default\" }], staticClass: \"input-field__icon input-field__icon--leading\" }, [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })], 2), _vm.showTrailingButton ? _c(\"NcButton\", { staticClass: \"input-field__trailing-button\", attrs: { \"aria-label\": _vm.trailingButtonLabel, \"disabled\": _vm.disabled, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.handleTrailingButtonClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trailing-button-icon\")];\n }, proxy: true }], null, true) }) : _vm.success || _vm.error ? _c(\"div\", { staticClass: \"input-field__icon input-field__icon--trailing\" }, [_vm.success ? _c(\"Check\", { staticStyle: { \"color\": \"var(--color-success-text)\" }, attrs: { \"size\": 20 } }) : _vm.error ? _c(\"AlertCircle\", { staticStyle: { \"color\": \"var(--color-error-text)\" }, attrs: { \"size\": 20 } }) : _vm._e()], 1) : _vm._e()], 1), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"input-field__helper-text-message\", class: {\n \"input-field__helper-text-message--error\": _vm.error,\n \"input-field__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"input-field__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"5c7bbaef\"\n);\nconst NcInputField = __component__.exports;\nexport {\n NcInputField as N\n};\n//# sourceMappingURL=NcInputField-DUtDY_1I.mjs.map\n","import '../assets/NcPasswordField-mhXQk8aT.css';\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { useVModel } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcInputField } from \"./NcInputField-DUtDY_1I.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, B as t29, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _sfc_main$2 = {\n name: \"EyeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconEye = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"EyeOffIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon eye-off-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconEyeOff = __component__$1.exports;\nregister(t29);\nconst passwordPolicy = loadState(\"core\", \"capabilities\", {}).password_policy || null;\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcPasswordField\",\n components: {\n NcInputField,\n IconEye,\n IconEyeOff\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n // Redefined props\n /**\n * Controls whether to display the trailing button.\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed NcInputField props, defined only by this component\n */\n trailingButtonLabel: void 0,\n // Custom props\n /**\n * Check if the user entered a valid password using the password_policy\n * app if available.\n *\n * Warning: this doesn't replace server side checking and will do nothing\n * if the password_policy app is disabled.\n */\n checkPasswordStrength: {\n type: Boolean,\n default: false\n },\n /**\n * The minlength property defines the minimum number of characters\n * (as UTF-16 code units) the user can enter\n */\n minlength: {\n type: Number,\n default: 0\n },\n /**\n * The maxlength property defines the maximum number of characters\n * (as UTF-16 code units) the user can enter\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Render as input[type=text] that looks like password field.\n * Allows to avoid unwanted password-specific browser behavior,\n * such as save or generate password prompt.\n * Useful for secret token fields.\n * Note: autocomplete=\"off\" is ignored by browsers.\n */\n asText: {\n type: Boolean,\n default: false\n },\n /**\n * Visibility of the password.\n * If this is set to `true` then the password will be shown to the user (input type will be set to `text`).\n */\n visible: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"valid\",\n \"invalid\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Triggers when the value inside the password field is\n * updated.\n *\n * @property {string} The new value\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * Updated visibility of the password\n *\n * @property {boolean} visible the new visibility state\n */\n \"update:visible\"\n ],\n setup(props, { emit }) {\n const model = useModelMigration(\"value\", \"update:value\");\n const visibility = useVModel(props, \"visible\", emit, { passive: true });\n return {\n t,\n model,\n visibility\n };\n },\n data() {\n return {\n internalHelpMessage: \"\",\n isValid: null\n };\n },\n computed: {\n computedError() {\n return this.error || this.isValid === false;\n },\n computedSuccess() {\n return this.success || this.isValid === true;\n },\n computedHelperText() {\n if (this.helperText.length > 0) {\n return this.helperText;\n }\n return this.internalHelpMessage;\n },\n rules() {\n const { minlength } = this;\n return {\n minlength: minlength ?? passwordPolicy?.minLength\n };\n },\n trailingButtonLabelPassword() {\n return this.visibility ? t(\"Hide password\") : t(\"Show password\");\n },\n propsAndAttrsToForward() {\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)))\n };\n }\n },\n watch: {\n model(newValue) {\n if (this.checkPasswordStrength) {\n if (passwordPolicy === null) {\n return;\n }\n this.checkPassword(newValue);\n }\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n },\n handleInput(event) {\n this.model = event.target.value;\n },\n toggleVisibility() {\n this.visibility = !this.visibility;\n },\n checkPassword: debounce(async function(password) {\n try {\n const { data } = await axios.post(generateOcsUrl(\"apps/password_policy/api/v1/validate\"), { password });\n this.isValid = data.ocs.data.passed;\n if (data.ocs.data.passed) {\n this.internalHelpMessage = t(\"Password is secure\");\n this.$emit(\"valid\");\n return;\n }\n this.internalHelpMessage = data.ocs.data.reason;\n this.$emit(\"invalid\");\n } catch (e) {\n logger.error(\"Password policy returned an error\", e);\n }\n }, 500)\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", attrs: { \"type\": _vm.visibility || _vm.asText ? \"text\" : \"password\", \"trailing-button-label\": _vm.trailingButtonLabelPassword, \"helper-text\": _vm.computedHelperText, \"error\": _vm.computedError, \"success\": _vm.computedSuccess, \"minlength\": _vm.rules.minlength, \"input-class\": { \"password-field__input--secure-text\": !_vm.visibility && _vm.asText } }, on: { \"trailing-button-click\": _vm.toggleVisibility, \"input\": _vm.handleInput }, scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, { key: \"trailing-button-icon\", fn: function() {\n return [_vm.visibility ? _c(\"IconEyeOff\", { attrs: { \"size\": 18 } }) : _c(\"IconEye\", { attrs: { \"size\": 18 } })];\n }, proxy: true }], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"822eec9d\"\n);\nconst NcPasswordField = __component__.exports;\nexport {\n NcPasswordField as N\n};\n//# sourceMappingURL=NcPasswordField-B91RnUSh.mjs.map\n","import { b as mdiUndo, c as mdiClose, d as mdiArrowRight } from \"./mdi-C_j0YT8c.mjs\";\nimport { N as NcInputField } from \"./NcInputField-DUtDY_1I.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, b as t52, c as t17, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t17, t52);\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props));\nconst _sfc_main = {\n name: \"NcTextField\",\n components: {\n NcIconSvgWrapper,\n NcInputField\n },\n // Allow forwarding all attributes\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {},\n // Reuse all the props from NcInputField for better typing and documentation\n ...NcInputField.props,\n /**\n * The `aria-label` to set on the trailing button\n * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n *\n * @default 'Clear text'|'Save changes'|'Undo changes'\n */\n trailingButtonLabel: {\n type: String,\n default: \"\"\n },\n // Custom props\n /**\n * Specifies which material design icon should be used for the trailing\n * button.\n *\n * The `'arrowRight'` value is deprecated and will be removed in the next major version.\n * Use `'arrowEnd'` instead.\n *\n * @type {'close'|'arrowEnd'|'arrowRight'|'undo'}\n */\n trailingButtonIcon: {\n type: String,\n default: \"close\",\n validator: (value) => [\n \"close\",\n \"arrowEnd\",\n \"arrowRight\",\n \"undo\"\n ].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n mdiArrowRight,\n mdiClose,\n mdiUndo\n };\n },\n computed: {\n /**\n * Is the trailing button icon directional.\n * Meaning the icon needs to be flipped on RTL text flow.\n */\n isArrow() {\n return this.trailingButtonIcon === \"arrowEnd\" || this.trailingButtonIcon === \"arrowRight\";\n },\n propsAndAttrsToForward() {\n const predefinedLabels = {\n arrowEnd: t(\"Save changes\"),\n arrowRight: t(\"Save changes\"),\n close: t(\"Clear text\"),\n undo: t(\"Undo changes\")\n };\n return {\n // Proxy all the HTML attributes\n ...this.$attrs,\n // Proxy original NcInputField's props\n ...Object.fromEntries(Object.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key))),\n // Adjust aria-label for predefined trailing buttons\n trailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon]\n };\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.inputField.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.inputField.select();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcInputField\", _vm._g(_vm._b({ ref: \"inputField\", scopedSlots: _vm._u([!!_vm.$scopedSlots.icon || !!_vm.$slots.default || !!_vm.$scopedSlots.default ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_vm._t(\"default\")];\n })];\n }, proxy: true } : null, _vm.type !== \"search\" ? { key: \"trailing-button-icon\", fn: function() {\n return [_vm.isArrow ? _c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiArrowRight } }) : _c(\"NcIconSvgWrapper\", { attrs: { \"path\": _vm.trailingButtonIcon === \"undo\" ? _vm.mdiUndo : _vm.mdiClose } })];\n }, proxy: true } : null], null, true) }, \"NcInputField\", _vm.propsAndAttrsToForward, false), _vm.$listeners));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcTextField = __component__.exports;\nexport {\n NcTextField as N\n};\n//# sourceMappingURL=NcTextField-CfZknuqx.mjs.map\n","import '../assets/NcActionInput-BvPYSqDP.css';\nimport { defineAsyncComponent } from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport NcDateTimePickerNative from \"../Components/NcDateTimePickerNative.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-B91RnUSh.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CfZknuqx.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../Components/NcColorPicker.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../Components/NcDateTimePicker.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../Components/NcSelect.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].indexOf(type) > -1;\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [String, Date, Number, Array],\n default: void 0\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n * otherwise root element will inherit incorrect aria-hidden.\n */\n ariaHidden: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n }\n },\n emits: [\n \"input\",\n \"submit\",\n \"change\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n * ! DatetimePicker only send the value\n *\n * @type {string|Date}\n */\n \"update:modelValue\",\n /** Same as `update:modelValue` but with a different event name */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target ? event.target.value : event;\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled } }, [_c(\"span\", { staticClass: \"action-input\", class: {\n \"action-input-picker--disabled\": _vm.disabled,\n \"action-input--visible-label\": _vm.labelOutside && _vm.label\n }, on: { \"mouseleave\": _vm.onLeave } }, [_c(\"span\", { staticClass: \"action-input__icon-wrapper\" }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-input__icon\", class: [_vm.isIconUrl ? \"action-input__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null }, attrs: { \"aria-hidden\": \"true\" } })];\n })], 2), _c(\"form\", { ref: \"form\", staticClass: \"action-input__form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.labelOutside ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_vm.datePickerType ? _c(\"NcDateTimePicker\", _vm._b({ ref: \"datetimepicker\", staticClass: \"action-input__datetimepicker\", staticStyle: { \"z-index\": \"99999999999\" }, attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"type\": _vm.datePickerType, \"input-class\": [\"mx-input\", { focusable: _vm.isFocusable }] }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcDateTimePicker\", _vm.$attrs, false)) : _vm.isNativePicker ? _c(\"NcDateTimePickerNative\", _vm._b({ staticClass: \"action-input__datetimepicker\", attrs: { \"id\": _vm.idNativeDateTimePicker, \"value\": _vm.model, \"type\": _vm.nativeDatePickerType, \"input-class\": { focusable: _vm.isFocusable } }, on: { \"update:model-value\": function($event) {\n _vm.model = $event;\n }, \"change\": function($event) {\n return _vm.$emit(\"change\", $event);\n } } }, \"NcDateTimePickerNative\", _vm.$attrs, false)) : _vm.isMultiselectType ? _c(\"NcSelect\", _vm._g(_vm._b({ staticClass: \"action-input__multi\", attrs: { \"value\": _vm.model, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"append-to-body\": _vm.$attrs.appendToBody || _vm.$attrs[\"append-to-body\"] || false, \"input-class\": { focusable: _vm.isFocusable } } }, \"NcSelect\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"password\" ? _c(\"NcPasswordField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcPasswordField\", _vm.$attrs, false), _vm.$listeners)) : _vm.type === \"color\" ? _c(\"div\", { staticClass: \"action-input__container\" }, [_vm.label && _vm.type === \"color\" ? _c(\"label\", { staticClass: \"action-input__text-label\", class: { \"action-input__text-label--hidden\": !_vm.labelOutside }, attrs: { \"for\": _vm.inputId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"action-input__input-container\" }, [_c(\"NcColorPicker\", _vm._g(_vm._b({ staticClass: \"colorpicker__trigger\", attrs: { \"id\": \"inputId\", \"value\": _vm.model }, on: { \"update:model-value\": _vm.onInput, \"submit\": function($event) {\n return _vm.$refs.form.requestSubmit();\n } } }, \"NcColorPicker\", _vm.$attrs, false), _vm.$listeners), [_c(\"button\", { staticClass: \"colorpicker__preview\", class: { focusable: _vm.isFocusable }, style: { \"background-color\": _vm.model } })])], 1)]) : _c(\"NcTextField\", _vm._g(_vm._b({ attrs: { \"id\": _vm.inputId, \"value\": _vm.model, \"label\": _vm.label, \"label-outside\": !_vm.label || _vm.labelOutside, \"placeholder\": _vm.text, \"disabled\": _vm.disabled, \"input-class\": { focusable: _vm.isFocusable }, \"type\": _vm.type, \"trailing-button-icon\": \"arrowRight\", \"trailing-button-label\": _vm.trailingButtonLabel, \"show-trailing-button\": _vm.showTrailingButton && !_vm.disabled }, on: { \"trailing-button-click\": function($event) {\n return _vm.$refs.form.requestSubmit();\n }, \"input\": _vm.onInput, \"change\": _vm.onChange } }, \"NcTextField\", _vm.$attrs, false), _vm.$listeners))], 1)])])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"29a30fef\"\n);\nconst NcActionInput = __component__.exports;\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-pjhToEAw.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionRadio-CLIRNp3t.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionRadio-CLIRNp3t.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionRadio-CLIRNp3t.css';\nimport Vue from \"vue\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-DqVa7c7G.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionRadio\",\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: false\n }\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the radio element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * Checked state of the radio element\n * Boolean type removed in v9 - use String | Number instead\n */\n modelValue: {\n type: [Boolean, String, Number],\n default: false\n },\n /**\n * Define if this radio is part of a set.\n * Checking the radio will disable all the\n * others with the same name.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * value of the radio input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the radio element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n /**\n * The radio state is changed\n *\n * @type {boolean}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"change\"\n ],\n setup(props) {\n if (typeof props.modelValue === \"boolean\") {\n Vue.util.warn(\"[NcActionRadio] Boolean type of `modelValue` is deprecated and will be removed in next versions\");\n }\n const model = useModelMigration(\"checked\", \"update:checked\");\n return {\n model\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * aria-checked attribute for role=\"menuitemcheckbox\"\n *\n * @return {'true'|'false'|undefined} aria-checked value if needed\n */\n ariaChecked() {\n if (this.isInSemanticMenu) {\n return this.model ? \"true\" : \"false\";\n }\n return void 0;\n }\n },\n methods: {\n toggleInput() {\n this.$refs.label.click();\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled }, attrs: { \"role\": _vm.isInSemanticMenu && \"presentation\" } }, [_c(\"span\", { staticClass: \"action-radio\", attrs: { \"role\": \"menuitemradio\", \"aria-checked\": _vm.ariaChecked } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.model, expression: \"model\" }], staticClass: \"radio action-radio__radio\", class: { focusable: _vm.isFocusable }, attrs: { \"id\": _vm.id, \"disabled\": _vm.disabled, \"name\": _vm.name, \"type\": \"radio\" }, domProps: { \"value\": _vm.value, \"checked\": _vm._q(_vm.model, _vm.value) }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n return _vm.toggleInput.apply(null, arguments);\n }, \"change\": [function($event) {\n _vm.model = _vm.value;\n }, _vm.onChange] } }), _c(\"label\", { ref: \"label\", staticClass: \"action-radio__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.text))]), _vm._e()], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9ee34172\"\n);\nconst NcActionRadio = __component__.exports;\nexport {\n NcActionRadio as N\n};\n//# sourceMappingURL=NcActionRadio-BmVR-lhZ.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionSeparator-Ct2RnclR.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionSeparator-Ct2RnclR.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action action-separator action--disabled\", attrs: { \"role\": \"separator\" } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3e2324b7\"\n);\nconst NcActionSeparator = __component__.exports;\nexport {\n NcActionSeparator as default\n};\n//# sourceMappingURL=NcActionSeparator.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcActionTextEditable-BCmDMuUg.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcActionTextEditable-BCmDMuUg.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcActionTextEditable-BCmDMuUg.css';\nimport { d as mdiArrowRight } from \"./mdi-C_j0YT8c.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { A as ActionTextMixin } from \"./actionText-BMig9Egt.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcActionTextEditable\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * disabled state of the text area\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: String,\n default: \"\"\n }\n },\n emits: [\n \"input\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n *\n * @type {string|Date}\n */\n \"update:modelValue\",\n /** Same as `update:modelValue` but with a different event name */\n \"update:model-value\",\n \"submit\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model,\n mdiArrowRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n computedId() {\n return GenRandomId();\n }\n },\n methods: {\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target.value;\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"action\", class: { \"action--disabled\": _vm.disabled } }, [_c(\"span\", { staticClass: \"action-text-editable\", on: { \"click\": _vm.onClick } }, [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"action-text-editable__icon\", class: [_vm.isIconUrl ? \"action-text-editable__icon--url\" : _vm.icon], style: { backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null } })];\n }), _c(\"form\", { ref: \"form\", staticClass: \"action-text-editable__form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"input\", { staticClass: \"action-text-editable__submit\", attrs: { \"id\": _vm.id, \"type\": \"submit\" } }), _vm.name ? _c(\"label\", { staticClass: \"action-text-editable__name\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _c(\"textarea\", _vm._b({ staticClass: \"action-text-editable__textarea\", class: { focusable: _vm.isFocusable }, attrs: { \"id\": _vm.computedId, \"disabled\": _vm.disabled }, domProps: { \"value\": _vm.model }, on: { \"input\": _vm.onInput } }, \"textarea\", _vm.$attrs, false)), _c(\"label\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.disabled, expression: \"!disabled\" }], staticClass: \"action-text-editable__label\", attrs: { \"for\": _vm.id } }, [_c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiArrowRight } })], 1)])], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"018dbbe8\"\n);\nconst NcActionTextEditable = __component__.exports;\nexport {\n NcActionTextEditable as N\n};\n//# sourceMappingURL=NcActionTextEditable-Bnt0-S7Y.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppContent-Ri_iNfn5.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppContent-Ri_iNfn5.css\";\n export default content && content.locals ? content.locals : undefined;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar splitpanes_vue_vue_type_style_index_0_lang = \"\";\nfunction normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render2) {\n options.render = render2;\n options.staticRenderFns = staticRenderFns2;\n options._compiled = true;\n }\n if (functionalTemplate) {\n options.functional = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n var hook;\n if (moduleIdentifier) {\n hook = function(context) {\n context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;\n if (!context && typeof __VUE_SSR_CONTEXT__ !== \"undefined\") {\n context = __VUE_SSR_CONTEXT__;\n }\n if (injectStyles) {\n injectStyles.call(this, context);\n }\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n options._ssrRegister = hook;\n } else if (injectStyles) {\n hook = shadowMode ? function() {\n injectStyles.call(this, (options.functional ? this.parent : this).$root.$options.shadowRoot);\n } : injectStyles;\n }\n if (hook) {\n if (options.functional) {\n options._injectStyles = hook;\n var originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst __vue2_script$1 = {\n name: \"splitpanes\",\n props: {\n horizontal: { type: Boolean },\n pushOtherPanes: { type: Boolean, default: true },\n dblClickSplitter: { type: Boolean, default: true },\n rtl: { type: Boolean, default: false },\n firstSplitter: { type: Boolean }\n },\n provide() {\n return {\n requestUpdate: this.requestUpdate,\n onPaneAdd: this.onPaneAdd,\n onPaneRemove: this.onPaneRemove,\n onPaneClick: this.onPaneClick\n };\n },\n data: () => ({\n container: null,\n ready: false,\n panes: [],\n touch: {\n mouseDown: false,\n dragging: false,\n activeSplitter: null\n },\n splitterTaps: {\n splitter: null,\n timeoutId: null\n }\n }),\n computed: {\n panesCount() {\n return this.panes.length;\n },\n indexedPanes() {\n return this.panes.reduce((obj, pane2) => (obj[pane2.id] = pane2) && obj, {});\n }\n },\n methods: {\n updatePaneComponents() {\n this.panes.forEach((pane2) => {\n pane2.update && pane2.update({\n [this.horizontal ? \"height\" : \"width\"]: `${this.indexedPanes[pane2.id].size}%`\n });\n });\n },\n bindEvents() {\n document.addEventListener(\"mousemove\", this.onMouseMove, { passive: false });\n document.addEventListener(\"mouseup\", this.onMouseUp);\n if (\"ontouchstart\" in window) {\n document.addEventListener(\"touchmove\", this.onMouseMove, { passive: false });\n document.addEventListener(\"touchend\", this.onMouseUp);\n }\n },\n unbindEvents() {\n document.removeEventListener(\"mousemove\", this.onMouseMove, { passive: false });\n document.removeEventListener(\"mouseup\", this.onMouseUp);\n if (\"ontouchstart\" in window) {\n document.removeEventListener(\"touchmove\", this.onMouseMove, { passive: false });\n document.removeEventListener(\"touchend\", this.onMouseUp);\n }\n },\n onMouseDown(event, splitterIndex) {\n this.bindEvents();\n this.touch.mouseDown = true;\n this.touch.activeSplitter = splitterIndex;\n },\n onMouseMove(event) {\n if (this.touch.mouseDown) {\n event.preventDefault();\n this.touch.dragging = true;\n this.calculatePanesSize(this.getCurrentMouseDrag(event));\n this.$emit(\"resize\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n }\n },\n onMouseUp() {\n if (this.touch.dragging) {\n this.$emit(\"resized\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n }\n this.touch.mouseDown = false;\n setTimeout(() => {\n this.touch.dragging = false;\n this.unbindEvents();\n }, 100);\n },\n onSplitterClick(event, splitterIndex) {\n if (\"ontouchstart\" in window) {\n event.preventDefault();\n if (this.dblClickSplitter) {\n if (this.splitterTaps.splitter === splitterIndex) {\n clearTimeout(this.splitterTaps.timeoutId);\n this.splitterTaps.timeoutId = null;\n this.onSplitterDblClick(event, splitterIndex);\n this.splitterTaps.splitter = null;\n } else {\n this.splitterTaps.splitter = splitterIndex;\n this.splitterTaps.timeoutId = setTimeout(() => {\n this.splitterTaps.splitter = null;\n }, 500);\n }\n }\n }\n if (!this.touch.dragging)\n this.$emit(\"splitter-click\", this.panes[splitterIndex]);\n },\n onSplitterDblClick(event, splitterIndex) {\n let totalMinSizes = 0;\n this.panes = this.panes.map((pane2, i) => {\n pane2.size = i === splitterIndex ? pane2.max : pane2.min;\n if (i !== splitterIndex)\n totalMinSizes += pane2.min;\n return pane2;\n });\n this.panes[splitterIndex].size -= totalMinSizes;\n this.$emit(\"pane-maximize\", this.panes[splitterIndex]);\n },\n onPaneClick(event, paneId) {\n this.$emit(\"pane-click\", this.indexedPanes[paneId]);\n },\n getCurrentMouseDrag(event) {\n const rect = this.container.getBoundingClientRect();\n const { clientX, clientY } = \"ontouchstart\" in window && event.touches ? event.touches[0] : event;\n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n },\n getCurrentDragPercentage(drag) {\n drag = drag[this.horizontal ? \"y\" : \"x\"];\n const containerSize = this.container[this.horizontal ? \"clientHeight\" : \"clientWidth\"];\n if (this.rtl && !this.horizontal)\n drag = containerSize - drag;\n return drag * 100 / containerSize;\n },\n calculatePanesSize(drag) {\n const splitterIndex = this.touch.activeSplitter;\n let sums = {\n prevPanesSize: this.sumPrevPanesSize(splitterIndex),\n nextPanesSize: this.sumNextPanesSize(splitterIndex),\n prevReachedMinPanes: 0,\n nextReachedMinPanes: 0\n };\n const minDrag = 0 + (this.pushOtherPanes ? 0 : sums.prevPanesSize);\n const maxDrag = 100 - (this.pushOtherPanes ? 0 : sums.nextPanesSize);\n const dragPercentage = Math.max(Math.min(this.getCurrentDragPercentage(drag), maxDrag), minDrag);\n let panesToResize = [splitterIndex, splitterIndex + 1];\n let paneBefore = this.panes[panesToResize[0]] || null;\n let paneAfter = this.panes[panesToResize[1]] || null;\n const paneBeforeMaxReached = paneBefore.max < 100 && dragPercentage >= paneBefore.max + sums.prevPanesSize;\n const paneAfterMaxReached = paneAfter.max < 100 && dragPercentage <= 100 - (paneAfter.max + this.sumNextPanesSize(splitterIndex + 1));\n if (paneBeforeMaxReached || paneAfterMaxReached) {\n if (paneBeforeMaxReached) {\n paneBefore.size = paneBefore.max;\n paneAfter.size = Math.max(100 - paneBefore.max - sums.prevPanesSize - sums.nextPanesSize, 0);\n } else {\n paneBefore.size = Math.max(100 - paneAfter.max - sums.prevPanesSize - this.sumNextPanesSize(splitterIndex + 1), 0);\n paneAfter.size = paneAfter.max;\n }\n return;\n }\n if (this.pushOtherPanes) {\n const vars = this.doPushOtherPanes(sums, dragPercentage);\n if (!vars)\n return;\n ({ sums, panesToResize } = vars);\n paneBefore = this.panes[panesToResize[0]] || null;\n paneAfter = this.panes[panesToResize[1]] || null;\n }\n if (paneBefore !== null) {\n paneBefore.size = Math.min(Math.max(dragPercentage - sums.prevPanesSize - sums.prevReachedMinPanes, paneBefore.min), paneBefore.max);\n }\n if (paneAfter !== null) {\n paneAfter.size = Math.min(Math.max(100 - dragPercentage - sums.nextPanesSize - sums.nextReachedMinPanes, paneAfter.min), paneAfter.max);\n }\n },\n doPushOtherPanes(sums, dragPercentage) {\n const splitterIndex = this.touch.activeSplitter;\n const panesToResize = [splitterIndex, splitterIndex + 1];\n if (dragPercentage < sums.prevPanesSize + this.panes[panesToResize[0]].min) {\n panesToResize[0] = this.findPrevExpandedPane(splitterIndex).index;\n sums.prevReachedMinPanes = 0;\n if (panesToResize[0] < splitterIndex) {\n this.panes.forEach((pane2, i) => {\n if (i > panesToResize[0] && i <= splitterIndex) {\n pane2.size = pane2.min;\n sums.prevReachedMinPanes += pane2.min;\n }\n });\n }\n sums.prevPanesSize = this.sumPrevPanesSize(panesToResize[0]);\n if (panesToResize[0] === void 0) {\n sums.prevReachedMinPanes = 0;\n this.panes[0].size = this.panes[0].min;\n this.panes.forEach((pane2, i) => {\n if (i > 0 && i <= splitterIndex) {\n pane2.size = pane2.min;\n sums.prevReachedMinPanes += pane2.min;\n }\n });\n this.panes[panesToResize[1]].size = 100 - sums.prevReachedMinPanes - this.panes[0].min - sums.prevPanesSize - sums.nextPanesSize;\n return null;\n }\n }\n if (dragPercentage > 100 - sums.nextPanesSize - this.panes[panesToResize[1]].min) {\n panesToResize[1] = this.findNextExpandedPane(splitterIndex).index;\n sums.nextReachedMinPanes = 0;\n if (panesToResize[1] > splitterIndex + 1) {\n this.panes.forEach((pane2, i) => {\n if (i > splitterIndex && i < panesToResize[1]) {\n pane2.size = pane2.min;\n sums.nextReachedMinPanes += pane2.min;\n }\n });\n }\n sums.nextPanesSize = this.sumNextPanesSize(panesToResize[1] - 1);\n if (panesToResize[1] === void 0) {\n sums.nextReachedMinPanes = 0;\n this.panes[this.panesCount - 1].size = this.panes[this.panesCount - 1].min;\n this.panes.forEach((pane2, i) => {\n if (i < this.panesCount - 1 && i >= splitterIndex + 1) {\n pane2.size = pane2.min;\n sums.nextReachedMinPanes += pane2.min;\n }\n });\n this.panes[panesToResize[0]].size = 100 - sums.prevPanesSize - sums.nextReachedMinPanes - this.panes[this.panesCount - 1].min - sums.nextPanesSize;\n return null;\n }\n }\n return { sums, panesToResize };\n },\n sumPrevPanesSize(splitterIndex) {\n return this.panes.reduce((total, pane2, i) => total + (i < splitterIndex ? pane2.size : 0), 0);\n },\n sumNextPanesSize(splitterIndex) {\n return this.panes.reduce((total, pane2, i) => total + (i > splitterIndex + 1 ? pane2.size : 0), 0);\n },\n findPrevExpandedPane(splitterIndex) {\n const pane2 = [...this.panes].reverse().find((p) => p.index < splitterIndex && p.size > p.min);\n return pane2 || {};\n },\n findNextExpandedPane(splitterIndex) {\n const pane2 = this.panes.find((p) => p.index > splitterIndex + 1 && p.size > p.min);\n return pane2 || {};\n },\n checkSplitpanesNodes() {\n const children = Array.from(this.container.children);\n children.forEach((child) => {\n const isPane = child.classList.contains(\"splitpanes__pane\");\n const isSplitter = child.classList.contains(\"splitpanes__splitter\");\n if (!isPane && !isSplitter) {\n child.parentNode.removeChild(child);\n console.warn(\"Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.\");\n return;\n }\n });\n },\n addSplitter(paneIndex, nextPaneNode, isVeryFirst = false) {\n const splitterIndex = paneIndex - 1;\n const elm = document.createElement(\"div\");\n elm.classList.add(\"splitpanes__splitter\");\n if (!isVeryFirst) {\n elm.onmousedown = (event) => this.onMouseDown(event, splitterIndex);\n if (typeof window !== \"undefined\" && \"ontouchstart\" in window) {\n elm.ontouchstart = (event) => this.onMouseDown(event, splitterIndex);\n }\n elm.onclick = (event) => this.onSplitterClick(event, splitterIndex + 1);\n }\n if (this.dblClickSplitter) {\n elm.ondblclick = (event) => this.onSplitterDblClick(event, splitterIndex + 1);\n }\n nextPaneNode.parentNode.insertBefore(elm, nextPaneNode);\n },\n removeSplitter(node) {\n node.onmousedown = void 0;\n node.onclick = void 0;\n node.ondblclick = void 0;\n node.parentNode.removeChild(node);\n },\n redoSplitters() {\n const children = Array.from(this.container.children);\n children.forEach((el) => {\n if (el.className.includes(\"splitpanes__splitter\"))\n this.removeSplitter(el);\n });\n let paneIndex = 0;\n children.forEach((el) => {\n if (el.className.includes(\"splitpanes__pane\")) {\n if (!paneIndex && this.firstSplitter)\n this.addSplitter(paneIndex, el, true);\n else if (paneIndex)\n this.addSplitter(paneIndex, el);\n paneIndex++;\n }\n });\n },\n requestUpdate(_a) {\n var _b = _a, { target } = _b, args = __objRest(_b, [\"target\"]);\n const pane2 = this.indexedPanes[target._uid];\n Object.entries(args).forEach(([key, value]) => pane2[key] = value);\n },\n onPaneAdd(pane2) {\n let index = -1;\n Array.from(pane2.$el.parentNode.children).some((el) => {\n if (el.className.includes(\"splitpanes__pane\"))\n index++;\n return el === pane2.$el;\n });\n const min = parseFloat(pane2.minSize);\n const max = parseFloat(pane2.maxSize);\n this.panes.splice(index, 0, {\n id: pane2._uid,\n index,\n min: isNaN(min) ? 0 : min,\n max: isNaN(max) ? 100 : max,\n size: pane2.size === null ? null : parseFloat(pane2.size),\n givenSize: pane2.size,\n update: pane2.update\n });\n this.panes.forEach((p, i) => p.index = i);\n if (this.ready) {\n this.$nextTick(() => {\n this.redoSplitters();\n this.resetPaneSizes({ addedPane: this.panes[index] });\n this.$emit(\"pane-add\", { index, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) });\n });\n }\n },\n onPaneRemove(pane2) {\n const index = this.panes.findIndex((p) => p.id === pane2._uid);\n const removed = this.panes.splice(index, 1)[0];\n this.panes.forEach((p, i) => p.index = i);\n this.$nextTick(() => {\n this.redoSplitters();\n this.resetPaneSizes({ removedPane: __spreadProps(__spreadValues({}, removed), { index }) });\n this.$emit(\"pane-remove\", { removed, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) });\n });\n },\n resetPaneSizes(changedPanes = {}) {\n if (!changedPanes.addedPane && !changedPanes.removedPane)\n this.initialPanesSizing();\n else if (this.panes.some((pane2) => pane2.givenSize !== null || pane2.min || pane2.max < 100))\n this.equalizeAfterAddOrRemove(changedPanes);\n else\n this.equalize();\n if (this.ready)\n this.$emit(\"resized\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n },\n equalize() {\n const equalSpace = 100 / this.panesCount;\n let leftToAllocate = 0;\n let ungrowable = [];\n let unshrinkable = [];\n this.panes.forEach((pane2) => {\n pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min);\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (leftToAllocate > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n },\n initialPanesSizing() {\n 100 / this.panesCount;\n let leftToAllocate = 100;\n let ungrowable = [];\n let unshrinkable = [];\n let definedSizes = 0;\n this.panes.forEach((pane2) => {\n leftToAllocate -= pane2.size;\n if (pane2.size !== null)\n definedSizes++;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n let leftToAllocate2 = 100;\n if (leftToAllocate > 0.1) {\n this.panes.forEach((pane2) => {\n if (pane2.size === null) {\n pane2.size = Math.max(Math.min(leftToAllocate / (this.panesCount - definedSizes), pane2.max), pane2.min);\n }\n leftToAllocate2 -= pane2.size;\n });\n if (leftToAllocate2 > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n }\n },\n equalizeAfterAddOrRemove({ addedPane, removedPane } = {}) {\n let equalSpace = 100 / this.panesCount;\n let leftToAllocate = 0;\n let ungrowable = [];\n let unshrinkable = [];\n if (addedPane && addedPane.givenSize !== null) {\n equalSpace = (100 - addedPane.givenSize) / (this.panesCount - 1);\n }\n this.panes.forEach((pane2) => {\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (Math.abs(leftToAllocate) < 0.1)\n return;\n this.panes.forEach((pane2) => {\n if (addedPane && addedPane.givenSize !== null && addedPane.id === pane2.id)\n ;\n else\n pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min);\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (leftToAllocate > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n },\n readjustSizes(leftToAllocate, ungrowable, unshrinkable) {\n let equalSpaceToAllocate;\n if (leftToAllocate > 0)\n equalSpaceToAllocate = leftToAllocate / (this.panesCount - ungrowable.length);\n else\n equalSpaceToAllocate = leftToAllocate / (this.panesCount - unshrinkable.length);\n this.panes.forEach((pane2, i) => {\n if (leftToAllocate > 0 && !ungrowable.includes(pane2.id)) {\n const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min);\n const allocated = newPaneSize - pane2.size;\n leftToAllocate -= allocated;\n pane2.size = newPaneSize;\n } else if (!unshrinkable.includes(pane2.id)) {\n const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min);\n const allocated = newPaneSize - pane2.size;\n leftToAllocate -= allocated;\n pane2.size = newPaneSize;\n }\n pane2.update({\n [this.horizontal ? \"height\" : \"width\"]: `${this.indexedPanes[pane2.id].size}%`\n });\n });\n if (Math.abs(leftToAllocate) > 0.1) {\n this.$nextTick(() => {\n if (this.ready) {\n console.warn(\"Splitpanes: Could not resize panes correctly due to their constraints.\");\n }\n });\n }\n }\n },\n watch: {\n panes: {\n deep: true,\n immediate: false,\n handler() {\n this.updatePaneComponents();\n }\n },\n horizontal() {\n this.updatePaneComponents();\n },\n firstSplitter() {\n this.redoSplitters();\n },\n dblClickSplitter(enable) {\n const splitters = [...this.container.querySelectorAll(\".splitpanes__splitter\")];\n splitters.forEach((splitter, i) => {\n splitter.ondblclick = enable ? (event) => this.onSplitterDblClick(event, i) : void 0;\n });\n }\n },\n beforeDestroy() {\n this.ready = false;\n },\n mounted() {\n this.container = this.$refs.container;\n this.checkSplitpanesNodes();\n this.redoSplitters();\n this.resetPaneSizes();\n this.$emit(\"ready\");\n this.ready = true;\n },\n render(h) {\n return h(\"div\", {\n ref: \"container\",\n class: [\n \"splitpanes\",\n `splitpanes--${this.horizontal ? \"horizontal\" : \"vertical\"}`,\n {\n \"splitpanes--dragging\": this.touch.dragging\n }\n ]\n }, this.$slots.default);\n }\n};\nlet __vue2_render, __vue2_staticRenderFns;\nconst __cssModules$1 = {};\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(__vue2_script$1, __vue2_render, __vue2_staticRenderFns, false, __vue2_injectStyles$1, null, null, null);\nfunction __vue2_injectStyles$1(context) {\n for (let o in __cssModules$1) {\n this[o] = __cssModules$1[o];\n }\n}\nvar splitpanes = /* @__PURE__ */ function() {\n return __component__$1.exports;\n}();\nvar render = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { staticClass: \"splitpanes__pane\", style: _vm.style, on: { \"click\": function($event) {\n return _vm.onPaneClick($event, _vm._uid);\n } } }, [_vm._t(\"default\")], 2);\n};\nvar staticRenderFns = [];\nconst __vue2_script = {\n name: \"pane\",\n inject: [\"requestUpdate\", \"onPaneAdd\", \"onPaneRemove\", \"onPaneClick\"],\n props: {\n size: { type: [Number, String], default: null },\n minSize: { type: [Number, String], default: 0 },\n maxSize: { type: [Number, String], default: 100 }\n },\n data: () => ({\n style: {}\n }),\n mounted() {\n this.onPaneAdd(this);\n },\n beforeDestroy() {\n this.onPaneRemove(this);\n },\n methods: {\n update(style) {\n this.style = style;\n }\n },\n computed: {\n sizeNumber() {\n return this.size || this.size === 0 ? parseFloat(this.size) : null;\n },\n minSizeNumber() {\n return parseFloat(this.minSize);\n },\n maxSizeNumber() {\n return parseFloat(this.maxSize);\n }\n },\n watch: {\n sizeNumber(size) {\n this.requestUpdate({ target: this, size });\n },\n minSizeNumber(min) {\n this.requestUpdate({ target: this, min });\n },\n maxSizeNumber(max) {\n this.requestUpdate({ target: this, max });\n }\n }\n};\nconst __cssModules = {};\nvar __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null);\nfunction __vue2_injectStyles(context) {\n for (let o in __cssModules) {\n this[o] = __cssModules[o];\n }\n}\nvar pane = /* @__PURE__ */ function() {\n return __component__.exports;\n}();\nexport { pane as Pane, splitpanes as Splitpanes };\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"ArrowLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon arrow-left-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst ArrowLeft = __component__.exports;\nexport {\n ArrowLeft as A\n};\n//# sourceMappingURL=ArrowLeft-DuT2LZOm.mjs.map\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"ArrowRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon arrow-right-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst ArrowRight = __component__.exports;\nexport {\n ArrowRight as A\n};\n//# sourceMappingURL=ArrowRight-CY2b9hgN.mjs.map\n","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!./splitpanes.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!./splitpanes.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppContent-Ri_iNfn5.css';\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { Splitpanes, Pane } from \"splitpanes\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, G as t27, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { isRTL } from \"@nextcloud/l10n\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"splitpanes/dist/splitpanes.css\";\nregister(t27);\nconst isRtl = isRTL();\nconst _sfc_main$1 = {\n name: \"NcAppContentDetailsToggle\",\n components: {\n ArrowRight,\n ArrowLeft,\n NcButton\n },\n setup() {\n return {\n isRtl,\n isMobile: useIsMobile()\n };\n },\n computed: {\n title() {\n return t(\"Go back to the list\");\n }\n },\n watch: {\n isMobile: function() {\n this.toggleAppNavigationButton(this.isMobile);\n }\n },\n mounted() {\n this.toggleAppNavigationButton(this.isMobile);\n },\n beforeDestroy() {\n if (this.isMobile) {\n this.toggleAppNavigationButton(false);\n }\n },\n methods: {\n toggleAppNavigationButton(hide = true) {\n const appNavigationToggle = document.querySelector(\".app-navigation .app-navigation-toggle\");\n if (appNavigationToggle) {\n appNavigationToggle.style.display = hide ? \"none\" : null;\n if (hide === true) {\n emit(\"toggle-navigation\", { open: false });\n }\n }\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"app-details-toggle\", class: { \"app-details-toggle--mobile\": _vm.isMobile }, attrs: { \"aria-label\": _vm.title, \"title\": _vm.title, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.isRtl ? _c(\"ArrowLeft\", { attrs: { \"size\": 20 } }) : _c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"d0b1a8bc\"\n);\nconst NcAppContentDetailsToggle = __component__$1.exports;\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nconst instanceName = getCapabilities().theming?.name ?? \"Nextcloud\";\nconst activeApp = loadState(\"core\", \"active-app\", appName);\nconst localizedAppNameState = loadState(\"core\", \"apps\", {});\nconst localizedAppName = (Array.isArray(localizedAppNameState) ? localizedAppNameState.find((app) => app.id === activeApp)?.name : localizedAppNameState[activeApp]?.name) ?? appName;\nconst _sfc_main = {\n name: \"NcAppContent\",\n components: {\n NcAppContentDetailsToggle,\n Pane,\n Splitpanes\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state\n *\n * @deprecated will be removed with the next version - use `disableSwipe` instead\n */\n allowSwipeNavigation: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Allows to disable the control by swipe of the app navigation open state.\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * or respectively the default height on horizontal-split.\n *\n * Must be between `listMinWidth` and `listMaxWidth`.\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * or respectively the minimum height on horizontal-split.\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * or respectively the maximum height on horizontal-split.\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown.\n *\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(value) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(value);\n }\n },\n /**\n * Specify the `

` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Allow setting the page's ``\n *\n * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n */\n pageTitle: {\n type: String,\n default: null\n }\n },\n emits: [\n \"update:showDetails\",\n \"resize-list\",\n \"resize:list\"\n ],\n setup() {\n return {\n isMobile: useIsMobile(),\n isRtl\n };\n },\n data() {\n return {\n contentHeight: 0,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\") {\n return `pane-list-size-${this.paneConfigKey}`;\n }\n try {\n return `pane-list-size-${appName}`;\n } catch {\n logger.info(\"[NcAppContent]: falling back to global nextcloud pane config\");\n return \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n if (this.listPaneSize) {\n return 100 - this.listPaneSize;\n }\n return this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n },\n realPageTitle() {\n const entries = /* @__PURE__ */ new Set();\n if (this.pageTitle) {\n for (const part of this.pageTitle.split(\" - \")) {\n entries.add(part);\n }\n } else if (this.pageHeading) {\n for (const part of this.pageHeading.split(\" - \")) {\n entries.add(part);\n }\n if (entries.size > 0) {\n entries.add(localizedAppName);\n }\n } else {\n return null;\n }\n entries.add(instanceName);\n return [...entries.values()].join(\" - \");\n }\n },\n watch: {\n realPageTitle: {\n immediate: true,\n handler() {\n if (this.realPageTitle !== null) {\n document.title = this.realPageTitle;\n }\n }\n },\n paneConfigKey: {\n immediate: true,\n handler() {\n this.restorePaneConfig();\n }\n }\n },\n mounted() {\n if (this.allowSwipeNavigation && !this.disableSwipe) {\n this.swiping = useSwipe(this.$el, {\n onSwipeEnd: this.handleSwipe\n });\n }\n this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, direction) {\n const minSwipeX = 70;\n const touchZone = 300;\n if (Math.abs(this.swiping.lengthX) > minSwipeX) {\n if (this.swiping.coordsStart.x < touchZone / 2 && direction === \"right\") {\n emit(\"toggle-navigation\", {\n open: true\n });\n } else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === \"left\") {\n emit(\"toggle-navigation\", {\n open: false\n });\n }\n }\n },\n handlePaneResize(event) {\n const listPaneSize = parseInt(event[0].size, 10);\n browserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize));\n this.listPaneSize = listPaneSize;\n this.$emit(\"resize:list\", { size: listPaneSize });\n this.$emit(\"resize-list\", { size: listPaneSize });\n logger.debug(\"AppContent pane config\", { size: listPaneSize });\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10);\n if (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n logger.debug(\"AppContent pane config\", listPaneSize);\n this.listPaneSize = listPaneSize;\n return listPaneSize;\n }\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", false);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"main\", { staticClass: \"app-content no-snapper\", class: { \"app-content--has-list\": !!_vm.$scopedSlots.list }, attrs: { \"id\": \"app-content-vue\" } }, [_vm.pageHeading ? _c(\"h1\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_vm.pageHeading) + \" \")]) : _vm._e(), !!_vm.$scopedSlots.list ? [_vm.isMobile || _vm.layout === \"no-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper app-content-wrapper--no-split\", class: {\n \"app-content-wrapper--show-details\": _vm.showDetails,\n \"app-content-wrapper--show-list\": !_vm.showDetails,\n \"app-content-wrapper--mobile\": _vm.isMobile\n } }, [_vm.showDetails ? _c(\"NcAppContentDetailsToggle\", { nativeOn: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.hideDetails.apply(null, arguments);\n } } }) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.showDetails, expression: \"!showDetails\" }] }, [_vm._t(\"list\")], 2), _vm.showDetails ? _vm._t(\"default\") : _vm._e()], 2) : _vm.layout === \"vertical-split\" || _vm.layout === \"horizontal-split\" ? _c(\"div\", { staticClass: \"app-content-wrapper\" }, [_c(\"Splitpanes\", { staticClass: \"default-theme\", class: {\n \"splitpanes--horizontal\": _vm.layout === \"horizontal-split\",\n \"splitpanes--vertical\": _vm.layout === \"vertical-split\"\n }, attrs: { \"horizontal\": _vm.layout === \"horizontal-split\", \"rtl\": _vm.isRtl }, on: { \"resized\": _vm.handlePaneResize } }, [_c(\"Pane\", { staticClass: \"splitpanes__pane-list\", attrs: { \"size\": _vm.listPaneSize || _vm.paneDefaults.list.size, \"min-size\": _vm.paneDefaults.list.min, \"max-size\": _vm.paneDefaults.list.max } }, [_vm._t(\"list\")], 2), _c(\"Pane\", { staticClass: \"splitpanes__pane-details\", attrs: { \"size\": _vm.detailsPaneSize, \"min-size\": _vm.paneDefaults.details.min, \"max-size\": _vm.paneDefaults.details.max } }, [_vm._t(\"default\")], 2)], 1)], 1) : _vm._e()] : _vm._e(), !_vm.$scopedSlots.list ? _vm._t(\"default\") : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"cc483103\"\n);\nconst NcAppContent = __component__.exports;\nexport {\n NcAppContent as N\n};\n//# sourceMappingURL=NcAppContent-CABHzKrx.mjs.map\n","import { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppContentDetails\"\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-content-details\" }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcAppContentDetails = __component__.exports;\nexport {\n NcAppContentDetails as default\n};\n//# sourceMappingURL=NcAppContentDetails.mjs.map\n","import { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppContentList\",\n props: {\n /**\n * Is the list selected\n */\n selection: {\n type: Boolean,\n default: false\n },\n /**\n * Is the details pane shown\n */\n showDetails: {\n type: Boolean,\n default: false\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-content-list\", class: { selection: _vm.selection, showdetails: _vm.showDetails } }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcAppContentList = __component__.exports;\nexport {\n NcAppContentList as default\n};\n//# sourceMappingURL=NcAppContentList.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigation-Bg4Oe7WC.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigation-Bg4Oe7WC.css\";\n export default content && content.locals ? content.locals : undefined;\n","const isMac = /mac|ipad|iphone|darwin/i.test(navigator.userAgent);\nexport {\n isMac as i\n};\n//# sourceMappingURL=platform-CC2ecGvV.mjs.map\n","import { onKeyStroke } from \"@vueuse/core\";\nimport { i as isMac } from \"../chunks/platform-CC2ecGvV.mjs\";\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst derivedKeysRegex = /^[a-zA-Z0-9]$/;\nconst nonAsciiPrintableRegex = /^[^\\x20-\\x7F]$/;\nfunction shouldIgnoreEvent(event) {\n if (!(event.target instanceof HTMLElement) || event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || event.target.isContentEditable) {\n return true;\n }\n return document.getElementsByClassName(\"modal-mask\").length !== 0;\n}\nfunction eventHandler(callback, options) {\n return (event) => {\n const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;\n if (ctrlKeyPressed !== Boolean(options.ctrl)) {\n return;\n } else if (event.altKey !== Boolean(options.alt)) {\n return;\n } else if (options.shift !== void 0 && event.shiftKey !== Boolean(options.shift)) {\n return;\n } else if (shouldIgnoreEvent(event)) {\n return;\n }\n if (options.prevent) {\n event.preventDefault();\n }\n if (options.stop) {\n event.stopPropagation();\n }\n callback(event);\n };\n}\nfunction useHotKey(keysOrFilter, callback = () => {\n}, options = {}) {\n if (disableKeyboardShortcuts) {\n return () => {\n };\n }\n const validateKeyEvent = (event, key) => {\n if (event.key === key) {\n return true;\n }\n if (options.caseSensitive) {\n const isKeyInLowerCase = key === key.toLowerCase();\n const isEventKeyInLowerCase = event.key === event.key.toLowerCase();\n if (isKeyInLowerCase !== isEventKeyInLowerCase) {\n return false;\n }\n }\n if (derivedKeysRegex.test(key) && nonAsciiPrintableRegex.test(event.key)) {\n return event.code.replace(/^(?:Key|Digit|Numpad)/, \"\") === key.toUpperCase();\n }\n return event.key.toLowerCase() === key.toLowerCase();\n };\n const keyFilter = (event) => {\n if (typeof keysOrFilter === \"function\") {\n return keysOrFilter(event);\n } else if (typeof keysOrFilter === \"string\") {\n return validateKeyEvent(event, keysOrFilter);\n } else if (Array.isArray(keysOrFilter)) {\n return keysOrFilter.some((key) => validateKeyEvent(event, key));\n } else {\n return true;\n }\n };\n const stopKeyDown = onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keydown\",\n dedupe: true,\n passive: !options.prevent\n });\n const stopKeyUp = options.push ? onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keyup\",\n passive: !options.prevent\n }) : () => {\n };\n return () => {\n stopKeyDown();\n stopKeyUp();\n };\n}\nexport {\n useHotKey\n};\n//# sourceMappingURL=useHotKey.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationList-DnKj0-Zq.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationList-DnKj0-Zq.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationList-DnKj0-Zq.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationList\"\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"ul\", { staticClass: \"app-navigation-list\" }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"058e6060\"\n);\nconst NcAppNavigationList = __component__.exports;\nexport {\n NcAppNavigationList as default\n};\n//# sourceMappingURL=NcAppNavigationList.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationToggle-DgwbZOWc.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationToggle-DgwbZOWc.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationToggle-DgwbZOWc.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, C as t19, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nconst _sfc_main$2 = {\n name: \"MenuIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon menu-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst MenuIcon = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"MenuOpenIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon menu-open-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst MenuOpenIcon = __component__$1.exports;\nregister(t19);\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst _sfc_main = {\n name: \"NcAppNavigationToggle\",\n components: {\n NcButton,\n MenuIcon,\n MenuOpenIcon\n },\n props: {\n /**\n * Tracks whether the toggle has been clicked or not.\n * If it has been clicked, switches between the different MenuIcons\n * and emits a boolean indicating its opened status\n */\n open: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"update:open\"],\n setup() {\n return { disableKeyboardShortcuts };\n },\n computed: {\n label() {\n return this.open ? t(\"Close navigation\") : t(\"Open navigation {shortcut}\", { shortcut: disableKeyboardShortcuts ? \"\" : \"[n]\" }).trim();\n }\n },\n methods: {\n /**\n * Once the toggle has been clicked, emits the toggle status\n * so parent components can gauge the status of the navigation button\n */\n toggleNavigation() {\n this.$emit(\"update:open\", !this.open);\n }\n }\n};\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-toggle-wrapper\" }, [_c(\"NcButton\", { staticClass: \"app-navigation-toggle\", attrs: { \"aria-controls\": \"app-navigation-vue\", \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"aria-keyshortcuts\": _vm.disableKeyboardShortcuts ? \"\" : \"n\", \"aria-label\": _vm.label, \"title\": _vm.label, \"variant\": \"tertiary\" }, on: { \"click\": _vm.toggleNavigation }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.open ? _c(\"MenuOpenIcon\", { attrs: { \"size\": 20 } }) : _c(\"MenuIcon\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a3e8b54b\"\n);\nconst NcAppNavigationToggle = __component__.exports;\nexport {\n NcAppNavigationToggle as N\n};\n//# sourceMappingURL=NcAppNavigationToggle-DtNWDe9v.mjs.map\n","import '../assets/NcAppNavigation-Bg4Oe7WC.css';\nimport { emit, unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { tabbable } from \"tabbable\";\nimport Vue from \"vue\";\nimport { useHotKey } from \"../Composables/useHotKey.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcAppNavigationList from \"../Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationToggle } from \"./NcAppNavigationToggle-DtNWDe9v.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigation\",\n components: {\n NcAppNavigationList,\n NcAppNavigationToggle\n },\n // Injected from NcContent\n inject: {\n setHasAppNavigation: {\n default: () => () => Vue.util.warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n from: \"NcContent:setHasAppNavigation\"\n }\n },\n props: {\n /**\n * The aria label to describe the navigation\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * aria-labelledby attribute to describe the navigation\n */\n ariaLabelledby: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n isMobile: useIsMobile()\n };\n },\n data() {\n return {\n open: !this.isMobile,\n focusTrap: null\n };\n },\n watch: {\n isMobile() {\n this.open = !this.isMobile;\n this.toggleFocusTrap();\n },\n open() {\n this.toggleFocusTrap();\n }\n },\n mounted() {\n this.setHasAppNavigation(true);\n subscribe(\"toggle-navigation\", this.toggleNavigationByEventBus);\n emit(\"navigation-toggled\", {\n open: this.open\n });\n this.focusTrap = createFocusTrap(this.$refs.appNavigationContainer, {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.appNavigationContainer,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n this.toggleFocusTrap();\n useHotKey(\"n\", this.onKeyDown, {\n prevent: true,\n stop: true\n });\n },\n unmounted() {\n this.setHasAppNavigation(false);\n unsubscribe(\"toggle-navigation\", this.toggleNavigationByEventBus);\n this.focusTrap.deactivate();\n },\n methods: {\n /**\n * Toggle the navigation\n *\n * @param {boolean} [state] set the state instead of inverting the current one\n */\n async toggleNavigation(state) {\n if (this.open === state) {\n emit(\"navigation-toggled\", {\n open: this.open\n });\n return;\n }\n this.open = typeof state === \"undefined\" ? !this.open : state;\n const bodyStyles = getComputedStyle(document.body);\n const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n if (this.open) {\n await this.$nextTick();\n this.focusFirstElement();\n }\n setTimeout(() => {\n emit(\"navigation-toggled\", {\n open: this.open\n });\n }, 1.5 * animationLength);\n },\n toggleNavigationByEventBus({ open }) {\n this.toggleNavigation(open);\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.isMobile && this.open) {\n this.focusTrap.activate();\n } else {\n this.focusTrap.deactivate();\n }\n },\n handleEsc() {\n if (this.isMobile && this.open) {\n this.toggleNavigation(false);\n }\n },\n focusFirstElement() {\n const element = tabbable(this.$refs.appNavigationContainer)[0];\n if (element) {\n element.focus();\n logger.debug(\"Focusing first element in the navigation\", { element });\n }\n },\n onKeyDown(event) {\n if (event.key === \"n\") {\n if (!this.open) {\n this.toggleNavigation(true);\n return;\n }\n if (this.isFocusWithinNavigation()) {\n this.toggleNavigation(false);\n }\n }\n },\n isFocusWithinNavigation() {\n const activeElement = document.activeElement;\n return this.$refs.appNavigationContainer?.contains(activeElement);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"appNavigationContainer\", staticClass: \"app-navigation\", class: { \"app-navigation--close\": !_vm.open } }, [_c(\"nav\", { staticClass: \"app-navigation__content\", attrs: { \"id\": \"app-navigation-vue\", \"aria-hidden\": _vm.open ? \"false\" : \"true\", \"aria-label\": _vm.ariaLabel || void 0, \"aria-labelledby\": _vm.ariaLabelledby || void 0, \"inert\": !_vm.open || void 0 }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.handleEsc.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"app-navigation__search\" }, [_vm._t(\"search\")], 2), _c(\"div\", { staticClass: \"app-navigation__body\", class: { \"app-navigation__body--no-list\": !_vm.$scopedSlots.list } }, [_vm._t(\"default\")], 2), _vm.$scopedSlots.list ? _c(\"NcAppNavigationList\", { staticClass: \"app-navigation__list\" }, [_vm._t(\"list\")], 2) : _vm._e(), _vm._t(\"footer\")], 2), _c(\"NcAppNavigationToggle\", { attrs: { \"open\": _vm.open }, on: { \"update:open\": _vm.toggleNavigation } })], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"cdba9e96\"\n);\nconst NcAppNavigation = __component__.exports;\nexport {\n NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-BKgpMjQN.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationCaption-C7GtQb_y.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationCaption-C7GtQb_y.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationCaption-C7GtQb_y.css';\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationCaption\",\n components: {\n NcActions\n },\n inheritAttrs: false,\n props: {\n /**\n * The text of the caption\n */\n name: {\n type: String,\n required: true\n },\n /**\n * `id` to set on the inner caption\n * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n */\n headingId: {\n type: String,\n default: null\n },\n /**\n * Enable when used as a heading\n * e.g. Before NcAppNavigationList\n */\n isHeading: {\n type: Boolean,\n default: false\n },\n /**\n * If `isHeading` is set, this defines the heading level that should be used\n */\n headingLevel: {\n type: Number,\n default: 2\n },\n /**\n * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n computed: {\n wrapperTag() {\n return this.isHeading ? \"div\" : \"li\";\n },\n captionTag() {\n const headingLevel = Math.max(2, this.headingLevel);\n return this.isHeading ? `h${headingLevel}` : \"span\";\n },\n // Check if the actions slot is populated\n hasActions() {\n return !!this.$slots.actions;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.wrapperTag, { tag: \"component\", staticClass: \"app-navigation-caption\", class: { \"app-navigation-caption--heading\": _vm.isHeading } }, [_c(_vm.captionTag, { tag: \"component\", staticClass: \"app-navigation-caption__name\", attrs: { \"id\": _vm.headingId } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _vm.hasActions ? _c(\"div\", { staticClass: \"app-navigation-caption__actions\" }, [_c(\"NcActions\", _vm._g(_vm._b({ scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"actionsTriggerIcon\")];\n }, proxy: true }], null, true) }, \"NcActions\", _vm.$attrs, false), _vm.$listeners), [_vm._t(\"actions\")], 2)], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"fac69d4a\"\n);\nconst NcAppNavigationCaption = __component__.exports;\nexport {\n NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-CcWZR8rN.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationIconBullet-DLQJkObX.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationIconBullet-DLQJkObX.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationIconBullet-DLQJkObX.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationIconBullet\",\n props: {\n /**\n * The color of the bullet point (as RGB HEX)\n */\n color: {\n type: String,\n required: true,\n validator(color) {\n return /^#?([0-9A-F]{3}){1,2}$/i.test(color);\n }\n }\n },\n emits: [\"click\"],\n computed: {\n formattedColor() {\n if (this.color.startsWith(\"#\")) {\n return this.color;\n }\n return \"#\" + this.color;\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-entry__icon-bullet\", on: { \"click\": _vm.onClick } }, [_c(\"div\", { style: { backgroundColor: _vm.formattedColor } })]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"04a313f4\"\n);\nconst NcAppNavigationIconBullet = __component__.exports;\nexport {\n NcAppNavigationIconBullet as default\n};\n//# sourceMappingURL=NcAppNavigationIconBullet.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationItem-DSL2nLRf.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationItem-DSL2nLRf.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"ChevronUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon chevron-up-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst ChevronUp = __component__.exports;\nexport {\n ChevronUp as C\n};\n//# sourceMappingURL=ChevronUp-C7Dy9Bph.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcInputConfirmCancel-CkhRZCfD.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcInputConfirmCancel-CkhRZCfD.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcInputConfirmCancel-CkhRZCfD.css';\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { r as register, q as t13, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t13);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n NcButton,\n ArrowRight,\n Close\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n value: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"input\",\n \"confirm\",\n \"cancel\"\n ],\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.value;\n },\n set(newValue) {\n this.$emit(\"input\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-input-confirm\" }, [_c(\"form\", { on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n }, \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.valueModel, expression: \"valueModel\" }], ref: \"input\", staticClass: \"app-navigation-input-confirm__input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.placeholder }, domProps: { \"value\": _vm.valueModel }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.valueModel = $event.target.value;\n } } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelConfirm, \"type\": \"submit\", \"variant\": \"primary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.confirm.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.labelCancel, \"type\": \"reset\", \"variant\": _vm.primary ? \"primary\" : \"tertiary\" }, on: { \"click\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.cancel.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) })], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"093a8eb9\"\n);\nconst NcInputConfirmCancel = __component__.exports;\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-CtdWwDCo.mjs.map\n","import { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcVNodes\",\n props: {\n /**\n * The vnodes to render\n */\n vnodes: {\n type: [Array, Object],\n default: null\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object} The created VNode\n */\n render() {\n return this.vnodes || this.$slots?.default || this.$scopedSlots?.default?.();\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcVNodes = __component__.exports;\nexport {\n NcVNodes as default\n};\n//# sourceMappingURL=NcVNodes.mjs.map\n","import '../assets/NcAppNavigationItem-DSL2nLRf.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { r as register, L as t20, a as t, b as t52, M as t22 } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-CtdWwDCo.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-DykQxmXJ.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pencil-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Pencil = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon undo-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst Undo = __component__$2.exports;\nregister(t20);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nvar _sfc_render$1 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcButton\", { staticClass: \"icon-collapse\", class: {\n \"icon-collapse--active\": _vm.active,\n \"icon-collapse--open\": _vm.open\n }, attrs: { \"aria-label\": _vm.labelButton, \"variant\": _vm.active ? \"tertiary-on-primary\" : \"tertiary\" }, on: { \"click\": _vm.onClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.open ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) });\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"c8d5bee5\"\n);\nconst NcAppNavigationIconCollapsible = __component__$1.exports;\nregister(t22, t52);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => \"app-navigation-item-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Pass in `true` if you want the matching behaviour to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile()\n };\n },\n data() {\n return {\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false,\n actionsBoundariesElement: void 0\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n hasUtils() {\n if (this.$scopedSlots.actions || this.$scopedSlots.counter || this.editable || this.undo) {\n return true;\n }\n return false;\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Does this item have children and is collapsing allowed via the prop?\n *\n * @return {boolean} True, if the item can be collapsed\n */\n isCollapsible() {\n return this.allowCollapse && !!this.$scopedSlots.default;\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nvar _sfc_render = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-entry-wrapper\", class: {\n \"app-navigation-entry--opened\": _vm.opened,\n \"app-navigation-entry--pinned\": _vm.pinned,\n \"app-navigation-entry--collapsible\": _vm.isCollapsible()\n }, attrs: { \"id\": _vm.id } }, [_c(_vm.isRouterLink ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.isRouterLink ? true : false, \"to\": _vm.to, \"exact\": _vm.isRouterLink ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"div\", { staticClass: \"app-navigation-entry\", class: {\n \"app-navigation-entry--editing\": _vm.editingActive,\n \"app-navigation-entry--deleted\": _vm.undo,\n active: _vm.to && isActive || _vm.active\n } }, [!_vm.undo ? _c(\"a\", { staticClass: \"app-navigation-entry-link\", attrs: { \"aria-current\": _vm.active || _vm.to && isActive ? \"page\" : void 0, \"aria-description\": _vm.ariaDescription, \"aria-expanded\": _vm.$scopedSlots.default ? _vm.opened.toString() : void 0, \"href\": _vm.href || routerLinkHref || \"#\", \"target\": _vm.isExternal(_vm.href) ? \"_blank\" : void 0, \"title\": _vm.title || _vm.name }, on: { \"blur\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"focus\": _vm.handleFocus, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.handleTab.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"app-navigation-entry-icon\", class: { [_vm.icon]: _vm.icon } }, [_vm.loading ? _c(\"NcLoadingIcon\") : _vm._t(\"icon\", null, { \"active\": _vm.active || _vm.to && isActive })], 2), !_vm.editingActive ? _c(\"span\", { staticClass: \"app-navigation-entry__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _vm.editingActive ? _c(\"div\", { staticClass: \"editingContainer\" }, [_c(\"NcInputConfirmCancel\", { ref: \"editingInput\", attrs: { \"placeholder\": _vm.editPlaceholder !== \"\" ? _vm.editPlaceholder : _vm.name, \"primary\": _vm.to && isActive || _vm.active }, on: { \"cancel\": _vm.cancelEditing, \"confirm\": _vm.handleEditingDone }, model: { value: _vm.editingValue, callback: function($$v) {\n _vm.editingValue = $$v;\n }, expression: \"editingValue\" } })], 1) : _vm._e()]) : _vm._e(), _vm.undo ? _c(\"div\", { staticClass: \"app-navigation-entry__deleted\" }, [_c(\"div\", { staticClass: \"app-navigation-entry__deleted-description\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])]) : _vm._e(), _vm.hasUtils && !_vm.editingActive ? _c(\"div\", { staticClass: \"app-navigation-entry__utils\", class: { \"app-navigation-entry__utils--display-actions\": _vm.forceDisplayActions || _vm.menuOpenLocalValue || _vm.menuOpen } }, [_vm.$scopedSlots.counter ? _c(\"div\", { staticClass: \"app-navigation-entry__counter-wrapper\" }, [_vm._t(\"counter\")], 2) : _vm._e(), _vm.$scopedSlots.actions || _vm.editable && !_vm.editingActive || _vm.undo ? _c(\"NcActions\", { ref: \"actions\", staticClass: \"app-navigation-entry__actions\", attrs: { \"inline\": _vm.inlineActions, \"container\": \"#app-navigation-vue\", \"boundaries-element\": _vm.actionsBoundariesElement, \"placement\": _vm.menuPlacement, \"open\": _vm.menuOpen, \"type\": _vm.to && isActive || _vm.active ? \"tertiary-on-primary\" : \"tertiary\", \"force-menu\": _vm.forceMenu, \"default-icon\": _vm.menuIcon }, on: { \"update:open\": _vm.onMenuToggle }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"menu-icon\")];\n }, proxy: true }], null, true) }, [_vm.editable && !_vm.editingActive ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.editButtonAriaLabel }, on: { \"click\": _vm.handleEdit }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Pencil\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.editLabel) + \" \")]) : _vm._e(), _vm.undo ? _c(\"NcActionButton\", { attrs: { \"aria-label\": _vm.undoButtonAriaLabel }, on: { \"click\": _vm.handleUndo }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Undo\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1) : _vm._e(), _vm.isCollapsible() ? _c(\"NcAppNavigationIconCollapsible\", { attrs: { \"active\": _vm.to && isActive || _vm.active, \"open\": _vm.opened }, on: { \"click\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.toggleCollapse.apply(null, arguments);\n } } }) : _vm._e(), _vm._t(\"extra\")], 2)];\n } }], null, true) }), _vm.canHaveChildren && _vm.$scopedSlots.default ? _c(\"ul\", { staticClass: \"app-navigation-entry__children\" }, [_vm._t(\"default\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"b38fb988\"\n);\nconst NcAppNavigationItem = __component__.exports;\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-BYWvtSRw.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationNew-D8_2ab9R.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationNew-D8_2ab9R.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationNew-D8_2ab9R.css';\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n components: {\n NcButton\n },\n props: {\n /**\n * Id of the button\n */\n buttonId: {\n type: String,\n required: false,\n default: \"\"\n },\n /**\n * Disabled state of the button\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Main text of the button\n */\n text: {\n type: String,\n required: true\n },\n /**\n * @deprecated use `variant` instead - will be removed with v9\n */\n type: {\n type: String,\n default: \"primary\",\n validator(value) {\n return [\"primary\", \"secondary\", \"tertiary\"].indexOf(value) !== -1;\n }\n },\n /**\n * The color variant to use.\n *\n * @default 'primary'\n */\n variant: {\n type: String,\n default: \"primary\",\n validator(value) {\n return [\"primary\", \"secondary\", \"tertiary\"].indexOf(value) !== -1;\n }\n }\n },\n emits: [\"click\"]\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-navigation-new\" }, [_c(\"NcButton\", { attrs: { \"id\": _vm.buttonId, \"disabled\": _vm.disabled, \"variant\": _vm.type !== \"primary\" ? _vm.type : _vm.variant }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\");\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\")];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.text) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"6f255eb3\"\n);\nconst NcAppNavigationNew = __component__.exports;\nexport {\n NcAppNavigationNew as N\n};\n//# sourceMappingURL=NcAppNavigationNew-BHzvRlVc.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationNewItem-CYSjj3pD.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationNewItem-CYSjj3pD.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationNewItem-CYSjj3pD.css';\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-CtdWwDCo.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationNewItem\",\n components: {\n NcInputConfirmCancel,\n NcLoadingIcon\n },\n props: {\n /**\n * The name of the element.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"new-item\"],\n data() {\n return {\n newItemValue: \"\",\n newItemActive: false\n };\n },\n methods: {\n handleNewItem() {\n if (!this.loading) {\n this.newItemActive = true;\n this.$nextTick(() => {\n this.$refs.newItemInput.focusInput();\n });\n }\n },\n cancelNewItem() {\n this.newItemActive = false;\n },\n handleNewItemDone() {\n this.$emit(\"new-item\", this.newItemValue);\n this.newItemValue = \"\";\n this.newItemActive = false;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-entry\", class: {\n \"app-navigation-entry--newItemActive\": _vm.newItemActive\n } }, [_c(\"button\", { staticClass: \"app-navigation-entry-button\", on: { \"click\": _vm.handleNewItem } }, [_c(\"span\", { staticClass: \"app-navigation-entry-icon\", class: { [_vm.icon]: !_vm.loading } }, [_vm.loading ? _c(\"NcLoadingIcon\") : _vm._t(\"icon\")], 2), !_vm.newItemActive ? _c(\"span\", { staticClass: \"app-navigation-new-item__name\", attrs: { \"title\": _vm.name } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]) : _vm._e(), _vm.newItemActive ? _c(\"span\", { staticClass: \"newItemContainer\" }, [_c(\"NcInputConfirmCancel\", { ref: \"newItemInput\", attrs: { \"placeholder\": _vm.editPlaceholder !== \"\" ? _vm.editPlaceholder : _vm.name }, on: { \"cancel\": _vm.cancelNewItem, \"confirm\": _vm.handleNewItemDone }, model: { value: _vm.newItemValue, callback: function($$v) {\n _vm.newItemValue = $$v;\n }, expression: \"newItemValue\" } })], 1) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"258871fd\"\n);\nconst NcAppNavigationNewItem = __component__.exports;\nexport {\n NcAppNavigationNewItem as N\n};\n//# sourceMappingURL=NcAppNavigationNewItem-DUNLtTs8.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSearch-o97SOfOb.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSearch-o97SOfOb.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationSearch-o97SOfOb.css';\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { useSlots, ref, watch, nextTick } from \"vue\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { N as NcInputField } from \"./NcInputField-DUtDY_1I.mjs\";\nimport { r as register, o as t44, p as t15, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t15, t44);\nconst __default__ = {\n name: \"NcAppNavigationSearch\",\n model: {\n event: \"update:modelValue\",\n prop: \"modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ Object.assign(__default__, {\n props: {\n /**\n * Current search input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit }) {\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainer = ref();\n const hasActions = () => !!slots.actions;\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n });\n watch(showActions, (show) => {\n window.clearTimeout(timeoutId.value);\n if (show) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !show;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n emit(\"update:modelValue\", \"\");\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainer.value.querySelector(\"button\")?.focus());\n }\n }\n return { __sfc: true, emit, slots, inputElement, inputHasFocus, transitionTimeout, actionsContainer, hasActions, showActions, timeoutId, hideActions, onCloseSearch, IconClose: Close, NcInputField, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"app-navigation-search\", class: {\n \"app-navigation-search--has-actions\": _setup.hasActions()\n } }, [_c(_setup.NcInputField, { ref: \"inputElement\", staticClass: \"app-navigation-search__input\", attrs: { \"aria-label\": _vm.label, \"label-outside\": \"\", \"placeholder\": _vm.placeholder ?? _vm.label, \"show-trailing-button\": \"\", \"trailing-button-label\": _setup.t(\"Clear search\"), \"type\": \"search\", \"value\": _vm.modelValue }, on: { \"update:value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n }, \"trailing-button-click\": _setup.onCloseSearch }, scopedSlots: _vm._u([{ key: \"trailing-button-icon\", fn: function() {\n return [_c(_setup.IconClose, { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _setup.hasActions() ? _c(\"div\", { ref: \"actionsContainer\", staticClass: \"app-navigation-search__actions\", class: {\n \"app-navigation-search__actions--hidden\": !_setup.showActions,\n \"hidden-visually\": _setup.hideActions\n } }, [_vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"21bb8308\"\n);\nconst NcAppNavigationSearch = __component__.exports;\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-Ci8jz_C2.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSettings-2Wh1E3Hq.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSettings-2Wh1E3Hq.css\";\n export default content && content.locals ? content.locals : undefined;\n","const clickOutsideOptions = {\n props: {\n /**\n * A query-selector or an array of query-selectors\n * to be ignored when clicking outside an element\n */\n excludeClickOutsideSelectors: {\n type: [String, Array],\n default: () => []\n }\n },\n computed: {\n clickOutsideOptions() {\n const excludedQuerySelectors = Array.isArray(this.excludeClickOutsideSelectors) ? this.excludeClickOutsideSelectors : [this.excludeClickOutsideSelectors];\n return { ignore: excludedQuerySelectors };\n }\n }\n};\nexport {\n clickOutsideOptions as default\n};\n//# sourceMappingURL=clickOutsideOptions.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcAppNavigationSettings-2Wh1E3Hq.css';\nimport { h as mdiCogOutline, i as mdiCog } from \"./mdi-C_j0YT8c.mjs\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { r as register, n as t48, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport clickOutsideOptions from \"../Mixins/clickOutsideOptions.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"vue\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/capabilities\";\nimport \"./logger-D3RVzcfQ.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { i as isLegacy32 } from \"./legacy-MK4GvP26.mjs\";\nregister(t48);\nconst _sfc_main = {\n directives: {\n ClickOutside: vOnClickOutside\n },\n components: {\n NcButton,\n NcIconSvgWrapper\n },\n mixins: [\n clickOutsideOptions\n ],\n props: {\n /**\n * Text of the button\n *\n * @default 'Settings'\n */\n name: {\n type: String,\n required: false,\n default: t(\"Settings\")\n }\n },\n setup() {\n const contentId = GenRandomId();\n return {\n contentId,\n isLegacy32,\n mdiCog,\n mdiCogOutline\n };\n },\n data() {\n return {\n open: false\n };\n },\n computed: {\n clickOutsideConfig() {\n return [\n this.closeMenu,\n this.clickOutsideOptions\n ];\n }\n },\n methods: {\n closeMenu() {\n this.open = false;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.clickOutsideConfig, expression: \"clickOutsideConfig\" }], class: { open: _vm.open }, attrs: { \"id\": \"app-settings\" } }, [_c(\"div\", { attrs: { \"id\": \"app-settings__header\" } }, [_c(\"NcButton\", { staticClass: \"settings-button\", attrs: { \"aria-controls\": _vm.contentId, \"aria-expanded\": _vm.open ? \"true\" : \"false\", \"alignment\": \"start\", \"variant\": \"tertiary\", \"wide\": \"\" }, on: { \"click\": function($event) {\n _vm.open = !_vm.open;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { staticClass: \"settings-button__icon\", attrs: { \"path\": _vm.isLegacy32 ? _vm.mdiCog : _vm.mdiCogOutline } })];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1), _c(\"Transition\", { attrs: { \"name\": \"slide-up\" } }, [_c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], attrs: { \"id\": _vm.contentId } }, [_vm._t(\"default\")], 2)])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"8fb21c8b\"\n);\nconst NcAppNavigationSettings = __component__.exports;\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-B29zrNPr.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSpacer-Fkr_mEI1.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppNavigationSpacer-Fkr_mEI1.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppNavigationSpacer-Fkr_mEI1.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationSpacer\"\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"app-navigation-spacer\" });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"b699c557\"\n);\nconst NcAppNavigationSpacer = __component__.exports;\nexport {\n NcAppNavigationSpacer as default\n};\n//# sourceMappingURL=NcAppNavigationSpacer.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsDialog-TJ3aaiJI.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsDialog-TJ3aaiJI.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcDialog-COuFb47k.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcDialog-COuFb47k.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { ref } from \"vue\";\nimport { r as register, d as t33, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t33);\nconst _sfc_main = {\n __name: \"NcDialogButton\",\n props: {\n /**\n * The function that will be called when the button is pressed.\n * If the function returns `false` the click is ignored and the dialog will not be closed,\n * which is the default behavior of \"reset\"-buttons.\n *\n * @type {() => unknown|false|Promise<unknown|false>}\n */\n callback: {\n type: Function,\n required: false,\n default: () => {\n }\n },\n /**\n * The label of the button\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Optional inline SVG icon for the button\n */\n icon: {\n type: String,\n required: false,\n default: void 0\n },\n /**\n * The button type, see NcButton.\n *\n * @deprecated The usage for setting the color variant is deprecated and will be removed with v9.\n * @type {'button'|'submit'|'reset'|'primary'|'secondary'|'error'|'warning'|'success'}\n */\n type: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"button\", \"submit\", \"reset\", \"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n },\n /**\n * See `nativeType` of `NcButton`.\n *\n * @deprecated use `type` instead - will removed with v9\n */\n nativeType: {\n type: String,\n required: false,\n default: \"button\",\n validator(value) {\n return [\"submit\", \"reset\", \"button\"].includes(value);\n }\n },\n /**\n * If the button should be shown as disabled\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * The button variant, see NcButton.\n *\n * @type {'primary'|'secondary'|'tertiary'|'error'|'warning'|'success'}\n * @since 8.24.0\n */\n variant: {\n type: String,\n required: false,\n default: \"secondary\",\n validator: (type) => typeof type === \"string\" && [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(type)\n }\n },\n emits: [\"click\"],\n setup(__props, { emit }) {\n const props = __props;\n const isLoading = ref(false);\n async function handleClick(e) {\n if (isLoading.value) {\n return;\n }\n isLoading.value = true;\n try {\n const fallback = props.nativeType === \"reset\" ? false : void 0;\n const result = await props.callback?.() ?? fallback;\n if (result !== false) {\n emit(\"click\", e, result);\n }\n } finally {\n isLoading.value = false;\n }\n }\n return { __sfc: true, props, emit, isLoading, handleClick, t, NcButton, NcIconSvgWrapper, NcLoadingIcon };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcButton, { attrs: { \"aria-label\": _vm.label, \"disabled\": _vm.disabled, \"type\": _vm.type, \"native-type\": _vm.nativeType, \"variant\": _vm.variant }, on: { \"click\": _setup.handleClick }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_setup.isLoading ? _c(_setup.NcLoadingIcon, { attrs: {\n \"name\": _setup.t(\"Loading …\")\n /* TRANSLATORS: The button is in a loading state*/\n } }) : _vm.icon !== void 0 ? _c(_setup.NcIconSvgWrapper, { attrs: { \"svg\": _vm.icon } }) : _vm._e()];\n })];\n }, proxy: true }], null, true) }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcDialogButton = __component__.exports;\nexport {\n NcDialogButton as N\n};\n//# sourceMappingURL=NcDialogButton-P7Ryycqk.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcModal-4ZPVUmG2.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcModal-4ZPVUmG2.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcModal-4ZPVUmG2.css';\nimport { m as mdiChevronRight, q as mdiChevronLeft } from \"../chunks/mdi-C_j0YT8c.mjs\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport Vue, { useCssVars } from \"vue\";\nimport { C as Close } from \"../chunks/Close-BtLPUSdO.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, H as t36, m as t18, a as t } from \"../chunks/_l10n-BmKQgz1z.mjs\";\nimport { g as getTrapStack } from \"../chunks/focusTrap-HJQ4pqHV.mjs\";\nimport { G as GenRandomId } from \"../chunks/GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcActions } from \"../chunks/NcActions-CpdT2y6O.mjs\";\nimport { N as NcButton } from \"../chunks/NcButton-DUZTtFhr.mjs\";\nimport { N as NcIconSvgWrapper } from \"../chunks/NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { S as ScopeComponent } from \"../chunks/ScopeComponent-B4ZR5mwH.mjs\";\nconst _sfc_main$2 = {\n name: \"PauseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon pause-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14,19H18V5H14M6,19H10V5H6V19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst Pause = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"PlayIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon play-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M8,5.14V19.14L19,12.14L8,5.14Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Play = __component__$1.exports;\nregister(t18, t36);\nfunction timer(callback, delay) {\n let id;\n let started;\n let remaining = delay;\n let running;\n this.start = function() {\n running = true;\n started = /* @__PURE__ */ new Date();\n id = setTimeout(callback, remaining);\n };\n this.pause = function() {\n running = false;\n clearTimeout(id);\n remaining -= /* @__PURE__ */ new Date() - started;\n };\n this.clear = function() {\n running = false;\n clearTimeout(id);\n remaining = 0;\n };\n this.getTimeLeft = function() {\n if (running) {\n this.pause();\n this.start();\n }\n return remaining;\n };\n this.getStateRunning = function() {\n return running;\n };\n this.start();\n}\nconst __default__ = {\n name: \"NcModal\",\n components: {\n Close,\n Pause,\n Play,\n NcActions,\n NcButton,\n NcIconSvgWrapper\n },\n props: {\n /**\n * Name to be shown with the modal\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Declare if a previous slide is available\n */\n hasPrevious: {\n type: Boolean,\n default: false\n },\n /**\n * Declare if a next slide is available\n */\n hasNext: {\n type: Boolean,\n default: false\n },\n /**\n * Declare if hiding the modal should be animated\n */\n outTransition: {\n type: Boolean,\n default: false\n },\n /**\n * Declare if the slideshow functionality should be enabled\n */\n enableSlideshow: {\n type: Boolean,\n default: false\n },\n /**\n * Declare the slide interval\n */\n slideshowDelay: {\n type: Number,\n default: 5e3\n },\n /**\n * Allow to pause an ongoing slideshow\n */\n slideshowPaused: {\n type: Boolean,\n default: false\n },\n /**\n * Enable swipe between slides\n *\n * @deprecated Will be removed in next version - use `disableSwipe` instead\n */\n enableSwipe: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable swipe between slides\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Enable spread navigation\n */\n spreadNavigation: {\n type: Boolean,\n default: false\n },\n /**\n * Defines the modal size.\n * Default is 'normal'.\n * Available are 'small', 'normal', 'large' and 'full'.\n * All sizes except 'small' change automatically to full-screen on mobile.\n */\n size: {\n type: String,\n default: \"normal\",\n validator: (size) => {\n return [\"small\", \"normal\", \"large\", \"full\"].includes(size);\n }\n },\n /**\n * Do not show the close button for the dialog.\n *\n * @default false\n */\n noClose: {\n type: Boolean,\n default: false\n },\n /**\n * Set to false to no show a close button on the dialog\n *\n * @deprecated - Use `noClose` instead. Will be removed in v9.\n * @default true\n */\n canClose: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Close the modal if the user clicked outside the modal\n * Only relevant if `canClose` is set to true.\n */\n closeOnClickOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Makes the modal backdrop opaque if true.\n * Will be overwritten if some buttons are shown outside.\n */\n dark: {\n type: Boolean,\n default: false\n },\n /**\n * Set light backdrop. Makes the modal header appear light.\n */\n lightBackdrop: {\n type: Boolean,\n default: false\n },\n /**\n * Selector for the modal container, pass `null` to prevent automatic container mounting\n */\n container: {\n type: [String, null],\n default: \"body\"\n },\n /**\n * Pass in `true` if you want the modal 'close' button to be displayed\n * outside the modal boundaries, in the top right corner of the window.\n *\n * @default false\n * @since 8.32.0\n */\n closeButtonOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Pass in false if you want the modal 'close' button to be displayed\n * outside the modal boundaries, in the top right corner of the window.\n *\n * @default true\n * @deprecated 8.32.0 - Use `closeButtonOutside` instead\n */\n closeButtonContained: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Additional elements to add to the focus trap\n */\n additionalTrapElements: {\n type: Array,\n default: () => []\n },\n /**\n * Display x items inline\n *\n * @see Actions component usage\n */\n inlineActions: {\n type: Number,\n default: 0\n },\n /**\n * The current open property of the modal\n */\n show: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * Id of the element that labels the dialog (the name)\n * Not needed if the `name` prop is set, but if no name is set you need to provide the ID of an element to label the dialog for accessibility.\n */\n labelId: {\n type: String,\n default: \"\"\n },\n /**\n * Set element to return focus to after focus trap deactivation\n *\n * @type {import('focus-trap').FocusTargetValueOrFalse}\n */\n setReturnFocus: {\n default: void 0,\n type: [Boolean, HTMLElement, SVGElement, String]\n }\n },\n emits: [\n \"previous\",\n \"next\",\n \"close\",\n \"update:show\"\n ],\n setup() {\n return {\n mdiChevronLeft,\n mdiChevronRight\n };\n },\n data() {\n return {\n mc: null,\n playing: false,\n slideshowTimeout: null,\n focusTrap: null,\n randId: GenRandomId(),\n internalShow: true\n };\n },\n computed: {\n /**\n * slide show delay to set to CSS\n */\n cssSlideshowDelay() {\n return `${this.slideshowDelay}ms`;\n },\n /**\n * True if there are any buttons shown on the backdrop or a name (for accessibility)\n */\n forceDarkBackdrop() {\n return !this.noClose && this.canClose && !this.closeButtonContained || this.hasNext || this.hasPrevious || this.modalName !== \"\" || Boolean(this.$slots.actions);\n },\n /**\n * Trimmed modal name\n */\n modalName() {\n return this.name.trim();\n },\n /**\n * ID of the element to label the modal\n */\n modalLabelId() {\n return this.labelId || `modal-name-${this.randId}`;\n },\n showModal() {\n return this.show === void 0 ? this.internalShow : this.show;\n },\n modalTransitionName() {\n return `modal-${this.outTransition ? \"out\" : \"in\"}`;\n },\n playPauseName() {\n return this.playing ? t(\"Pause slideshow\") : t(\"Start slideshow\");\n },\n closeButtonAriaLabel() {\n return t(\"Close\");\n },\n prevButtonAriaLabel() {\n return t(\"Previous\");\n },\n nextButtonAriaLabel() {\n return t(\"Next\");\n }\n },\n watch: {\n /**\n * Handle play/pause of an ongoing slideshow\n *\n * @param {boolean} paused is the player paused\n */\n slideshowPaused(paused) {\n if (this.slideshowTimeout) {\n if (paused) {\n this.slideshowTimeout.pause();\n } else {\n this.slideshowTimeout.start();\n }\n }\n },\n additionalTrapElements(elements) {\n if (this.focusTrap) {\n const contentContainer = this.$refs.mask;\n this.focusTrap.updateContainerElements([contentContainer, ...elements]);\n }\n }\n },\n beforeMount() {\n window.addEventListener(\"keydown\", this.handleKeydown);\n },\n beforeDestroy() {\n window.removeEventListener(\"keydown\", this.handleKeydown);\n this.mc.stop();\n },\n mounted() {\n if (!this.name && !this.labelId) {\n Vue.util.warn(\"[NcModal] You need either set the name or set a `labelId` for accessibility.\");\n }\n this.useFocusTrap();\n this.mc = useSwipe(this.$refs.mask, {\n onSwipeEnd: this.handleSwipe\n });\n if (this.container) {\n if (this.container === \"body\") {\n document.body.insertBefore(this.$el, document.body.lastChild);\n } else {\n const container = document.querySelector(this.container);\n container.appendChild(this.$el);\n }\n }\n },\n destroyed() {\n this.clearFocusTrap();\n this.$el.remove();\n },\n methods: {\n t,\n // Events emitters\n previous(event) {\n if (this.hasPrevious) {\n if (event) {\n this.resetSlideshow();\n }\n this.$emit(\"previous\", event);\n }\n },\n next(event) {\n if (this.hasNext) {\n if (event) {\n this.resetSlideshow();\n }\n this.$emit(\"next\", event);\n }\n },\n close(data) {\n if (!this.noClose && this.canClose) {\n this.internalShow = false;\n this.$emit(\"update:show\", false);\n setTimeout(() => {\n this.$emit(\"close\", data);\n }, 300);\n }\n },\n /**\n * Handle click on modal wrapper\n * If `closeOnClickOutside` is set the modal will be closed\n *\n * @param {MouseEvent} event The click event\n */\n handleClickModalWrapper(event) {\n if (this.closeOnClickOutside) {\n this.close(event);\n }\n },\n /**\n * @param {KeyboardEvent} event - keyboard event\n */\n handleKeydown(event) {\n if (event.key === \"Escape\") {\n const trapStack = getTrapStack();\n if (trapStack.length > 0 && trapStack[trapStack.length - 1] !== this.focusTrap) {\n return;\n }\n return this.close(event);\n }\n const arrowHandlers = {\n ArrowLeft: this.previous,\n ArrowRight: this.next\n };\n if (arrowHandlers[event.key]) {\n if (document.activeElement && !this.$el.contains(document.activeElement)) {\n return;\n }\n return arrowHandlers[event.key](event);\n }\n },\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction Swipe direction\n */\n handleSwipe(e, direction) {\n if (this.enableSwipe && !this.disableSwipe) {\n if (direction === \"left\") {\n this.next(e);\n } else if (direction === \"right\") {\n this.previous(e);\n }\n }\n },\n /**\n * Toggle the slideshow state\n */\n togglePlayPause() {\n this.playing = !this.playing;\n if (this.playing) {\n this.handleSlideshow();\n } else {\n this.clearSlideshowTimeout();\n }\n },\n /**\n * Reset the slideshow timer and keep going if it was on\n */\n resetSlideshow() {\n this.playing = !this.playing;\n this.clearSlideshowTimeout();\n this.$nextTick(function() {\n this.togglePlayPause();\n });\n },\n /**\n * Handle the slideshow timer and next event\n */\n handleSlideshow() {\n this.playing = true;\n if (this.hasNext) {\n this.slideshowTimeout = new timer(() => {\n this.next();\n this.handleSlideshow();\n }, this.slideshowDelay);\n } else {\n this.playing = false;\n this.clearSlideshowTimeout();\n }\n },\n /**\n * Clear slideshowTimeout if ongoing\n */\n clearSlideshowTimeout() {\n if (this.slideshowTimeout) {\n this.slideshowTimeout.clear();\n }\n },\n /**\n * Add focus trap for accessibility.\n */\n async useFocusTrap() {\n if (!this.showModal || this.focusTrap) {\n return;\n }\n const contentContainer = this.$refs.mask;\n await this.$nextTick();\n const options = {\n allowOutsideClick: true,\n fallbackFocus: contentContainer,\n trapStack: getTrapStack(),\n // Esc can be used without stop in content or additionalTrapElements where it should not deactivate modal's focus trap.\n // Focus trap is deactivated on modal close anyway.\n escapeDeactivates: false,\n setReturnFocus: this.setReturnFocus\n };\n this.focusTrap = createFocusTrap([contentContainer, ...this.additionalTrapElements], options);\n this.focusTrap.activate();\n },\n clearFocusTrap() {\n if (!this.focusTrap) {\n return;\n }\n this.focusTrap?.deactivate();\n this.focusTrap = null;\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"d87c3654\": _vm.cssSlideshowDelay\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"transition\", { attrs: { \"name\": \"fade\", \"appear\": \"\" }, on: { \"after-enter\": _vm.useFocusTrap, \"before-leave\": _vm.clearFocusTrap } }, [_c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showModal, expression: \"showModal\" }], ref: \"mask\", staticClass: \"modal-mask\", class: {\n \"modal-mask--opaque\": _vm.dark || _vm.forceDarkBackdrop,\n \"modal-mask--light\": _vm.lightBackdrop\n }, attrs: { \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-labelledby\": _vm.modalLabelId, \"aria-describedby\": \"modal-description-\" + _vm.randId, \"tabindex\": \"-1\" } }, [_c(\"transition\", { attrs: { \"name\": \"fade-visibility\", \"appear\": \"\" } }, [_c(\"div\", { staticClass: \"modal-header\", attrs: { \"data-theme-light\": _vm.lightBackdrop, \"data-theme-dark\": !_vm.lightBackdrop } }, [_vm.modalName ? _c(\"h2\", { staticClass: \"modal-header__name\", attrs: { \"id\": \"modal-name-\" + _vm.randId } }, [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"div\", { staticClass: \"icons-menu\" }, [_vm.hasNext && _vm.enableSlideshow ? _c(\"button\", { staticClass: \"play-pause-icons\", class: { \"play-pause-icons--paused\": _vm.slideshowPaused }, attrs: { \"title\": _vm.playPauseName, \"type\": \"button\" }, on: { \"click\": _vm.togglePlayPause } }, [!_vm.playing ? _c(\"Play\", { staticClass: \"play-pause-icons__play\", attrs: { \"size\": 20 } }) : _c(\"Pause\", { staticClass: \"play-pause-icons__pause\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_vm.playPauseName) + \" \")]), _vm.playing ? _c(\"svg\", { staticClass: \"progress-ring\", attrs: { \"height\": \"50\", \"width\": \"50\" } }, [_c(\"circle\", { staticClass: \"progress-ring__circle\", attrs: { \"stroke\": \"white\", \"stroke-width\": \"2\", \"fill\": \"transparent\", \"r\": \"15\", \"cx\": \"25\", \"cy\": \"25\" } })]) : _vm._e()], 1) : _vm._e(), _c(\"NcActions\", { staticClass: \"header-actions\", attrs: { \"inline\": _vm.inlineActions } }, [_vm._t(\"actions\")], 2), !_vm.noClose && _vm.canClose && _vm.closeButtonOutside && !_vm.closeButtonContained ? _c(\"NcButton\", { staticClass: \"header-close\", attrs: { \"aria-label\": _vm.closeButtonAriaLabel, \"variant\": \"tertiary\" }, on: { \"click\": _vm.close }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 2121748766) }) : _vm._e()], 1)])]), _c(\"transition\", { attrs: { \"name\": _vm.modalTransitionName, \"appear\": \"\" } }, [_c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showModal, expression: \"showModal\" }], staticClass: \"modal-wrapper\", class: [\n `modal-wrapper--${_vm.size}`,\n { \"modal-wrapper--spread-navigation\": _vm.spreadNavigation }\n ], on: { \"mousedown\": function($event) {\n if ($event.target !== $event.currentTarget) return null;\n return _vm.handleClickModalWrapper.apply(null, arguments);\n } } }, [_c(\"transition\", { attrs: { \"name\": \"fade-visibility\", \"appear\": \"\" } }, [_c(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasPrevious, expression: \"hasPrevious\" }], staticClass: \"prev\", attrs: { \"aria-label\": _vm.prevButtonAriaLabel, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.previous }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiChevronLeft, \"size\": 40 } })];\n }, proxy: true }]) })], 1), _c(\"div\", { staticClass: \"modal-container\", attrs: { \"id\": \"modal-description-\" + _vm.randId } }, [_c(\"div\", { staticClass: \"modal-container__content\" }, [_vm._t(\"default\")], 2), !_vm.noClose && _vm.canClose && !_vm.closeButtonOutside && _vm.closeButtonContained ? _c(\"NcButton\", { staticClass: \"modal-container__close\", attrs: { \"aria-label\": _vm.closeButtonAriaLabel, \"variant\": \"tertiary\" }, on: { \"click\": _vm.close }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 2121748766) }) : _vm._e()], 1), _c(\"transition\", { attrs: { \"name\": \"fade-visibility\", \"appear\": \"\" } }, [_c(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasNext, expression: \"hasNext\" }], staticClass: \"next\", attrs: { \"aria-label\": _vm.nextButtonAriaLabel, \"variant\": \"tertiary-no-background\" }, on: { \"click\": _vm.next }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"directional\": \"\", \"path\": _vm.mdiChevronRight, \"size\": 40 } })];\n }, proxy: true }]) })], 1)], 1)])], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"2451d211\"\n);\nconst NcModal = __component__.exports;\nScopeComponent(NcModal);\nexport {\n NcModal as default\n};\n//# sourceMappingURL=NcModal.mjs.map\n","import '../assets/NcDialog-COuFb47k.css';\nimport { useElementSize } from \"@vueuse/core\";\nimport { defineComponent, ref, computed } from \"vue\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcDialogButton } from \"./NcDialogButton-P7Ryycqk.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = defineComponent({\n name: \"NcDialog\",\n components: {\n NcDialogButton,\n NcModal\n },\n props: {\n /** Name of the dialog (the heading) */\n name: {\n type: String,\n required: true\n },\n /** Text of the dialog */\n message: {\n type: String,\n default: \"\"\n },\n /** Additional elements to add to the focus trap */\n additionalTrapElements: {\n type: Array,\n validator: (arr) => {\n return Array.isArray(arr) && arr.every((element) => typeof element === \"string\" || element instanceof HTMLElement);\n },\n default: () => []\n },\n /**\n * The element where to mount the dialog, if `null` is passed the dialog is mounted in place\n *\n * @default 'body'\n */\n container: {\n type: String,\n required: false,\n default: \"body\"\n },\n /**\n * Whether the dialog should be shown\n *\n * @default true\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Size of the underlying NcModal\n *\n * @default 'small'\n * @type {'small'|'normal'|'large'|'full'}\n */\n size: {\n type: String,\n required: false,\n default: \"small\",\n validator: (value) => typeof value === \"string\" && [\"small\", \"normal\", \"large\", \"full\"].includes(value)\n },\n /**\n * Buttons to display\n *\n * @default []\n */\n buttons: {\n type: Array,\n required: false,\n default: () => [],\n validator: (value) => Array.isArray(value) && value.every((element) => typeof element === \"object\")\n },\n /**\n * Do not show the close button for the dialog.\n *\n * @default false\n */\n noClose: {\n type: Boolean,\n default: false\n },\n /**\n * Set to false to no show a close button on the dialog\n *\n * @deprecated - Use `noClose` instead. Will be removed in v9.\n * @default true\n */\n canClose: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Close the dialog if the user clicked outside of the dialog\n * Only relevant if `canClose` is set to true.\n */\n closeOnClickOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Make the dialog wrapper a HTML form element.\n * The buttons will be wrapped within the form so they can be used as submit / reset buttons.\n * Please note that when using the property the `navigation` should not be used.\n */\n isForm: {\n type: Boolean,\n default: false\n },\n /**\n * Declare if hiding the modal should be animated\n *\n * @default false\n */\n outTransition: {\n type: Boolean,\n default: false\n },\n /**\n * Optionally pass additional classes which will be set on the navigation for custom styling\n *\n * @default ''\n * @example\n * ```html\n * <DialogBase :navigation-classes=\"['mydialog-navigation']\"><!-- --></DialogBase>\n * <!-- ... -->\n * <style lang=\"scss\">\n * :deep(.mydialog-navigation) {\n * flex-direction: row-reverse;\n * }\n * </style>\n * ```\n */\n navigationClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n },\n /**\n * aria-label for the dialog navigation.\n * Use it when you want to provide a more meaningful label than the dialog name.\n *\n * By default, navigation is labeled by the dialog name.\n */\n navigationAriaLabel: {\n type: String,\n required: false,\n default: \"\"\n },\n /**\n * aria-labelledby for the dialog navigation.\n * Use it when you have an implicit navigation label (e.g. a heading).\n *\n * By default, navigation is labeled by the dialog name.\n */\n navigationAriaLabelledby: {\n type: String,\n required: false,\n default: \"\"\n },\n /**\n * Optionally pass additional classes which will be set on the content wrapper for custom styling\n *\n * @default ''\n */\n contentClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n },\n /**\n * Optionally pass additional classes which will be set on the dialog itself\n * (the default `class` attribute will be set on the modal wrapper)\n *\n * @default ''\n */\n dialogClasses: {\n type: [String, Array, Object],\n required: false,\n default: \"\"\n }\n },\n emits: [\"closing\", \"update:open\", \"submit\"],\n setup(props, { emit, slots }) {\n const wrapper = ref();\n const { width: dialogWidth } = useElementSize(wrapper, { width: 900 });\n const isNavigationCollapsed = computed(() => dialogWidth.value < 876);\n const hasNavigation = computed(() => slots?.navigation !== void 0);\n const navigationId = GenRandomId();\n const navigationAriaLabelAttr = computed(() => props.navigationAriaLabel || void 0);\n const navigationAriaLabelledbyAttr = computed(() => {\n if (props.navigationAriaLabel) {\n return void 0;\n }\n return props.navigationAriaLabelledby || navigationId;\n });\n const dialogElement = ref();\n const dialogTagName = computed(() => props.isForm && !hasNavigation.value ? \"form\" : \"div\");\n const dialogListeners = computed(() => dialogTagName.value === \"form\" ? {\n /**\n * @param {SubmitEvent} event Form submit event\n */\n submit(event) {\n event.preventDefault();\n emit(\"submit\", event);\n },\n /**\n * @param {Event} event Form submit event\n */\n reset(event) {\n event.preventDefault();\n emit(\"reset\", event);\n }\n } : {});\n const showModal = ref(true);\n function handleButtonClose(button, result) {\n if ((button.type === \"submit\" || button.nativeType === \"submit\") && dialogTagName.value === \"form\" && !dialogElement.value.reportValidity()) {\n return;\n }\n handleClosing(result);\n window.setTimeout(() => handleClosed(), 300);\n }\n function handleClosing(result) {\n showModal.value = false;\n emit(\"closing\", result);\n }\n function handleClosed() {\n showModal.value = true;\n emit(\"update:open\", false);\n }\n const modalProps = computed(() => ({\n noClose: props.noClose || !props.canClose,\n container: props.container === void 0 ? \"body\" : props.container,\n // we do not pass the name as we already have the name as the headline\n // name: props.name,\n // But we need to set the correct label id so the dialog is labelled\n labelId: navigationId,\n size: props.size,\n show: props.open && showModal.value,\n outTransition: props.outTransition,\n closeOnClickOutside: props.closeOnClickOutside,\n additionalTrapElements: props.additionalTrapElements\n }));\n return {\n dialogElement,\n dialogListeners,\n dialogTagName,\n handleButtonClose,\n handleClosing,\n handleClosed,\n hasNavigation,\n navigationId,\n navigationAriaLabelAttr,\n navigationAriaLabelledbyAttr,\n isNavigationCollapsed,\n modalProps,\n wrapper\n };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.open ? _c(\"NcModal\", _vm._b({ staticClass: \"dialog__modal\", attrs: { \"enable-slideshow\": false, \"enable-swipe\": false }, on: { \"close\": _vm.handleClosed, \"update:show\": function($event) {\n return _vm.handleClosing();\n } } }, \"NcModal\", _vm.modalProps, false), [_c(\"h2\", { staticClass: \"dialog__name\", attrs: { \"id\": _vm.navigationId }, domProps: { \"textContent\": _vm._s(_vm.name) } }), _c(_vm.dialogTagName, _vm._g({ ref: \"dialogElement\", tag: \"component\", staticClass: \"dialog\", class: _vm.dialogClasses }, _vm.dialogListeners), [_c(\"div\", { ref: \"wrapper\", staticClass: \"dialog__wrapper\", class: { \"dialog__wrapper--collapsed\": _vm.isNavigationCollapsed } }, [_vm.hasNavigation ? _c(\"nav\", { staticClass: \"dialog__navigation\", class: _vm.navigationClasses, attrs: { \"aria-label\": _vm.navigationAriaLabelAttr, \"aria-labelledby\": _vm.navigationAriaLabelledbyAttr } }, [_vm._t(\"navigation\", null, { \"isCollapsed\": _vm.isNavigationCollapsed })], 2) : _vm._e(), _c(\"div\", { staticClass: \"dialog__content\", class: _vm.contentClasses }, [_vm._t(\"default\", function() {\n return [_c(\"p\", { staticClass: \"dialog__text\" }, [_vm._v(\" \" + _vm._s(_vm.message) + \" \")])];\n })], 2)]), _c(\"div\", { staticClass: \"dialog__actions\" }, [_vm._t(\"actions\", function() {\n return _vm._l(_vm.buttons, function(button, idx) {\n return _c(\"NcDialogButton\", _vm._b({ key: idx, on: { \"click\": (_, result) => _vm.handleButtonClose(button, result) } }, \"NcDialogButton\", button, false));\n });\n })], 2)])], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"66c29e13\"\n);\nconst NcDialog = __component__.exports;\nexport {\n NcDialog as N\n};\n//# sourceMappingURL=NcDialog-DDuqQeT-.mjs.map\n","import { inject } from \"vue\";\nconst APP_SETTINGS_REGISTRATION_KEY = Symbol.for(\"NcAppSettingsDialog:registration\");\nconst APP_SETTINGS_LEGACY_DESIGN_KEY = Symbol.for(\"NcAppSettingsDialog:legacy\");\nfunction useAppSettingsDialog() {\n return inject(APP_SETTINGS_REGISTRATION_KEY);\n}\nexport {\n APP_SETTINGS_LEGACY_DESIGN_KEY as A,\n APP_SETTINGS_REGISTRATION_KEY as a,\n useAppSettingsDialog as u\n};\n//# sourceMappingURL=useAppSettingsDialog-DbtEkXa4.mjs.map\n","import '../assets/NcAppSettingsDialog-TJ3aaiJI.css';\nimport Vue, { defineComponent, provide, ref, shallowRef, computed, onBeforeUnmount } from \"vue\";\nimport { useVModel, toRef } from \"@vueuse/core\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-DDuqQeT-.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { a as APP_SETTINGS_REGISTRATION_KEY, A as APP_SETTINGS_LEGACY_DESIGN_KEY } from \"./useAppSettingsDialog-DbtEkXa4.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: {\n open: { type: Boolean },\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: true }\n },\n emits: [\"update:open\"],\n setup(__props, { emit }) {\n const props = __props;\n const open = useVModel(props, \"open\", emit, { passive: true });\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScroller = ref();\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = shallowRef([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScroller.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n Vue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return { __sfc: true, props, emit, open, settingsScroller, isMobile, selectedSection, linkClicked, registeredSections, hasNavigation, hasNavigationIcons, unfocusNavigationItem, sectionsOrderMap, handleSettingsNavigationClick, handleCloseModal, handleScroll, registerSection, unregisterSection, NcDialog, NcVNodes, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _setup.open ? _c(_setup.NcDialog, { staticClass: \"app-settings\", attrs: { \"content-classes\": \"app-settings__content\", \"navigation-classes\": \"app-settings__navigation\", \"additional-trap-elements\": _vm.additionalTrapElements, \"container\": _vm.container, \"close-on-click-outside\": \"\", \"navigation-aria-label\": _setup.t(\"Settings navigation\"), \"size\": \"large\", \"name\": _vm.name }, on: { \"update:open\": _setup.handleCloseModal }, scopedSlots: _vm._u([_setup.hasNavigation ? { key: \"navigation\", fn: function({ isCollapsed }) {\n return [!isCollapsed ? _c(\"ul\", { staticClass: \"navigation-list\" }, _vm._l(_setup.registeredSections, function(section) {\n return _c(\"li\", { key: section.id }, [_c(\"a\", { staticClass: \"navigation-list__link\", class: {\n \"navigation-list__link--active\": section.id === _setup.selectedSection,\n \"navigation-list__link--icon\": _setup.hasNavigationIcons\n }, attrs: { \"aria-current\": `${section.id === _setup.selectedSection}`, \"href\": `#settings-section_${section.id}`, \"tabindex\": \"0\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _setup.handleSettingsNavigationClick(section.id);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _setup.handleSettingsNavigationClick(section.id);\n } } }, [_setup.hasNavigationIcons ? _c(\"div\", { staticClass: \"navigation-list__link-icon\" }, [section.icon ? _c(_setup.NcVNodes, { attrs: { \"vnodes\": section.icon } }) : _vm._e()], 1) : _vm._e(), _c(\"span\", { staticClass: \"navigation-list__link-text\" }, [_vm._v(\" \" + _vm._s(section.name) + \" \")])])]);\n }), 0) : _vm._e()];\n } } : null], null, true) }, [_c(\"div\", { ref: \"settingsScroller\", on: { \"scroll\": _setup.handleScroll } }, [_vm._t(\"default\")], 2)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"65710757\"\n);\nconst NcAppSettingsDialog = __component__.exports;\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-CF-oMoP_.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsSection-Yg4NYCih.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsSection-Yg4NYCih.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppSettingsSection-Yg4NYCih.css';\nimport { defineComponent, useSlots, inject, computed, watch, onMounted, onBeforeUnmount } from \"vue\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { u as useAppSettingsDialog, A as APP_SETTINGS_LEGACY_DESIGN_KEY } from \"./useAppSettingsDialog-DbtEkXa4.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsSection\",\n props: {\n name: null,\n description: null,\n id: null,\n order: null\n },\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const { registerSection, unregisterSection } = useAppSettingsDialog();\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const htmlId = computed(() => \"settings-section_\" + props.id);\n watch(() => props.id, () => {\n if (!/^[a-z0-9\\-_]+$/.test(props.id)) {\n logger.warn(`Invalid id prop: ${props.id}. Only alphanumeric, dash and underscore are allowed.`);\n }\n }, { immediate: true });\n watch([() => props.id, () => props.name, () => props.order], ([newId, newName, newOrder], [oldId, ,]) => {\n unregisterSection(oldId);\n registerSection(newId, newName, newOrder, slots?.icon?.());\n });\n onMounted(() => {\n registerSection(props.id, props.name, props.order, slots?.icon?.());\n });\n onBeforeUnmount(() => {\n unregisterSection(props.id);\n });\n return { __sfc: true, props, slots, registerSection, unregisterSection, legacy, htmlId };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"section\", { staticClass: \"app-settings-section\", class: { \"app-settings-section__legacy\": _setup.legacy }, attrs: { \"id\": _setup.htmlId, \"aria-labelledby\": `${_setup.htmlId}--label` } }, [_c(\"h3\", { staticClass: \"app-settings-section__name\", attrs: { \"id\": `${_setup.htmlId}--label` } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _c(\"div\", { staticClass: \"app-settings-section__description\" }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]), _c(\"div\", { staticClass: \"app-settings-section__content\" }, [_vm._t(\"default\")], 2), _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"06cd755d\"\n);\nconst NcAppSettingsSection = __component__.exports;\nexport {\n NcAppSettingsSection as N\n};\n//# sourceMappingURL=NcAppSettingsSection-Cq1VIzMR.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsShortcutsSection-BuI-s4kd.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppSettingsShortcutsSection-BuI-s4kd.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppSettingsShortcutsSection-BuI-s4kd.css';\nimport { defineComponent } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-Cq1VIzMR.mjs\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return { __sfc: true, NcAppSettingsSection, t };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_14egw_20\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_14egw_12\",\n appSettingsSectionShortcuts\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcAppSettingsSection, { attrs: { \"id\": \"keyboard-shortcuts\", \"name\": _setup.t(\"Keyboard shortcuts\") } }, [_c(\"div\", { class: _vm.$style.appSettingsSectionShortcuts }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAppSettingsShortcutsSection = __component__.exports;\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-C089rPL6.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppSidebar-Bd2cj1W-.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppSidebar-Bd2cj1W-.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n/**\n * vue-simple-portal\n * version: 0.1.5,\n * (c) Thorsten Lünborg, 2021 - present\n * LICENCE: Apache-2.0\n * http://github.com/linusborg/vue-simple-portal\n*/\nimport Vue from 'vue';\nimport { nanoid } from 'nanoid/non-secure';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar config = {\n selector: \"vue-portal-target-\".concat(nanoid())\n};\nvar setSelector = function setSelector(selector) {\n return config.selector = selector;\n};\nvar isBrowser = typeof window !== 'undefined' && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== undefined;\n\nvar TargetContainer = Vue.extend({\n // as an abstract component, it doesn't appear in\n // the $parent chain of components.\n // which means the next parent of any component rendered inside of this oen\n // will be the parent from which is was sent\n // @ts-expect-error\n abstract: true,\n name: 'PortalOutlet',\n props: ['nodes', 'tag'],\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n render: function render(h) {\n var nodes = this.updatedNodes && this.updatedNodes();\n if (!nodes) return h();\n return nodes.length === 1 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes);\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el && el.parentNode.removeChild(el);\n }\n});\n\nvar Portal = Vue.extend({\n name: 'VueSimplePortal',\n props: {\n disabled: {\n type: Boolean\n },\n prepend: {\n type: Boolean\n },\n selector: {\n type: String,\n default: function _default() {\n return \"#\".concat(config.selector);\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = this.$scopedSlots && this.$scopedSlots.default();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes);\n }\n\n return h();\n },\n created: function created() {\n if (!this.getTargetEl()) {\n this.insertTargetEl();\n }\n },\n updated: function updated() {\n var _this = this;\n\n // We only update the target container component\n // if the scoped slot function is a fresh one\n // The new slot syntax (since Vue 2.6) can cache unchanged slot functions\n // and we want to respect that here.\n this.$nextTick(function () {\n if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) {\n _this.container.updatedNodes = _this.$scopedSlots.default;\n }\n\n _this.slotFn = _this.$scopedSlots.default;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmount();\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmount() : this.$nextTick(this.mount);\n }\n }\n },\n methods: {\n // This returns the element into which the content should be mounted.\n getTargetEl: function getTargetEl() {\n if (!isBrowser) return;\n return document.querySelector(this.selector);\n },\n insertTargetEl: function insertTargetEl() {\n if (!isBrowser) return;\n var parent = document.querySelector('body');\n var child = document.createElement(this.tag);\n child.id = this.selector.substring(1);\n parent.appendChild(child);\n },\n mount: function mount() {\n if (!isBrowser) return;\n var targetEl = this.getTargetEl();\n var el = document.createElement('DIV');\n\n if (this.prepend && targetEl.firstChild) {\n targetEl.insertBefore(el, targetEl.firstChild);\n } else {\n targetEl.appendChild(el);\n }\n\n this.container = new TargetContainer({\n el: el,\n parent: this,\n propsData: {\n tag: this.tag,\n nodes: this.$scopedSlots.default\n }\n });\n },\n unmount: function unmount() {\n if (this.container) {\n this.container.$destroy();\n delete this.container;\n }\n }\n }\n});\n\nfunction install(_Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _Vue.component(options.name || 'portal', Portal);\n\n if (options.defaultSelector) {\n setSelector(options.defaultSelector);\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n // plugin was inlcuded directly in a browser\n Vue.use(install);\n}\n\nexport default install;\nexport { Portal, config, setSelector };\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nexport { nanoid, customAlphabet }\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcCheckboxRadioSwitch-BcHKt-lf.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcCheckboxRadioSwitch-BcHKt-lf.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { inject } from \"vue\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INSIDE_RADIO_GROUP_KEY = Symbol.for(\"insideRadioGroup\");\nfunction useInsideRadioGroup() {\n return inject(INSIDE_RADIO_GROUP_KEY, void 0);\n}\nexport {\n INSIDE_RADIO_GROUP_KEY as I,\n useInsideRadioGroup as u\n};\n//# sourceMappingURL=useNcRadioGroup-DaZbEKbf.mjs.map\n","import '../assets/NcCheckboxRadioSwitch-BcHKt-lf.css';\nimport { computed, onMounted, useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, E as n, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u as useInsideRadioGroup } from \"./useNcRadioGroup-DaZbEKbf.mjs\";\nconst _sfc_main$8 = {\n name: \"CheckboxBlankOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$8 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-blank-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$8 = [];\nvar __component__$8 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$8,\n _sfc_render$8,\n _sfc_staticRenderFns$8,\n false,\n null,\n null\n);\nconst CheckboxBlankOutline = __component__$8.exports;\nconst _sfc_main$7 = {\n name: \"CheckboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$7 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$7,\n _sfc_render$7,\n _sfc_staticRenderFns$7,\n false,\n null,\n null\n);\nconst CheckboxMarked = __component__$7.exports;\nconst _sfc_main$6 = {\n name: \"MinusBoxIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon minus-box-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst MinusBox = __component__$6.exports;\nconst _sfc_main$5 = {\n name: \"RadioboxBlankIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$5 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-blank-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n null\n);\nconst RadioboxBlank = __component__$5.exports;\nconst _sfc_main$4 = {\n name: \"RadioboxMarkedIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon radiobox-marked-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst RadioboxMarked = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"ToggleSwitchIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon toggle-switch-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M17,15A3,3 0 0,1 14,12A3,3 0 0,1 17,9A3,3 0 0,1 20,12A3,3 0 0,1 17,15Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst ToggleSwitch = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"ToggleSwitchOffIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon toggle-switch-off-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M17,7H7A5,5 0 0,0 2,12A5,5 0 0,0 7,17H17A5,5 0 0,0 22,12A5,5 0 0,0 17,7M7,15A3,3 0 0,1 4,12A3,3 0 0,1 7,9A3,3 0 0,1 10,12A3,3 0 0,1 7,15Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst ToggleSwitchOff = __component__$2.exports;\nconst TYPE_CHECKBOX = \"checkbox\";\nconst TYPE_RADIO = \"radio\";\nconst TYPE_SWITCH = \"switch\";\nconst TYPE_BUTTON = \"button\";\nconst _sfc_main$1 = {\n name: \"NcCheckboxContent\",\n components: {\n NcLoadingIcon\n },\n props: {\n /**\n * Class for the icon element\n */\n iconClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Class for the text element\n */\n textClass: {\n type: [String, Object],\n default: null\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * True if the entry is checked\n */\n isChecked: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Icon size\n */\n iconSize: {\n type: Number,\n default: 24\n },\n /**\n * Label id attribute\n */\n labelId: {\n type: String,\n required: true\n },\n /**\n * Description id attribute\n */\n descriptionId: {\n type: String,\n required: true\n }\n },\n computed: {\n isButtonType() {\n return this.type === TYPE_BUTTON;\n },\n /**\n * Returns the proper Material icon depending on the select case\n *\n * @return {object}\n */\n checkboxRadioIconElement() {\n if (this.type === TYPE_RADIO) {\n if (this.isChecked) {\n return RadioboxMarked;\n }\n return RadioboxBlank;\n }\n if (this.type === TYPE_SWITCH) {\n if (this.isChecked) {\n return ToggleSwitch;\n }\n return ToggleSwitchOff;\n }\n if (this.indeterminate) {\n return MinusBox;\n }\n if (this.isChecked) {\n return CheckboxMarked;\n }\n return CheckboxBlankOutline;\n }\n }\n};\nvar _sfc_render$1 = function render8() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"checkbox-content\", class: {\n [\"checkbox-content-\" + _vm.type]: true,\n \"checkbox-content--button-variant\": _vm.buttonVariant,\n \"checkbox-content--has-text\": !!_vm.$slots.default\n } }, [_c(\"span\", { staticClass: \"checkbox-content__icon\", class: {\n \"checkbox-content__icon--checked\": _vm.isChecked,\n [_vm.iconClass]: true\n }, attrs: { \"aria-hidden\": true, \"inert\": \"\" } }, [_vm._t(\"icon\", function() {\n return [_vm.loading ? _c(\"NcLoadingIcon\") : !_vm.buttonVariant ? _c(_vm.checkboxRadioIconElement, { tag: \"component\", attrs: { \"size\": _vm.iconSize } }) : _vm._e()];\n }, { \"checked\": _vm.isChecked, \"loading\": _vm.loading })], 2), _vm.$slots.default || _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__wrapper\" }, [_vm.$slots.default ? _c(\"span\", { staticClass: \"checkbox-content__text\", class: _vm.textClass, attrs: { \"id\": _vm.labelId } }, [_vm._t(\"default\")], 2) : _vm._e(), !_vm.isButtonType && _vm.$slots.description ? _c(\"span\", { staticClass: \"checkbox-content__description\", attrs: { \"id\": _vm.descriptionId } }, [_vm._t(\"description\")], 2) : _vm._e()]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"cfa76919\"\n);\nconst NcCheckboxContent = __component__$1.exports;\nregister();\nconst __default__ = {\n name: \"NcCheckboxRadioSwitch\",\n components: {\n NcCheckboxContent\n },\n // We need to pass attributes to the input element\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Unique id attribute of the input\n */\n id: {\n type: String,\n default: () => \"checkbox-radio-switch-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Unique id attribute of the wrapper element\n */\n wrapperId: {\n type: String,\n default: null\n },\n /**\n * Input name. Required for radio, optional for checkbox, and ignored\n * for button.\n */\n name: {\n type: String,\n default: null\n },\n /**\n * Required if no text is set.\n * The aria-label is forwarded to the input or button.\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Type of the input. checkbox, radio, switch, or button.\n *\n * Only use button when used in a `tablist` container and the\n * `tab` role is set.\n *\n * @type {'checkbox'|'radio'|'switch'|'button'}\n */\n type: {\n type: String,\n default: \"checkbox\",\n validator: (type) => [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_SWITCH,\n TYPE_BUTTON\n ].includes(type)\n },\n /**\n * Toggle the alternative button style\n *\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariant: {\n type: Boolean,\n default: false\n },\n /**\n * Are the elements are all direct siblings?\n * If so they will be grouped horizontally or vertically\n *\n * @type {'no'|'horizontal'|'vertical'}\n * @deprecated - Use `NcRadioGroup` instead\n */\n buttonVariantGrouped: {\n type: String,\n default: \"no\",\n validator: (v) => [\"no\", \"vertical\", \"horizontal\"].includes(v)\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n checked: {\n type: [Boolean, Array, String],\n default: void 0\n },\n /**\n * Checkbox value\n */\n modelValue: {\n type: [Boolean, Array, String],\n default: false\n },\n /**\n * Value to be synced on check\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Disabled state\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Indeterminate state\n */\n indeterminate: {\n type: Boolean,\n default: false\n },\n /**\n * Required state\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Loading state\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Wrapping element tag\n *\n * When `type` is set to `button` this will be ignored\n *\n * Defaults to `span`\n */\n wrapperElement: {\n type: String,\n default: null\n },\n /**\n * Description\n *\n * This is unsupported when using button has type\n */\n description: {\n type: String,\n default: null\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:checked\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup(props) {\n const radioGroup = useInsideRadioGroup();\n const internalType = computed(() => radioGroup?.value ? TYPE_RADIO : props.type);\n onMounted(() => radioGroup?.value.register(false));\n const model = useModelMigration(\"checked\", \"update:checked\");\n const internalModelValue = computed({\n get() {\n if (radioGroup?.value) {\n return radioGroup.value.modelValue;\n }\n return model.value;\n },\n set(value) {\n if (radioGroup?.value) {\n radioGroup.value.onUpdate(value);\n } else {\n model.value = value;\n }\n }\n });\n return {\n internalType,\n internalModelValue,\n labelId: GenRandomId(),\n descriptionId: GenRandomId()\n };\n },\n computed: {\n dataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => key.startsWith(\"data-\")));\n },\n nonDataAttrs() {\n return Object.fromEntries(Object.entries(this.$attrs).filter(([key]) => !key.startsWith(\"data-\")));\n },\n isButtonType() {\n return this.internalType === TYPE_BUTTON;\n },\n computedWrapperElement() {\n if (this.isButtonType) {\n return \"button\";\n }\n if (this.wrapperElement !== null) {\n return this.wrapperElement;\n }\n return \"span\";\n },\n listeners() {\n if (this.isButtonType) {\n return {\n click: this.onToggle\n };\n }\n return {\n change: this.onToggle\n };\n },\n iconSize() {\n return this.internalType === TYPE_SWITCH ? 36 : 24;\n },\n cssIconSize() {\n return this.iconSize + \"px\";\n },\n cssIconHeight() {\n return this.internalType === TYPE_SWITCH ? \"16px\" : this.cssIconSize;\n },\n /**\n * Return the input type.\n * Switch is not an official type\n *\n * @return {string}\n */\n inputType() {\n const nativeTypes = [\n TYPE_CHECKBOX,\n TYPE_RADIO,\n TYPE_BUTTON\n ];\n if (nativeTypes.includes(this.internalType)) {\n return this.internalType;\n }\n return TYPE_CHECKBOX;\n },\n /**\n * Check if that entry is checked\n * If value is defined, we use that as the checked value\n * If not, we expect true/false in checked state\n *\n * @return {boolean}\n */\n isChecked() {\n if (this.value !== null) {\n if (Array.isArray(this.internalModelValue)) {\n return [...this.internalModelValue].indexOf(this.value) > -1;\n }\n return this.internalModelValue === this.value;\n }\n return this.internalModelValue === true;\n },\n hasIndeterminate() {\n return [\n TYPE_CHECKBOX,\n TYPE_RADIO\n ].includes(this.inputType);\n }\n },\n mounted() {\n if (this.name && this.internalType === TYPE_CHECKBOX) {\n if (!Array.isArray(this.internalModelValue)) {\n throw new Error(\"When using groups of checkboxes, the updated value will be an array.\");\n }\n }\n if (this.name && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches are not made to be used for data sets. Please use checkboxes instead.\");\n }\n if (typeof this.internalModelValue !== \"boolean\" && this.internalType === TYPE_SWITCH) {\n throw new Error(\"Switches can only be used with boolean as modelValue prop.\");\n }\n },\n methods: {\n t,\n n,\n onToggle(event) {\n if (this.disabled || event.target.tagName.toLowerCase() === \"a\") {\n return;\n }\n if (this.internalType === TYPE_RADIO) {\n this.internalModelValue = this.value;\n return;\n }\n if (this.internalType === TYPE_SWITCH) {\n this.internalModelValue = !this.isChecked;\n return;\n }\n if (typeof this.internalModelValue === \"boolean\") {\n this.internalModelValue = !this.internalModelValue;\n return;\n }\n const values = this.getInputsSet().filter((input) => input.checked).map((input) => input.value);\n if (values.includes(this.value)) {\n this.internalModelValue = values.filter((v) => v !== this.value);\n } else {\n this.internalModelValue = [...values, this.value];\n }\n },\n /**\n * Get the input set based on this name\n *\n * @return {Node[]}\n */\n getInputsSet() {\n return [...document.getElementsByName(this.name)];\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"1f97b3de\": _vm.cssIconSize,\n \"be84d992\": _vm.cssIconHeight\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render9() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.computedWrapperElement, _vm._g(_vm._b({ tag: \"component\", staticClass: \"checkbox-radio-switch\", class: {\n [\"checkbox-radio-switch-\" + _vm.internalType]: _vm.internalType,\n \"checkbox-radio-switch--checked\": _vm.isChecked,\n \"checkbox-radio-switch--disabled\": _vm.disabled,\n \"checkbox-radio-switch--indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false,\n \"checkbox-radio-switch--button-variant\": _vm.buttonVariant,\n \"checkbox-radio-switch--button-variant-v-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"vertical\",\n \"checkbox-radio-switch--button-variant-h-grouped\": _vm.buttonVariant && _vm.buttonVariantGrouped === \"horizontal\",\n \"button-vue\": _vm.isButtonType\n }, attrs: { \"id\": _vm.wrapperId, \"aria-label\": _vm.isButtonType && _vm.ariaLabel ? _vm.ariaLabel : void 0, \"type\": _vm.isButtonType ? \"button\" : null } }, \"component\", _vm.isButtonType ? _vm.$attrs : _vm.dataAttrs, false), _vm.isButtonType ? _vm.listeners : null), [!_vm.isButtonType ? _c(\"input\", _vm._g(_vm._b({ staticClass: \"checkbox-radio-switch__input\", attrs: { \"id\": _vm.id, \"aria-labelledby\": !_vm.isButtonType && !_vm.ariaLabel ? _vm.labelId : null, \"aria-describedby\": !_vm.isButtonType && (_vm.description || _vm.$slots.description) ? _vm.descriptionId : _vm.nonDataAttrs[\"aria-describedby\"], \"aria-label\": _vm.ariaLabel || void 0, \"disabled\": _vm.disabled, \"type\": _vm.inputType, \"required\": _vm.required, \"name\": _vm.name }, domProps: { \"value\": _vm.value, \"checked\": _vm.isChecked, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : null } }, \"input\", _vm.nonDataAttrs, false), _vm.listeners)) : _vm._e(), _c(\"NcCheckboxContent\", { staticClass: \"checkbox-radio-switch__content\", attrs: { \"id\": !_vm.isButtonType ? `${_vm.id}-label` : void 0, \"icon-class\": \"checkbox-radio-switch__icon\", \"text-class\": \"checkbox-radio-switch__text\", \"type\": _vm.internalType, \"indeterminate\": _vm.hasIndeterminate ? _vm.indeterminate : false, \"button-variant\": _vm.buttonVariant, \"is-checked\": _vm.isChecked, \"loading\": _vm.loading, \"label-id\": _vm.labelId, \"description-id\": _vm.descriptionId, \"icon-size\": _vm.iconSize }, nativeOn: { \"click\": function($event) {\n return _vm.onToggle.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\")];\n }, proxy: true }, _vm.$slots.description || _vm.description ? { key: \"description\", fn: function() {\n return [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })];\n }, proxy: true } : null], null, true) }, [_vm._t(\"default\")], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"24ed12a5\"\n);\nconst NcCheckboxRadioSwitch = __component__.exports;\nexport {\n NcCheckboxRadioSwitch as N\n};\n//# sourceMappingURL=NcCheckboxRadioSwitch-DAPHFb0L.mjs.map\n","const directive = {\n inserted(el) {\n el.focus();\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=Focus.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import { Options, tokenize } from 'linkifyjs';\n\n/**\n\tConvert strings of text into linkable HTML text\n*/\nfunction escapeText(text) {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction escapeAttr(href) {\n return href.replace(/\"/g, '"');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n let val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction defaultRender({\n tagName,\n attributes,\n content\n}) {\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}</${tagName}>`;\n}\n\n/**\n * Convert a plan text string to an HTML string with links. Expects that the\n * given strings does not contain any HTML entities. Use the linkify-html\n * interface if you need to parse HTML entities.\n *\n * @param {string} str string to linkify\n * @param {import('linkifyjs').Opts} [opts] overridable options\n * @returns {string}\n */\nfunction linkifyStr(str, opts = {}) {\n opts = new Options(opts, defaultRender);\n const tokens = tokenize(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && opts.get('nl2br')) {\n result.push('<br>\\n');\n } else if (!token.isLink || !opts.check(token)) {\n result.push(escapeText(token.toString()));\n } else {\n result.push(opts.render(token));\n }\n }\n return result.join('');\n}\nif (!String.prototype.linkify) {\n Object.defineProperty(String.prototype, 'linkify', {\n writable: false,\n value: function linkify(options) {\n return linkifyStr(this, options);\n }\n });\n}\n\nexport { linkifyStr as default };\n","import linkifyStr from \"linkify-string\";\nfunction Linkify(text) {\n return linkifyStr(text, {\n defaultProtocol: \"https\",\n target: \"_blank\",\n className: \"external linkified\",\n attributes: {\n rel: \"nofollow noopener noreferrer\"\n }\n });\n}\nconst directive = (el, binding) => {\n if (binding.value?.linkify === true) {\n el.innerHTML = Linkify(binding.value.text);\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=Linkify.mjs.map\n","import { inject } from \"vue\";\nimport directive from \"../Directives/Linkify.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n __name: \"NcAppSidebarHeader\",\n props: {\n /**\n * The name used in NcAppSidebar header.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Title to display for the name.\n */\n title: {\n type: String,\n default: void 0\n },\n /**\n * Linkify the name.\n */\n linkify: {\n type: Boolean\n }\n },\n setup(__props) {\n const headerRef = inject(\"NcAppSidebar:header:ref\");\n return { __sfc: true, headerRef, vLinkify: directive };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"h2\", { directives: [{ name: \"linkify\", rawName: \"v-linkify\", value: { text: _vm.name, linkify: _vm.linkify }, expression: \"{ text: name, linkify }\" }], ref: \"headerRef\", attrs: { \"tabindex\": \"-1\", \"title\": _vm.title } }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcAppSidebarHeader = __component__.exports;\nexport {\n NcAppSidebarHeader as N\n};\n//# sourceMappingURL=NcAppSidebarHeader-CBE4tNYb.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcEmptyContent-CUFc_Dds.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcEmptyContent-CUFc_Dds.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcEmptyContent-CUFc_Dds.css';\nimport { c as createElementId } from \"../chunks/createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcEmptyContent\",\n props: {\n /**\n * A header message about an empty content shown\n *\n * @example 'No comments'\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Desription of the empty content\n *\n * @example 'No comments yet, start the conversation!'\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n nameId: createElementId()\n };\n },\n computed: {\n hasName() {\n return this.name !== \"\" || this.$slots.name;\n },\n /**\n * Check if a description is given as either property or slot\n */\n hasDescription() {\n return this.description !== \"\" || this.$slots.description?.[0];\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"empty-content\", attrs: { \"aria-labelledby\": _vm.nameId, \"role\": \"note\" } }, [_vm.$slots.icon ? _c(\"div\", { staticClass: \"empty-content__icon\", attrs: { \"aria-hidden\": \"true\" } }, [_vm._t(\"icon\")], 2) : _vm._e(), _vm.hasName ? _c(\"div\", { staticClass: \"empty-content__name\", attrs: { \"id\": _vm.nameId } }, [_vm._t(\"name\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.name) + \" \")];\n })], 2) : _vm._e(), _vm.hasDescription ? _c(\"p\", { staticClass: \"empty-content__description\" }, [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })], 2) : _vm._e(), _vm.$slots.action ? _c(\"div\", { staticClass: \"empty-content__action\" }, [_vm._t(\"action\")], 2) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c3123941\"\n);\nconst NcEmptyContent = __component__.exports;\nexport {\n NcEmptyContent as default\n};\n//# sourceMappingURL=NcEmptyContent.mjs.map\n","import '../assets/NcAppSidebar-Bd2cj1W-.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport Vue, { ref, provide } from \"vue\";\nimport { A as ArrowRight } from \"./ArrowRight-CY2b9hgN.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-DAPHFb0L.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { useIsSmallMobile } from \"../Composables/useIsMobile.mjs\";\nimport directive from \"../Directives/Focus.mjs\";\nimport { r as register, N as t14, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { N as NcAppSidebarHeader } from \"./NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nconst _sfc_main$4 = {\n name: \"DockRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon dock-right-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconDockRight = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst Star = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon star-outline-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst StarOutline = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcCheckboxRadioSwitch,\n NcVNodes\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data() {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without active.sync\n */\n activeTab: \"\"\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some((tab) => tab.id === this.active) ? this.active : this.tabs.length > 0 ? this.tabs[0].id : \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return OC.Util.naturalSortCompare(a.name, b.name);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"app-sidebar-tabs\" }, [_vm.hasMultipleTabs || _vm.showForSingleTab ? _c(\"div\", { staticClass: \"app-sidebar-tabs__nav\", attrs: { \"role\": \"tablist\" }, on: { \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusPreviousTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusNextTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusActiveTabContent.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"home\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"end\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-up\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusFirstTab.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"page-down\", void 0, $event.key, void 0)) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.focusLastTab.apply(null, arguments);\n }] } }, _vm._l(_vm.tabs, function(tab) {\n return _c(\"NcCheckboxRadioSwitch\", { key: tab.id, staticClass: \"app-sidebar-tabs__tab\", class: { active: tab.id === _vm.activeTab }, attrs: { \"aria-controls\": `tab-${tab.id}`, \"aria-selected\": String(_vm.activeTab === tab.id), \"button-variant\": true, \"checked\": _vm.activeTab === tab.id, \"wrapper-id\": `tab-button-${tab.id}`, \"tabindex\": _vm.activeTab === tab.id ? 0 : -1, \"button-variant-grouped\": \"horizontal\", \"role\": \"tab\", \"type\": \"button\" }, on: { \"update:checked\": function($event) {\n return _vm.setActive(tab.id);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcVNodes\", { attrs: { \"vnodes\": tab.renderIcon() } }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-icon\", class: tab.icon })])];\n }, proxy: true }], null, true) }, [_c(\"span\", { staticClass: \"app-sidebar-tabs__tab-caption\" }, [_vm._v(\" \" + _vm._s(tab.name) + \" \")])]);\n }), 1) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-tabs__content\", class: { \"app-sidebar-tabs__content--multiple\": _vm.hasMultipleTabs } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"4e1cbc50\"\n);\nconst NcAppSidebarTabs = __component__$1.exports;\nregister(t14);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n Teleport: Portal,\n NcActions,\n NcAppSidebarHeader,\n NcAppSidebarTabs,\n ArrowRight,\n IconDockRight,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n Close,\n Star,\n StarOutline\n },\n directives: {\n focus: directive,\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: \"NcContent:selector\",\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Note: in @nextcloud/vue v9 this prop is required\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closing\",\n \"closed\",\n \"opening\",\n \"opened\",\n \"figure-click\",\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submit-name\",\n \"dismiss-editing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: GenRandomId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigure() {\n return this.$slots.header || this.background;\n },\n hasFigureClickListener() {\n return this.$listeners[\"figure-click\"];\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeDestroy() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigarion\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onBeforeEnter(element) {\n this.$emit(\"opening\", element);\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onBeforeLeave(element) {\n this.$emit(\"closing\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figure-click\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n this.$nextTick(() => this.$refs.nameInput.focus());\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n Vue.util.warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submit-name\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismiss-editing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"transition\", { attrs: { \"appear\": \"\", \"name\": \"slide-right\" }, on: { \"before-enter\": _vm.onBeforeEnter, \"after-enter\": _vm.onAfterEnter, \"before-leave\": _vm.onBeforeLeave, \"after-leave\": _vm.onAfterLeave } }, [_c(\"aside\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.open, expression: \"open\" }], ref: \"sidebar\", staticClass: \"app-sidebar\", attrs: { \"id\": \"app-sidebar-vue\", \"aria-labelledby\": `app-sidebar-vue-${_vm.uid}__header` }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeydownEsc.apply(null, arguments);\n } } }, [_vm.ncContentSelector && !_vm.open && !_vm.noToggle ? _c(\"Teleport\", { attrs: { \"selector\": _vm.ncContentSelector } }, [_c(\"NcButton\", _vm._b({ ref: \"toggle\", staticClass: \"app-sidebar__toggle\", class: _vm.toggleClasses, attrs: { \"aria-label\": _vm.t(\"Open sidebar\"), \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"update:open\", true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"toggle-icon\", function() {\n return [_c(\"IconDockRight\", { attrs: { \"size\": 20 } })];\n })];\n }, proxy: true }], null, true) }, \"NcButton\", _vm.toggleAttrs, false))], 1) : _vm._e(), _c(\"header\", { staticClass: \"app-sidebar-header\", class: {\n \"app-sidebar-header--with-figure\": _vm.hasFigure,\n \"app-sidebar-header--compact\": _vm.compact\n } }, [!_vm.empty ? _vm._t(\"info\", function() {\n return [_c(\"div\", { staticClass: \"app-sidebar-header__info\" }, [_vm.hasFigure ? _c(\"div\", { staticClass: \"app-sidebar-header__figure\", class: {\n \"app-sidebar-header__figure--with-action\": _vm.hasFigureClickListener\n }, style: {\n backgroundImage: `url(${_vm.background})`\n }, attrs: { \"tabindex\": \"0\" }, on: { \"click\": _vm.onFigureClick, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onFigureClick.apply(null, arguments);\n } } }, [_vm._t(\"header\")], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__desc\", class: {\n \"app-sidebar-header__desc--with-tertiary-action\": _vm.canStar || _vm.$slots[\"tertiary-actions\"],\n \"app-sidebar-header__desc--editable\": _vm.nameEditable && !_vm.subname,\n \"app-sidebar-header__desc--with-subname--editable\": _vm.nameEditable && _vm.subname,\n \"app-sidebar-header__desc--without-actions\": !_vm.$slots[\"secondary-actions\"]\n } }, [_vm.canStar || _vm.$slots[\"tertiary-actions\"] ? _c(\"div\", { staticClass: \"app-sidebar-header__tertiary-actions\" }, [_vm._t(\"tertiary-actions\", function() {\n return [_vm.canStar ? _c(\"NcButton\", { staticClass: \"app-sidebar-header__star\", attrs: { \"aria-label\": _vm.favoriteTranslated, \"pressed\": _vm.isStarred, \"variant\": \"secondary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleStarred.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.starLoading ? _c(\"NcLoadingIcon\") : _vm.isStarred ? _c(\"Star\", { attrs: { \"size\": 20 } }) : _c(\"StarOutline\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 2575459756) }) : _vm._e()];\n })], 2) : _vm._e(), _c(\"div\", { staticClass: \"app-sidebar-header__name-container\" }, [_c(\"div\", { staticClass: \"app-sidebar-header__mainname-container\" }, [_c(\"NcAppSidebarHeader\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.nameEditable, expression: \"!nameEditable\" }], staticClass: \"app-sidebar-header__mainname\", attrs: { \"name\": _vm.name, \"linkify\": _vm.linkifyName, \"title\": _vm.title, \"tabindex\": _vm.nameEditable ? 0 : -1 }, nativeOn: { \"click\": function($event) {\n if ($event.target !== $event.currentTarget) return null;\n return _vm.editName.apply(null, arguments);\n } } }), _vm.nameEditable ? [_c(\"form\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: () => _vm.onSubmitName(), expression: \"() => onSubmitName()\" }], staticClass: \"app-sidebar-header__mainname-form\", on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.onSubmitName.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"focus\", rawName: \"v-focus\" }], ref: \"nameInput\", staticClass: \"app-sidebar-header__mainname-input\", attrs: { \"type\": \"text\", \"placeholder\": _vm.namePlaceholder }, domProps: { \"value\": _vm.name }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n return _vm.onDismissEditing.apply(null, arguments);\n }, \"input\": _vm.onNameInput } }), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.changeNameTranslated, \"type\": \"submit\", \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowRight\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1252225425) })], 1)] : _vm._e(), _vm.$slots[\"secondary-actions\"] ? _c(\"NcActions\", { staticClass: \"app-sidebar-header__menu\", attrs: { \"force-menu\": _vm.forceMenu } }, [_vm._t(\"secondary-actions\")], 2) : _vm._e()], 2), _vm.subname.trim() !== \"\" || _vm.$slots[\"subname\"] ? _c(\"p\", { staticClass: \"app-sidebar-header__subname\", attrs: { \"title\": _vm.subtitle || void 0 } }, [_vm._t(\"subname\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.subname) + \" \")];\n })], 2) : _vm._e()])])])];\n }) : _c(\"NcAppSidebarHeader\", { staticClass: \"app-sidebar-header__mainname--hidden\", attrs: { \"name\": _vm.name, \"tabindex\": \"-1\" } }), _c(\"NcButton\", { ref: \"closeButton\", staticClass: \"app-sidebar__close\", attrs: { \"aria-label\": _vm.closeTranslated, \"title\": _vm.closeTranslated, \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.closeSidebar.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"Close\", { attrs: { \"size\": 20 } })];\n }, proxy: true }]) }), _vm.$slots[\"description\"] && !_vm.empty ? _c(\"div\", { staticClass: \"app-sidebar-header__description\" }, [_vm._t(\"description\")], 2) : _vm._e()], 2), _c(\"NcAppSidebarTabs\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.loading, expression: \"!loading\" }], ref: \"tabs\", attrs: { \"active\": _vm.active, \"force-tabs\": _vm.forceTabs }, on: { \"update:active\": _vm.onUpdateActive } }, [_vm._t(\"default\")], 2), _vm.loading ? _c(\"NcEmptyContent\", { scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"NcLoadingIcon\", { attrs: { \"size\": 64 } })];\n }, proxy: true }], null, false, 826850984) }) : _vm._e()], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"1023e7a5\"\n);\nconst NcAppSidebar = __component__.exports;\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-D5IUeKjd.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAppSidebarTab-IcebyGtN.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAppSidebarTab-IcebyGtN.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAppSidebarTab-IcebyGtN.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcAppSidebarTab\",\n inject: [\"registerTab\", \"unregisterTab\", \"getActiveTab\", \"isTablistShown\"],\n props: {\n /**\n * Unique id of the sidebar tab\n */\n id: {\n type: String,\n required: true\n },\n /**\n * Tab name in navigation\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Tab icon's html class in navigation. Used if #icon slot is not provided\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Tab order in navigation. If not provided, name is used.\n */\n order: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"bottom-reached\",\n \"scroll\"\n ],\n expose: [\"id\", \"name\", \"icon\", \"order\", \"renderIcon\"],\n computed: {\n /**\n * Is the current tab an active tab, that should be shown?\n *\n * @return {boolean}\n */\n isActive() {\n return this.getActiveTab() === this.id;\n }\n },\n created() {\n this.registerTab(this);\n },\n beforeDestroy() {\n this.unregisterTab(this.id);\n },\n methods: {\n onScroll(event) {\n if (this.$el.scrollHeight - this.$el.scrollTop === this.$el.clientHeight) {\n this.$emit(\"bottom-reached\", event);\n }\n this.$emit(\"scroll\", event);\n },\n /**\n * Render tab's icon slot if any\n *\n * @return {import('vue').VNode[]}\n */\n renderIcon() {\n return this.$scopedSlots.icon?.();\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"section\", { staticClass: \"app-sidebar__tab\", class: { \"app-sidebar__tab--active\": _vm.isActive }, attrs: { \"id\": `tab-${_vm.id}`, \"aria-hidden\": !_vm.isActive, \"aria-label\": _vm.isTablistShown() ? void 0 : _vm.name, \"aria-labelledby\": _vm.isTablistShown() ? `tab-button-${_vm.id}` : void 0, \"tabindex\": _vm.isTablistShown() ? 0 : -1, \"role\": _vm.isTablistShown() ? \"tabpanel\" : void 0 }, on: { \"scroll\": _vm.onScroll } }, [_c(\"h3\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")]), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bc553f62\"\n);\nconst NcAppSidebarTab = __component__.exports;\nexport {\n NcAppSidebarTab as default\n};\n//# sourceMappingURL=NcAppSidebarTab.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantButton-owGSr0s0.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantButton-owGSr0s0.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantIcon-BoOnqVRr.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantIcon-BoOnqVRr.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAssistantIcon-BoOnqVRr.css';\nimport { useCssVars, computed } from \"vue\";\nimport { e as mdiCreation } from \"./mdi-C_j0YT8c.mjs\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst assistantIcon = \"_assistantIcon_1ndue_20\";\nconst assistantIcon_inline = \"_assistantIcon_inline_1ndue_25\";\nconst assistantIcon__svg = \"_assistantIcon__svg_1ndue_30\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1ndue_12\",\n assistantIcon,\n assistantIcon_inline,\n assistantIcon__svg\n};\nconst _sfc_main = {\n __name: \"NcAssistantIcon\",\n props: {\n /**\n * Set if the icon should be used as inline content e.g. within text.\n * By default the icon is made a block element for use inside `icon`-slots.\n */\n inline: {\n type: Boolean,\n default: false\n },\n /**\n * Size of the icon.\n * Defaults to the proper size to be used in buttons and other interactive elements\n * like all `Nc*` components with an icon slot.\n */\n size: {\n type: Number,\n default: 20\n }\n },\n setup(__props) {\n const props = __props;\n useCssVars((_vm, _setup) => ({\n \"a843d9d2\": _setup.sizePx\n }));\n const isDarkTheme = useIsDarkTheme();\n const gradientId = createElementId();\n const sizePx = computed(() => `${props.size}px`);\n return { __sfc: true, props, isDarkTheme, gradientId, sizePx, mdiCreation };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"span\", { class: [_vm.$style.assistantIcon, _vm.inline && _vm.$style.assistantIcon_inline], attrs: { \"aria-hidden\": \"true\", \"role\": \"img\" } }, [_c(\"svg\", { class: _vm.$style.assistantIcon__svg, attrs: { \"viewBox\": \"0 0 24 24\", \"xmlns\": \"http://www.w3.org/2000/svg\" } }, [_c(\"defs\", [_setup.isDarkTheme ? _c(\"linearGradient\", { attrs: { \"id\": _setup.gradientId, \"gradientTransform\": \"rotateX(285)\" } }, [_c(\"stop\", { attrs: { \"offset\": \"15%\", \"stop-color\": \"#CDACE7\" } }), _c(\"stop\", { attrs: { \"offset\": \"40%\", \"stop-color\": \"#008FDB\" } }), _c(\"stop\", { attrs: { \"offset\": \"82%\", \"stop-color\": \"#A180E0\" } })], 1) : _c(\"linearGradient\", { attrs: { \"id\": _setup.gradientId, \"gradientTransform\": \"rotateX(285)\" } }, [_c(\"stop\", { attrs: { \"offset\": \"15%\", \"stop-color\": \"#9669D3\" } }), _c(\"stop\", { attrs: { \"offset\": \"40%\", \"stop-color\": \"#00679E\" } }), _c(\"stop\", { attrs: { \"offset\": \"80%\", \"stop-color\": \"#492083\" } })], 1)], 1), _c(\"path\", { attrs: { \"d\": _setup.mdiCreation, \"fill\": `url('#${_setup.gradientId}')` } })])]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAssistantIcon = __component__.exports;\nexport {\n NcAssistantIcon as N\n};\n//# sourceMappingURL=NcAssistantIcon-B9L1Ih5x.mjs.map\n","import '../assets/NcAssistantButton-owGSr0s0.css';\nimport { e as mdiCreation } from \"./mdi-C_j0YT8c.mjs\";\nimport { N as NcAssistantIcon } from \"./NcAssistantIcon-B9L1Ih5x.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst assistantButton = \"_assistantButton_1xe1x_20\";\nconst assistantButton_disabled = \"_assistantButton_disabled_1xe1x_30\";\nconst assistantButton_primary = \"_assistantButton_primary_1xe1x_34\";\nconst assistantButton__icon = \"_assistantButton__icon_1xe1x_38\";\nconst assistantButton__text = \"_assistantButton__text_1xe1x_39\";\nconst assistantButton__button = \"_assistantButton__button_1xe1x_42\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1xe1x_12\",\n assistantButton,\n assistantButton_disabled,\n assistantButton_primary,\n assistantButton__icon,\n assistantButton__text,\n assistantButton__button\n};\nconst _sfc_main = {\n __name: \"NcAssistantButton\",\n props: {\n /**\n * Toggles the disabled state of the button on and off.\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * The readable text of the button.\n * Can be overriden by using the `default` slot.\n *\n * If neither this is set nor the `default` slot is used, you will have to set at least `aria-label` or `aria-labelledby`.\n */\n text: {\n type: String,\n default: \"\"\n },\n /**\n * The button variant.\n * In most cases the `secondary` style should be used.\n */\n variant: {\n type: String,\n default: \"secondary\"\n }\n },\n emits: [\n /**\n * The mouse click event when the button is triggered.\n */\n \"click\"\n ],\n setup(__props) {\n return { __sfc: true, mdiCreation, NcAssistantIcon, NcButton, NcIconSvgWrapper };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: [{\n [_vm.$style.assistantButton_disabled]: _vm.disabled,\n [_vm.$style.assistantButton_primary]: _vm.variant === \"primary\"\n }, _vm.$style.assistantButton] }, [_c(_setup.NcButton, { class: _vm.$style.assistantButton__button, attrs: { \"disabled\": _vm.disabled, \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.variant === \"primary\" ? _c(_setup.NcIconSvgWrapper, { class: _vm.$style.assistantButton__icon, attrs: { \"path\": _setup.mdiCreation } }) : _c(_setup.NcAssistantIcon)];\n }, proxy: true }, _vm.text || _vm.$scopedSlots.default ? { key: \"default\", fn: function() {\n return [_c(\"div\", { class: _vm.$style.assistantButton__text }, [_vm._t(\"default\", function() {\n return [_vm._v(_vm._s(_vm.text))];\n })], 2)];\n }, proxy: true } : null], null, true) })], 1);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAssistantButton = __component__.exports;\nexport {\n NcAssistantButton as N\n};\n//# sourceMappingURL=NcAssistantButton-lRXTGAwe.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantContent-Ban7n3Bg.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcAssistantContent-Ban7n3Bg.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcAssistantContent-Ban7n3Bg.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst assistantContent = \"_assistantContent_ri18g_20\";\nconst assistantContent__inner = \"_assistantContent__inner_ri18g_25\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_ri18g_12\",\n assistantContent,\n assistantContent__inner\n};\nconst _sfc_main = {\n __name: \"NcAssistantContent\",\n props: {\n /**\n * Classes to assign to the content container\n */\n contentClasses: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n setup(__props) {\n return { __sfc: true };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"div\", { class: _vm.$style.assistantContent }, [_c(\"div\", { class: [_vm.$style.assistantContent__inner, _vm.contentClasses] }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcAssistantContent = __component__.exports;\nexport {\n NcAssistantContent as default\n};\n//# sourceMappingURL=NcAssistantContent.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcBlurHash-7aGtE-_T.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcBlurHash-7aGtE-_T.css\";\n export default content && content.locals ? content.locals : undefined;\n","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r<t.length;r++){let n=t[r],l=q.indexOf(n);e=e*83+l}return e},p=(t,e)=>{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o<u.length;o++)if(o===0){let a=x(t.substring(2,6));u[o]=z(a)}else{let a=x(t.substring(4+o*2,6+o*2));u[o]=L(a,i*n)}let c=e*4,s=new Uint8ClampedArray(c*r);for(let o=0;o<r;o++)for(let a=0;a<e;a++){let y=0,B=0,R=0;for(let w=0;w<m;w++)for(let P=0;P<b;P++){let G=Math.cos(Math.PI*a*P/e)*Math.cos(Math.PI*o*w/r),T=u[P+w*b];y+=T[0]*G,B+=T[1]*G,R+=T[2]*G}let V=h(y),I=h(B),E=h(R);s[4*a+0+o*c]=V,s[4*a+1+o*c]=I,s[4*a+2+o*c]=E,s[4*a+3+o*c]=255}return s},j=U;var A=4,D=(t,e,r,n)=>{let l=0,m=0,b=0,g=e*A;for(let u=0;u<e;u++){let c=A*u;for(let s=0;s<r;s++){let o=c+s*g,a=n(u,s);l+=a*f(t[o]),m+=a*f(t[o+1]),b+=a*f(t[o+2])}}let i=1/(e*r);return[l*i,m*i,b*i]},$=t=>{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;s<l;s++)for(let o=0;o<n;o++){let a=o==0&&s==0?1:2,y=D(t,e,r,(B,R)=>a*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && options.signal) {\n\t\t\toptions.signal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n id: options.id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=preloadImage.mjs.map\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // In case `id` is not defined.\n options.id ??= (this.#idAssigner++).toString();\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n try {\n options.signal?.throwIfAborted();\n this.#intervalCount++;\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import '../assets/NcBlurHash-7aGtE-_T.css';\nimport { decode } from \"blurhash\";\nimport { ref, watch, nextTick } from \"vue\";\nimport { preloadImage } from \"../Functions/preloadImage.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst fadeTransition = \"_fadeTransition_13rtj_2\";\nconst fadeTransitionActive = \"_fadeTransitionActive_13rtj_6\";\nconst style0 = {\n fadeTransition,\n fadeTransitionActive\n};\nconst _sfc_main = {\n __name: \"NcBlurHash\",\n props: {\n /**\n * The blur hash value to use.\n */\n hash: {\n required: true,\n type: String\n },\n /**\n * This is normally not needed, but if this blur hash is not only intended\n * for decorative purpose, descriptive text should be passed for accessibility.\n */\n alt: {\n type: String,\n default: \"\"\n },\n /**\n * Optional an image source to load, during the load the blur hash is shown.\n * As soon as it is loaded the image will be shown instead.\n */\n src: {\n type: String,\n default: \"\"\n }\n },\n emits: [\n /**\n * Emitted when the image (`src`) has been loaded.\n */\n \"load\"\n ],\n setup(__props, { emit }) {\n const props = __props;\n const canvas = ref();\n const imageLoaded = ref(false);\n watch(() => props.hash, drawBlurHash);\n watch(imageLoaded, () => {\n if (imageLoaded.value === false) {\n nextTick(() => drawBlurHash());\n }\n }, { immediate: true });\n watch(() => props.src, () => {\n imageLoaded.value = false;\n if (props.src) {\n preloadImage(props.src).then((success) => {\n imageLoaded.value = success;\n emit(\"load\", success);\n });\n }\n }, { immediate: true });\n function drawBlurHash() {\n if (imageLoaded.value) {\n return;\n }\n if (!props.hash) {\n logger.error(\"Invalid BlurHash value\");\n return;\n }\n if (canvas.value === void 0) {\n logger.error(\"BlurHash canvas not available\");\n return;\n }\n const { height, width } = canvas.value;\n const pixels = decode(props.hash, width, height);\n const ctx = canvas.value.getContext(\"2d\");\n if (ctx === null) {\n logger.error(\"Cannot create context for BlurHash canvas\");\n return;\n }\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n return { __sfc: true, props, emit, canvas, imageLoaded, drawBlurHash };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"Transition\", { attrs: { \"css\": _vm.src ? void 0 : false, \"enter-active-class\": _vm.$style.fadeTransition, \"leave-active-class\": _vm.$style.fadeTransition, \"enter-class\": _vm.$style.fadeTransitionActive, \"leave-to-class\": _vm.$style.fadeTransitionActive } }, [!_setup.imageLoaded ? _c(\"canvas\", { ref: \"canvas\", attrs: { \"aria-hidden\": _vm.alt ? null : \"true\", \"aria-label\": _vm.alt } }) : _c(\"img\", { attrs: { \"alt\": _vm.alt, \"src\": _vm.src } })]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcBlurHash = __component__.exports;\nexport {\n NcBlurHash as N\n};\n//# sourceMappingURL=NcBlurHash-DZmsBU0q.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcBreadcrumb-0xB19h6f.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcBreadcrumb-0xB19h6f.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcBreadcrumb-0xB19h6f.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon chevron-right-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst ChevronRight = __component__$1.exports;\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Match the complete route attributes (query and hash included)\n *\n * @see https://v3.router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"update:open\",\n \"dropped\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n return this.to ? { to: this.to, exact: this.exact, ...this.$attrs } : this.href ? { href: this.href, ...this.$attrs } : this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n */\n dragEnter() {\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {object} e The drag leave event\n */\n dragLeave(e) {\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { ref: \"crumb\", staticClass: \"vue-crumb\", class: { \"vue-crumb--hovered\": _vm.hovering }, attrs: { \"data-crumb-id\": _vm.crumbId, \"draggable\": \"false\" }, on: { \"dragstart\": function($event) {\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n }, \"drop\": function($event) {\n $event.preventDefault();\n return _vm.dropped.apply(null, arguments);\n }, \"dragover\": function($event) {\n $event.preventDefault();\n return (() => {\n }).apply(null, arguments);\n }, \"dragenter\": _vm.dragEnter, \"dragleave\": _vm.dragLeave } }, [(_vm.name || _vm.icon || _vm.$slots.icon) && !_vm.$slots.default ? _c(\"NcButton\", _vm._g(_vm._b({ attrs: { \"aria-label\": _vm.icon ? _vm.name : void 0, \"title\": _vm.title, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([_vm.$slots.icon || _vm.icon ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_c(\"span\", { staticClass: \"icon\", class: _vm.icon })];\n })];\n }, proxy: true } : null, !(_vm.$slots.icon || _vm.icon) || _vm.forceIconText ? { key: \"default\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.name) + \" \")];\n }, proxy: true } : null], null, true) }, \"NcButton\", _vm.linkAttributes, false), _vm.$listeners)) : _vm._e(), _vm.$slots.default ? _c(\"NcActions\", { ref: \"actions\", attrs: { \"force-menu\": _vm.forceMenu, \"open\": _vm.open, \"menu-name\": _vm.name, \"title\": _vm.title, \"force-name\": true, \"container\": _vm.actionsContainer, \"variant\": \"tertiary\" }, on: { \"update:open\": _vm.onOpenChange }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"menu-icon\")];\n }, proxy: true }], null, true) }, [_vm._t(\"default\")], 2) : _vm._e(), _c(\"ChevronRight\", { staticClass: \"vue-crumb__separator\", attrs: { \"size\": 20 } })], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"bc2f0c21\"\n);\nconst NcBreadcrumb = __component__.exports;\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-BC6tmZfd.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcBreadcrumbs-DahxPGJY.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcBreadcrumbs-DahxPGJY.css\";\n export default content && content.locals ? content.locals : undefined;\n","var $placeholder = Symbol();\n\nvar $fakeParent = Symbol();\n\nvar $nextSiblingPatched = Symbol();\n\nvar $childNodesPatched = Symbol();\n\nvar isFrag = function isFrag(node) {\n return \"frag\" in node;\n};\n\nvar parentNodeDescriptor = {\n get: function get() {\n return this[$fakeParent] || this.parentElement;\n },\n configurable: true\n};\n\nvar patchParentNode = function patchParentNode(node, fakeParent) {\n if ($fakeParent in node) {\n return;\n }\n node[$fakeParent] = fakeParent;\n Object.defineProperty(node, \"parentNode\", parentNodeDescriptor);\n};\n\nvar nextSiblingDescriptor = {\n get: function get() {\n var childNodes = this.parentNode.childNodes;\n var index = childNodes.indexOf(this);\n if (index > -1) {\n return childNodes[index + 1] || null;\n }\n return null;\n }\n};\n\nvar patchNextSibling = function patchNextSibling(node) {\n if ($nextSiblingPatched in node) {\n return;\n }\n node[$nextSiblingPatched] = true;\n Object.defineProperty(node, \"nextSibling\", nextSiblingDescriptor);\n};\n\nvar getTopFragment = function getTopFragment(node, fromParent) {\n while (node.parentNode !== fromParent) {\n var _node = node, parentNode = _node.parentNode;\n if (parentNode) {\n node = parentNode;\n }\n }\n return node;\n};\n\nvar getChildNodes;\n\nvar getChildNodesWithFragments = function getChildNodesWithFragments(node) {\n if (!getChildNodes) {\n var _childNodesDescriptor = Object.getOwnPropertyDescriptor(Node.prototype, \"childNodes\");\n getChildNodes = _childNodesDescriptor.get;\n }\n var realChildNodes = getChildNodes.apply(node);\n var childNodes = Array.from(realChildNodes).map((function(childNode) {\n return getTopFragment(childNode, node);\n }));\n return childNodes.filter((function(childNode, index) {\n return childNode !== childNodes[index - 1];\n }));\n};\n\nvar childNodesDescriptor = {\n get: function get() {\n return this.frag || getChildNodesWithFragments(this);\n }\n};\n\nvar firstChildDescriptor = {\n get: function get() {\n return this.childNodes[0] || null;\n }\n};\n\nfunction hasChildNodes() {\n return this.childNodes.length > 0;\n}\n\nvar patchChildNodes = function patchChildNodes(node) {\n if ($childNodesPatched in node) {\n return;\n }\n node[$childNodesPatched] = true;\n Object.defineProperties(node, {\n childNodes: childNodesDescriptor,\n firstChild: firstChildDescriptor\n });\n node.hasChildNodes = hasChildNodes;\n};\n\nfunction before() {\n var _this$frag$;\n (_this$frag$ = this.frag[0]).before.apply(_this$frag$, arguments);\n}\n\nfunction remove() {\n var frag = this.frag;\n var removed = frag.splice(0, frag.length);\n removed.forEach((function(node) {\n node.remove();\n }));\n}\n\nvar getFragmentLeafNodes = function getFragmentLeafNodes(children) {\n var _Array$prototype;\n return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, children.map((function(childNode) {\n return isFrag(childNode) ? getFragmentLeafNodes(childNode.frag) : childNode;\n })));\n};\n\nvar addPlaceholder = function addPlaceholder(node, insertBeforeNode) {\n var placeholder = node[$placeholder];\n insertBeforeNode.before(placeholder);\n patchParentNode(placeholder, node);\n node.frag.unshift(placeholder);\n};\n\nfunction removeChild(node) {\n if (isFrag(this)) {\n var hasChildInFragment = this.frag.indexOf(node);\n if (hasChildInFragment > -1) {\n var _this$frag$splice = this.frag.splice(hasChildInFragment, 1), removedNode = _this$frag$splice[0];\n if (this.frag.length === 0) {\n addPlaceholder(this, removedNode);\n }\n node.remove();\n }\n } else {\n var children = getChildNodesWithFragments(this);\n var hasChild = children.indexOf(node);\n if (hasChild > -1) {\n node.remove();\n }\n }\n return node;\n}\n\nfunction insertBefore(insertNode, insertBeforeNode) {\n var _this = this;\n var insertNodes = insertNode.frag || [ insertNode ];\n if (isFrag(this)) {\n if (insertNode[$fakeParent] === this && insertNode.parentElement) {\n return insertNode;\n }\n var _frag = this.frag;\n if (insertBeforeNode) {\n var index = _frag.indexOf(insertBeforeNode);\n if (index > -1) {\n _frag.splice.apply(_frag, [ index, 0 ].concat(insertNodes));\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n var _lastNode = _frag[_frag.length - 1];\n _frag.push.apply(_frag, insertNodes);\n _lastNode.after.apply(_lastNode, insertNodes);\n }\n removePlaceholder(this);\n } else if (insertBeforeNode) {\n if (this.childNodes.includes(insertBeforeNode)) {\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n this.append.apply(this, insertNodes);\n }\n insertNodes.forEach((function(node) {\n patchParentNode(node, _this);\n }));\n var lastNode = insertNodes[insertNodes.length - 1];\n patchNextSibling(lastNode);\n return insertNode;\n}\n\nfunction appendChild(node) {\n if (node[$fakeParent] === this && node.parentElement) {\n return node;\n }\n var frag = this.frag;\n var lastChild = frag[frag.length - 1];\n lastChild.after(node);\n patchParentNode(node, this);\n removePlaceholder(this);\n frag.push(node);\n return node;\n}\n\nvar removePlaceholder = function removePlaceholder(node) {\n var placeholder = node[$placeholder];\n if (node.frag[0] === placeholder) {\n node.frag.shift();\n placeholder.remove();\n }\n};\n\nvar innerHTMLDescriptor = {\n set: function set(htmlString) {\n var _this2 = this;\n if (this.frag[0] !== this[$placeholder]) {\n this.frag.slice().forEach((function(child) {\n return _this2.removeChild(child);\n }));\n }\n if (htmlString) {\n var domify = document.createElement(\"div\");\n domify.innerHTML = htmlString;\n Array.from(domify.childNodes).forEach((function(node) {\n _this2.appendChild(node);\n }));\n }\n },\n get: function get() {\n return \"\";\n }\n};\n\nvar frag = {\n inserted: function inserted(element) {\n var parentNode = element.parentNode, nextSibling = element.nextSibling, previousSibling = element.previousSibling;\n var childNodes = Array.from(element.childNodes);\n var placeholder = document.createComment(\"\");\n if (childNodes.length === 0) {\n childNodes.push(placeholder);\n }\n element.frag = childNodes;\n element[$placeholder] = placeholder;\n var fragment = document.createDocumentFragment();\n fragment.append.apply(fragment, getFragmentLeafNodes(childNodes));\n element.replaceWith(fragment);\n childNodes.forEach((function(node) {\n patchParentNode(node, element);\n patchNextSibling(node);\n }));\n patchChildNodes(element);\n Object.assign(element, {\n remove: remove,\n appendChild: appendChild,\n insertBefore: insertBefore,\n removeChild: removeChild,\n before: before\n });\n Object.defineProperty(element, \"innerHTML\", innerHTMLDescriptor);\n if (parentNode) {\n Object.assign(parentNode, {\n removeChild: removeChild,\n insertBefore: insertBefore\n });\n patchParentNode(element, parentNode);\n patchChildNodes(parentNode);\n }\n if (nextSibling) {\n patchNextSibling(element);\n }\n if (previousSibling) {\n patchNextSibling(previousSibling);\n }\n },\n unbind: function unbind(element) {\n element.remove();\n }\n};\n\nvar fragment = {\n name: \"Fragment\",\n directives: {\n frag: frag\n },\n render: function render(h) {\n return h(\"div\", {\n directives: [ {\n name: \"frag\"\n } ]\n }, this.$slots[\"default\"]);\n }\n};\n\nexport { fragment as Fragment, frag as default };\n","import '../assets/NcBreadcrumbs-DahxPGJY.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport Vue from \"vue\";\nimport { Fragment } from \"vue-frag\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-DykQxmXJ.mjs\";\nimport NcActionLink from \"../Components/NcActionLink.mjs\";\nimport NcActionRouter from \"../Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-BC6tmZfd.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconFolder = __component__$1.exports;\nfunction ValidateSlot(slots, allowed, vm) {\n if (slots === void 0) {\n return;\n }\n for (let index = slots.length - 1; index >= 0; index--) {\n const node = slots[index];\n const isHtmlElement = !node.componentOptions && node.tag && allowed.indexOf(node.tag) === -1;\n const isVueComponent = !!node.componentOptions && typeof node.componentOptions.tag === \"string\";\n const isForbiddenComponent = isVueComponent && allowed.indexOf(node.componentOptions.tag) === -1;\n if (isHtmlElement || !isVueComponent || isForbiddenComponent) {\n if (isHtmlElement || isForbiddenComponent) {\n Vue.util.warn(`${isHtmlElement ? node.tag : node.componentOptions.tag} is not allowed inside the ${vm.$options.name} component`, vm);\n }\n slots.splice(index, 1);\n }\n }\n}\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: {}\n };\n },\n beforeMount() {\n ValidateSlot(this.$slots.default, [\"NcBreadcrumb\"], this);\n },\n beforeUpdate() {\n ValidateSlot(this.$slots.default, [\"NcBreadcrumb\"], this);\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeDestroy() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const breadcrumbs = Object.values(this.breadcrumbsRefs);\n const nrCrumbs = breadcrumbs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth(breadcrumbs);\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(breadcrumbs[currentIndex]?.elm, currentIndex === breadcrumbs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @param {Array} breadcrumbs All breadcrumbs\n * @return {number} The total width\n */\n getTotalWidth(breadcrumbs) {\n return breadcrumbs.reduce((width, crumb, index) => width + this.getWidth(crumb?.elm, index === breadcrumbs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n crumbs.forEach((f) => {\n f.classList.remove(`${crumbClass}--hovered`);\n });\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n crumbs.forEach((f) => {\n f.classList.remove(`${crumbClass}--hovered`);\n });\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n const crumbs = Object.values(this.breadcrumbsRefs);\n crumbs.forEach((crumb, i) => {\n if (crumb?.elm?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.elm.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.elm.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return (vnode?.componentOptions?.tag || vnode?.tag || \"\").includes(\"NcBreadcrumb\");\n }\n },\n /**\n * The render function to display the component\n *\n * @param {Function} h The function to create VNodes\n * @return {object|undefined} The created VNode\n */\n render(h) {\n const breadcrumbs = [];\n this.$slots.default.forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n Vue.set(breadcrumbs[0].componentOptions.propsData, \"icon\", this.rootIcon);\n Vue.set(breadcrumbs[0].componentOptions.propsData, \"ref\", \"breadcrumbs\");\n const breadcrumbsRefs = {};\n breadcrumbs.forEach((crumb, index) => {\n Vue.set(crumb, \"ref\", `crumb-${index}`);\n breadcrumbsRefs[index] = crumb;\n });\n let crumbs = [];\n if (!this.hiddenIndices.length) {\n crumbs = breadcrumbs;\n } else {\n crumbs = breadcrumbs.slice(0, Math.round(breadcrumbs.length / 2));\n crumbs.push(h(\"NcBreadcrumb\", {\n class: \"dropdown\",\n props: this.menuBreadcrumbProps,\n attrs: {\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true\n },\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n nativeOn: {\n dragstart: this.dragStart,\n dragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n dragleave: this.closeActions\n },\n on: {\n // Make sure we keep the same open state\n // as the Actions component\n \"update:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const to = crumb.componentOptions.propsData.to;\n const href = crumb.componentOptions.propsData.href;\n const disabled = crumb.componentOptions.propsData.disableDrop;\n const title = crumb.componentOptions.propsData.title;\n const name = crumb.componentOptions.propsData.name;\n let element = \"NcActionButton\";\n let path = \"\";\n if (href) {\n element = \"NcActionLink\";\n path = href;\n }\n if (to) {\n element = \"NcActionRouter\";\n path = to;\n }\n const folderIcon = h(\"IconFolder\", {\n props: {\n size: 20\n },\n slot: \"icon\"\n });\n return h(element, {\n class: crumbClass,\n props: {\n href: href || null,\n title,\n to: to || null\n },\n // Prevent the breadcrumbs from being draggable\n attrs: {\n draggable: false\n },\n on: {\n ...crumb.componentOptions.listeners\n },\n // Add the drag and drop handlers\n nativeOn: {\n dragstart: this.dragStart,\n drop: ($event) => this.dropped($event, path, disabled),\n dragover: this.dragOver,\n dragenter: ($event) => this.dragEnter($event, disabled),\n dragleave: ($event) => this.dragLeave($event, disabled)\n }\n }, [folderIcon, name]);\n })));\n const crumbs2 = breadcrumbs.slice(Math.round(breadcrumbs.length / 2));\n crumbs = crumbs.concat(crumbs2);\n }\n const wrapper = [h(\"nav\", { attrs: { \"aria-label\": this.ariaLabel } }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (this.$slots.actions) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"daf14f2f\"\n);\nconst NcBreadcrumbs = __component__.exports;\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-BPfsSByZ.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcCollectionList-hRgvNUMR.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcCollectionList-hRgvNUMR.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcCollectionList-hRgvNUMR.css';\nimport debounce from \"debounce\";\nimport { ref, set } from \"vue\";\nimport { r as register, J as t28, a as t, K as t6 } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-DykQxmXJ.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-D5nljVEA.mjs\";\nimport { g as getRoute } from \"./autolink-D2pIbi92.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DTniMiUS.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\"remove-resource\", \"rename-collection\"],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"remove-resource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"rename-collection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"collection-list-item\" }, [_c(\"NcAvatar\", { staticClass: \"collection-avatar\", attrs: { \"display-name\": _vm.collection.name, \"allow-placeholder\": \"\" } }), _vm.newName === null ? _c(\"span\", { staticClass: \"collection-item-name\", attrs: { \"title\": \"\" }, on: { \"click\": _vm.showDetails } }, [_vm._v(_vm._s(_vm.collection.name))]) : _c(\"form\", { class: { \"should-shake\": _vm.error }, on: { \"submit\": function($event) {\n $event.preventDefault();\n return _vm.renameCollection.apply(null, arguments);\n } } }, [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _vm.newName, expression: \"newName\" }], attrs: { \"type\": \"text\", \"autocomplete\": \"off\", \"autocapitalize\": \"off\" }, domProps: { \"value\": _vm.newName }, on: { \"input\": function($event) {\n if ($event.target.composing) return;\n _vm.newName = $event.target.value;\n } } }), _c(\"input\", { staticClass: \"icon-confirm\", attrs: { \"type\": \"submit\", \"value\": \"\" } })]), !_vm.detailsOpen && _vm.newName === null ? _c(\"div\", { staticClass: \"linked-icons\" }, _vm._l(_vm.resources.slice(0, 2), function(resource) {\n return _c(_vm.getComponent(resource).component, { key: resource.type + \"|\" + resource.id, tag: \"component\", class: _vm.typeClass(resource), attrs: { \"title\": resource.name, \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } })]);\n }), 1) : _vm._e(), _vm.newName === null ? _c(\"span\", { staticClass: \"sharingOptionsGroup\" }, [_c(\"NcActions\", [_c(\"NcActionButton\", { attrs: { \"icon\": \"icon-info\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleDetails.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.detailsOpen ? _vm.t(\"Hide details\") : _vm.t(\"Show details\")) + \" \")]), _c(\"NcActionButton\", { attrs: { \"icon\": \"icon-rename\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openRename.apply(null, arguments);\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Rename project\")) + \" \")])], 1)], 1) : _vm._e(), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"div\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.detailsOpen ? _c(\"ul\", { staticClass: \"resource-list-details\" }, _vm._l(_vm.resources, function(resource) {\n return _c(\"li\", { key: resource.type + \"|\" + resource.id, class: _vm.typeClass(resource) }, [_c(_vm.getComponent(resource).component, { tag: \"component\", attrs: { \"to\": _vm.getComponent(resource).to, \"href\": _vm.getComponent(resource).href } }, [_c(\"img\", { attrs: { \"src\": _vm.iconUrl(resource), \"alt\": resource.name } }), _c(\"span\", { staticClass: \"resource-name\" }, [_vm._v(_vm._s(resource.name || \"\"))])]), _c(\"span\", { staticClass: \"icon-close\", on: { \"click\": function($event) {\n return _vm.removeResource(_vm.collection, resource);\n } } })], 1);\n }), 0) : _vm._e()])], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"88468fab\"\n);\nconst NcCollectionListItem = __component__$1.exports;\nregister(t6);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n set(storedCollections, \"value\", collections);\n };\n const addCollection = (collection) => {\n set(storedCollections, \"value\", [...storedCollections.value, collection]);\n };\n const removeCollection = (collectionId) => {\n set(storedCollections, \"value\", storedCollections.value.filter((item) => item.id !== collectionId));\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n set(storedCollections.value, index, collection);\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((error) => {\n logger.error(\"No resource selected\", { error });\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((error) => {\n logger.error(t(\"Failed to rename the project\"), { error });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _vm.collections && _vm.type && _vm.id ? _c(\"ul\", { staticClass: \"collection-list\", attrs: { \"id\": \"collection-list\" } }, [_c(\"li\", { on: { \"click\": _vm.showSelect } }, [_vm._m(0), _c(\"div\", { attrs: { \"id\": \"collection-select-container\" } }, [_c(\"NcSelect\", { ref: \"select\", attrs: { \"aria-label-combobox\": _vm.t(\"Add to a project\"), \"options\": _vm.options, \"placeholder\": _vm.placeholder, \"label\": \"title\", \"limit\": 5 }, on: { \"close\": function($event) {\n _vm.isSelectOpen = false;\n }, \"open\": function($event) {\n _vm.isSelectOpen = true;\n }, \"option:selected\": _vm.select, \"search\": _vm.search }, scopedSlots: _vm._u([{ key: \"selected-option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__desc\" }, [_c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])])];\n } }, { key: \"option\", fn: function(option) {\n return [_c(\"span\", { staticClass: \"option__wrapper\" }, [option.class ? _c(\"span\", { staticClass: \"avatar\", class: option.class }) : option.method !== 2 ? _c(\"NcAvatar\", { attrs: { \"allow-placeholder\": \"\", \"display-name\": option.title } }) : _vm._e(), _c(\"span\", { staticClass: \"option__title\" }, [_vm._v(_vm._s(option.title))])], 1)];\n } }], null, false, 2397208459), model: { value: _vm.value, callback: function($$v) {\n _vm.value = $$v;\n }, expression: \"value\" } }, [_c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Connect items to a project to make them easier to find\")) + \" \")])])], 1)]), _c(\"transition\", { attrs: { \"name\": \"fade\" } }, [_vm.error ? _c(\"li\", { staticClass: \"error\" }, [_vm._v(\" \" + _vm._s(_vm.error) + \" \")]) : _vm._e()]), _vm._l(_vm.collections, function(collection) {\n return _c(\"NcCollectionListItem\", { key: collection.id, attrs: { \"collection\": collection, \"error\": _vm.collectionsError[collection.id] }, on: { \"rename-collection\": _vm.renameCollectionFromItem, \"remove-resource\": _vm.removeResourceFromCollection } });\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"avatar\" }, [_c(\"span\", { staticClass: \"icon-projects\" })]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"73e5825c\"\n);\nconst NcCollectionList = __component__.exports;\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-B9weMM0Q.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcContent-IIXgAj_u.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcContent-IIXgAj_u.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcContent-IIXgAj_u.css';\nimport { Portal } from \"@linusborg/vue-simple-portal\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { useIsMobile } from \"../Composables/useIsMobile.mjs\";\nimport { r as register, F as t30, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t30);\nconst contentSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst navigationSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst _sfc_main = {\n name: \"NcContent\",\n components: {\n NcButton,\n NcIconSvgWrapper,\n Teleport: Portal\n },\n provide() {\n return {\n \"NcContent:setHasAppNavigation\": this.setAppNavigation,\n \"NcContent:selector\": \"#content-vue\"\n };\n },\n props: {\n /**\n * The application name to use.\n * This is used to scope all content (content, sidebar, navigation) to the application.\n */\n appName: {\n type: String,\n required: true\n }\n },\n setup() {\n const isMobile = useIsMobile();\n return {\n isMobile\n };\n },\n data() {\n return {\n hasAppNavigation: false,\n currentFocus: \"\"\n // unknown\n };\n },\n computed: {\n currentImage() {\n if (this.currentFocus === \"navigation\") {\n return navigationSvg;\n }\n return contentSvg;\n }\n },\n beforeMount() {\n const container = document.getElementById(\"skip-actions\");\n if (container) {\n container.innerHTML = \"\";\n container.classList.add(\"vue-skip-actions\");\n }\n },\n methods: {\n t,\n openAppNavigation() {\n emit(\"toggle-navigation\", { open: true });\n this.$nextTick(() => {\n window.location.hash = \"app-navigation-vue\";\n document.getElementById(\"app-navigation-vue\").focus();\n });\n },\n setAppNavigation(value) {\n this.hasAppNavigation = value;\n if (this.currentFocus === \"\") {\n this.currentFocus = \"navigation\";\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"content\", class: `app-${_vm.appName.toLowerCase()}`, attrs: { \"id\": \"content-vue\" } }, [_c(\"Teleport\", { attrs: { \"selector\": \"#skip-actions\" } }, [_c(\"div\", { staticClass: \"vue-skip-actions__container\" }, [_c(\"div\", { staticClass: \"vue-skip-actions__headline\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Keyboard navigation help\")) + \" \")]), _c(\"div\", { staticClass: \"vue-skip-actions__buttons\" }, [_c(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasAppNavigation, expression: \"hasAppNavigation\" }], attrs: { \"href\": \"#app-navigation-vue\", \"variant\": \"tertiary\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.openAppNavigation.apply(null, arguments);\n }, \"focusin\": function($event) {\n _vm.currentFocus = \"navigation\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"navigation\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to app navigation\")) + \" \")]), _c(\"NcButton\", { attrs: { \"href\": \"#app-content-vue\", \"variant\": \"tertiary\" }, on: { \"focusin\": function($event) {\n _vm.currentFocus = \"content\";\n }, \"mouseover\": function($event) {\n _vm.currentFocus = \"content\";\n } } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Skip to main content\")) + \" \")])], 1), _c(\"NcIconSvgWrapper\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !_vm.isMobile, expression: \"!isMobile\" }], staticClass: \"vue-skip-actions__image\", attrs: { \"svg\": _vm.currentImage, \"size\": \"auto\" } })], 1), _vm._v(\"  \")]), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"1f87d811\"\n);\nconst NcContent = __component__.exports;\nexport {\n NcContent as N\n};\n//# sourceMappingURL=NcContent-BPmE93Mq.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcCounterBubble-sz81L2Mt.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcCounterBubble-sz81L2Mt.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcCounterBubble-sz81L2Mt.css';\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcCounterBubble\",\n props: {\n /**\n * Visual appearence of the counter bubble\n */\n type: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].includes(value);\n }\n },\n /**\n * Specifies whether the component is used within a component that is\n * active and therefore has a primary background. Inverts the color of\n * this component when that is the case.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The count to display in the counter bubble.\n * Alternatively, you can pass any value to the default slot.\n */\n count: {\n type: Number,\n required: false,\n default: void 0\n },\n /**\n * Disables humanization to display count or content as it is\n */\n raw: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n counterClassObject() {\n return {\n \"counter-bubble__counter--highlighted\": this.type === \"highlighted\",\n \"counter-bubble__counter--outlined\": this.type === \"outlined\",\n active: this.active\n };\n },\n humanizedCount() {\n return this.humanizeCount(this.count);\n }\n },\n methods: {\n humanizeCount(count) {\n if (this.raw) {\n return count.toString();\n }\n const formatter = new Intl.NumberFormat(getCanonicalLocale(), {\n notation: \"compact\",\n compactDisplay: \"short\"\n });\n return formatter.format(count);\n },\n /**\n * Get the humanized count from `count` prop\n *\n * @return {{ humanized: string, original: string} | undefined}\n */\n getHumanizedCount() {\n if (this.count !== void 0) {\n return {\n humanized: this.humanizedCount,\n original: this.count.toString()\n };\n }\n if (this.raw) {\n return void 0;\n }\n if (this.$slots.default?.length === 1) {\n const slotContent = this.$slots.default[0].text?.trim();\n if (slotContent && /^\\d+$/.test(slotContent)) {\n const count = parseInt(slotContent, 10);\n return {\n humanized: this.humanizeCount(count),\n original: slotContent\n };\n }\n }\n }\n },\n render(h) {\n const count = this.getHumanizedCount();\n return h(\"div\", {\n staticClass: \"counter-bubble__counter\",\n class: this.counterClassObject,\n attrs: {\n // Show original count in title if humanized\n title: count && count.original !== count.humanized ? count.original : void 0\n }\n }, [count?.humanized ?? this.$slots.default]);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7d9795d6\"\n);\nconst NcCounterBubble = __component__.exports;\nexport {\n NcCounterBubble as N\n};\n//# sourceMappingURL=NcCounterBubble-oxV8oMlX.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcDashboardWidget-DzJMoJ_B.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcDashboardWidget-DzJMoJ_B.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcDashboardWidgetItem-CAsF_ZMZ.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcDashboardWidgetItem-CAsF_ZMZ.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcDashboardWidgetItem-CAsF_ZMZ.css';\nimport { N as NcActionButton } from \"./NcActionButton-DykQxmXJ.mjs\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-D5nljVEA.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcDashboardWidgetItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The item id (optional)\n */\n id: {\n type: [String, Number],\n default: void 0\n },\n /**\n * The item element is a link to this URL (optional)\n */\n targetUrl: {\n type: String,\n default: void 0\n },\n /**\n * Where to get the avatar image. (optional) Used if avatarUsername is not defined.\n */\n avatarUrl: {\n type: String,\n default: void 0\n },\n /**\n * Name to provide to the Avatar. (optional) Used if avatarUrl is not defined.\n */\n avatarUsername: {\n type: String,\n default: void 0\n },\n /**\n * Is the avatarUsername not a user's name? (optional, false by default)\n */\n avatarIsNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Small icon to display on the bottom-right corner of the avatar (optional)\n */\n overlayIconUrl: {\n type: String,\n default: void 0\n },\n /**\n * Item main text (mandatory)\n */\n mainText: {\n type: String,\n required: true\n },\n /**\n * Item subline text (optional)\n */\n subText: {\n type: String,\n default: \"\"\n },\n /**\n * An object containing context menu entries that will be displayed for each items (optional)\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Specify whether the 3 dot menu is forced when only one action is present\n */\n forceMenu: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n data() {\n return {\n hovered: false\n };\n },\n computed: {\n item() {\n return {\n id: this.id,\n targetUrl: this.targetUrl,\n avatarUrl: this.avatarUrl,\n avatarUsername: this.avatarUsername,\n overlayIconUrl: this.overlayIconUrl,\n mainText: this.mainText,\n subText: this.subText\n };\n },\n gotMenu() {\n return Object.keys(this.itemMenu).length !== 0 || !!this.$slots.actions;\n },\n gotOverlayIcon() {\n return this.overlayIconUrl && this.overlayIconUrl !== \"\";\n }\n },\n methods: {\n onLinkClick(event) {\n if (event.target.closest(\".action-item\")) {\n event.preventDefault();\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { on: { \"mouseover\": function($event) {\n _vm.hovered = true;\n }, \"mouseleave\": function($event) {\n _vm.hovered = false;\n } } }, [_c(_vm.targetUrl ? \"a\" : \"div\", { tag: \"component\", staticClass: \"item-list__entry\", class: { \"item-list__entry--has-actions-menu\": _vm.gotMenu }, attrs: { \"href\": _vm.targetUrl || void 0, \"target\": _vm.targetUrl ? \"_blank\" : void 0 }, on: { \"click\": _vm.onLinkClick } }, [_vm._t(\"avatar\", function() {\n return [_c(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { \"size\": 44, \"url\": _vm.avatarUrl, \"user\": _vm.avatarUsername, \"is-no-user\": _vm.avatarIsNoUser, \"show-user-status\": !_vm.gotOverlayIcon } })];\n }, { \"avatarUrl\": _vm.avatarUrl, \"avatarUsername\": _vm.avatarUsername }), _vm.overlayIconUrl ? _c(\"img\", { staticClass: \"item-icon\", attrs: { \"alt\": \"\", \"src\": _vm.overlayIconUrl } }) : _vm._e(), _c(\"div\", { staticClass: \"item__details\" }, [_c(\"h3\", { attrs: { \"title\": _vm.mainText } }, [_vm._v(\" \" + _vm._s(_vm.mainText) + \" \")]), _vm.subText !== \"\" ? _c(\"span\", { staticClass: \"message\", attrs: { \"title\": _vm.subText } }, [_vm._v(\" \" + _vm._s(_vm.subText) + \" \")]) : _vm._e()]), _vm.gotMenu ? _c(\"NcActions\", { attrs: { \"force-menu\": _vm.forceMenu } }, [_vm._t(\"actions\", function() {\n return _vm._l(_vm.itemMenu, function(m, menuItemId) {\n return _c(\"NcActionButton\", { key: menuItemId, attrs: { \"icon\": m.icon, \"close-after-click\": true }, on: { \"click\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.$emit(menuItemId, _vm.item);\n } } }, [_vm._v(\" \" + _vm._s(m.text) + \" \")]);\n });\n })], 2) : _vm._e()], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"3c6f752d\"\n);\nconst NcDashboardWidgetItem = __component__.exports;\nexport {\n NcDashboardWidgetItem as N\n};\n//# sourceMappingURL=NcDashboardWidgetItem-DZ13sBtT.mjs.map\n","import '../assets/NcDashboardWidget-DzJMoJ_B.css';\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { r as register, l as t35, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-D5nljVEA.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-DZ13sBtT.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"dashboard-widget\" }, [_vm.showHalfEmptyContentArea ? _c(\"NcEmptyContent\", { staticClass: \"half-screen\", attrs: { \"description\": _vm.halfEmptyContentString }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"halfEmptyContentIcon\", function() {\n return [_c(\"Check\")];\n })];\n }, proxy: true }], null, true) }) : _vm._e(), _c(\"ul\", _vm._l(_vm.displayedItems, function(item) {\n return _c(\"li\", { key: item.id }, [_vm._t(\"default\", function() {\n return [_c(\"NcDashboardWidgetItem\", _vm._g(_vm._b({ attrs: { \"item-menu\": _vm.itemMenu } }, \"NcDashboardWidgetItem\", item, false), _vm.handlers))];\n }, { \"item\": item })], 2);\n }), 0), _vm.loading ? _c(\"div\", _vm._l(7, function(i) {\n return _c(\"div\", { key: i, staticClass: \"item-list__entry\" }, [_c(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { \"size\": 44 } }), _vm._m(0, true)], 1);\n }), 0) : _vm.items.length === 0 ? _vm._t(\"empty-content\", function() {\n return [_vm.emptyContentMessage ? _c(\"NcEmptyContent\", { attrs: { \"description\": _vm.emptyContentMessage }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"emptyContentIcon\")];\n }, proxy: true }], null, true) }) : _vm._e()];\n }) : _vm.showMore ? _c(\"a\", { staticClass: \"more\", attrs: { \"href\": _vm.showMoreUrl, \"target\": \"_blank\", \"tabindex\": \"0\" } }, [_vm._v(\" \" + _vm._s(_vm.showMoreLabel) + \" \")]) : _vm._e()], 2);\n};\nvar _sfc_staticRenderFns = [function() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"item__details\" }, [_c(\"h3\", [_vm._v(\" \")]), _c(\"p\", { staticClass: \"message\" }, [_vm._v(\"   \")])]);\n}];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7631d51f\"\n);\nconst NcDashboardWidget = __component__.exports;\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-DpzjksBk.mjs.map\n","import { formatRelativeTime, getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { toValue } from \"@vueuse/core\";\nimport { computed, ref, watchEffect, onUnmounted, readonly } from \"vue\";\nimport { r as register, e as t2, a as t } from \"../chunks/_l10n-BmKQgz1z.mjs\";\nregister(t2);\nconst FEW_SECONDS_AGO = {\n long: t(\"a few seconds ago\"),\n short: t(\"seconds ago\"),\n // FOR TRANSLATORS: Shorter version of 'a few seconds ago'\n narrow: t(\"sec. ago\")\n // FOR TRANSLATORS: If possible in your language an even shorter version of 'a few seconds ago'\n};\nfunction useFormatRelativeTime(timestamp = Date.now(), opts = {}) {\n let timeoutId;\n const date = computed(() => new Date(toValue(timestamp)));\n const options = computed(() => {\n const { language, relativeTime: relativeTime2, ignoreSeconds } = toValue(opts);\n return {\n ...language && { language },\n ...relativeTime2 && { relativeTime: relativeTime2 },\n ignoreSeconds: ignoreSeconds ? FEW_SECONDS_AGO[relativeTime2 || \"long\"] : false\n };\n });\n const relativeTime = ref(\"\");\n watchEffect(() => updateRelativeTime());\n function updateRelativeTime() {\n relativeTime.value = formatRelativeTime(date.value, options.value);\n if (toValue(opts).update !== false) {\n const diff = Math.abs(Date.now() - new Date(toValue(timestamp)).getTime());\n const interval = diff > 12e4 || options.value.ignoreSeconds ? Math.min(diff / 60, 18e5) : 1e3;\n timeoutId = window.setTimeout(updateRelativeTime, interval);\n }\n }\n onUnmounted(() => timeoutId && window.clearTimeout(timeoutId));\n return readonly(relativeTime);\n}\nfunction useFormatTime(timestamp, opts) {\n const options = computed(() => ({\n locale: getCanonicalLocale(),\n format: { dateStyle: \"short\", timeStyle: \"medium\" },\n ...toValue(opts)\n }));\n const formatter = computed(() => new Intl.DateTimeFormat(options.value.locale, options.value.format));\n return computed(() => formatter.value.format(toValue(timestamp)));\n}\nfunction useFormatDateTime(timestamp = Date.now(), opts = {}) {\n const formattedFullTime = useFormatTime(timestamp, opts);\n const relativeTime = useFormatRelativeTime(timestamp, computed(() => {\n const options = toValue(opts);\n return {\n ...options,\n relativeTime: typeof options.relativeTime === \"string\" ? options.relativeTime : \"long\"\n };\n }));\n const formattedTime = computed(() => toValue(opts).relativeTime !== false ? relativeTime.value : formattedFullTime.value);\n return {\n formattedTime,\n formattedFullTime\n };\n}\nexport {\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime\n};\n//# sourceMappingURL=useFormatDateTime.mjs.map\n","import { computed, toRef } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../Composables/useFormatDateTime.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcDateTime\",\n props: {\n /**\n * The timestamp to display, either an unix timestamp (in milliseconds) or a Date object\n */\n timestamp: {\n type: [Date, Number],\n required: true\n },\n /**\n * The format used for displaying, or if relative time is used the format used for the title (optional)\n *\n * @type {Intl.DateTimeFormatOptions}\n */\n format: {\n type: Object,\n default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" })\n },\n /**\n * Wether to display the timestamp as time from now (optional)\n *\n * - `false`: Disable relative time\n * - `'long'`: Long text, like *2 seconds ago* (default)\n * - `'short'`: Short text, like *2 sec. ago*\n * - `'narrow'`: Even shorter text (same as `'short'` on some languages)\n */\n relativeTime: {\n type: [Boolean, String],\n default: \"long\",\n validator: (v) => v === false || [\"long\", \"short\", \"narrow\"].includes(v)\n },\n /**\n * Ignore seconds when displaying the relative time and just show `a few seconds ago`\n */\n ignoreSeconds: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(props, \"timestamp\"), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(props, \"timestamp\"), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return {\n formattedTime,\n title\n };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"nc-datetime\", attrs: { \"dir\": \"auto\", \"data-timestamp\": _vm.timestamp, \"title\": _vm.title }, domProps: { \"textContent\": _vm._s(_vm.formattedTime) } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcDateTime = __component__.exports;\nexport {\n NcDateTime as N\n};\n//# sourceMappingURL=NcDateTime-enXYuwj8.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcEmojiPicker-B-iLLj37.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcEmojiPicker-B-iLLj37.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { getBuilder } from \"@nextcloud/browser-storage\";\nimport { EmojiIndex, frequently } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nconst storage = getBuilder(\"nextcloud-vue\").persist(true).build();\nlet emojiIndex;\nvar EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiData) {\n frequently.add(emojiData);\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiAddRecent as a,\n emojiSearch as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji-BY_D0V5K.mjs.map\n","import '../assets/NcEmojiPicker-B-iLLj37.css';\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { isFocusable } from \"tabbable\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-DVkGUHxL.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-BnLfCgGU.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-BY_D0V5K.mjs\";\nimport { r as register, v as t43, w as t37, p as t15, x as t5, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { C as Color } from \"./colors-BwQwSDJi.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { N as NcPopover } from \"./NcPopover-gxcAqoEb.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CfZknuqx.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconCircle = __component__$1.exports;\nregister(t5, t15, t37, t43);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n Emoji,\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"select-data\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"select-data\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcPopover\", _vm._g(_vm._b({ ref: \"popover\", attrs: {\n \"shown\": _vm.open,\n \"container\": _vm.container,\n \"popup-role\": \"dialog\",\n \"focus-trap\": false\n /* Handled manually to remove emoji buttons from TAB sequence */\n }, on: { \"update:shown\": function($event) {\n _vm.open = $event;\n }, \"after-show\": _vm.afterShow, \"after-hide\": _vm.afterHide }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function(slotProps) {\n return [_vm._t(\"default\", null, null, slotProps)];\n } }], null, true) }, \"NcPopover\", _vm.$attrs, false), _vm.$listeners), [_c(\"div\", { staticClass: \"nc-emoji-picker-container\" }, [_c(\"Picker\", _vm._b({ ref: \"picker\", attrs: { \"color\": \"var(--color-primary-element)\", \"data\": _vm.emojiIndex, \"emoji\": _vm.previewFallbackEmoji, \"i18n\": _vm.i18n, \"native\": _vm.native, \"emoji-size\": 20, \"per-line\": 8, \"picker-styles\": { width: \"320px\" }, \"show-preview\": _vm.showPreview, \"skin\": _vm.currentSkinTone, \"show-skin-tones\": false, \"title\": _vm.previewFallbackName, \"role\": \"dialog\", \"aria-modal\": \"true\", \"aria-label\": _vm.t(\"Emoji picker\") }, on: { \"select\": _vm.select }, nativeOn: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) return null;\n $event.preventDefault();\n return _vm.handleTabNavigationSkippingEmojis.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"searchTemplate\", fn: function({ onSearch }) {\n return [_c(\"div\", { staticClass: \"search__wrapper\" }, [_c(\"NcTextField\", { ref: \"search\", staticClass: \"search\", attrs: { \"value\": _vm.search, \"label\": _vm.t(\"Search\"), \"label-visible\": true, \"placeholder\": _vm.i18n.search, \"trailing-button-icon\": \"close\", \"trailing-button-label\": _vm.t(\"Clear search\"), \"show-trailing-button\": _vm.search !== \"\" }, on: { \"update:value\": [function($event) {\n _vm.search = $event;\n }, function($event) {\n return onSearch(_vm.search);\n }], \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"left\", 37, $event.key, [\"Left\", \"ArrowLeft\"])) return null;\n if (\"button\" in $event && $event.button !== 0) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"right\", 39, $event.key, [\"Right\", \"ArrowRight\"])) return null;\n if (\"button\" in $event && $event.button !== 2) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n return _vm.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.$refs.picker.onEnter.apply(null, arguments);\n }], \"trailing-button-click\": function($event) {\n _vm.clearSearch();\n onSearch(\"\");\n } } }), _c(\"NcColorPicker\", { attrs: { \"palette-only\": \"\", \"container\": _vm.container, \"palette\": _vm.skinTonePalette, \"value\": _vm.currentColor.color }, on: { \"update:value\": _vm.onChangeSkinTone } }, [_c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"Skin tone\"), \"variant\": \"tertiary-no-background\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCircle\", { style: { color: _vm.currentColor.color }, attrs: { \"title\": _vm.currentColor.name, \"size\": 20 } })];\n }, proxy: true }], null, true) })], 1)], 1)];\n } }, _vm.allowUnselect && _vm.selectedEmoji ? { key: \"customCategory\", fn: function() {\n return [_c(\"div\", { staticClass: \"emoji-mart-category-label\" }, [_c(\"h3\", { staticClass: \"emoji-mart-category-label\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Selected\")) + \" \")])]), _c(\"Emoji\", { staticClass: \"emoji-selected\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": _vm.selectedEmoji, \"native\": true, \"size\": 32 }, on: { \"click\": _vm.unselect } }), _c(\"Emoji\", { staticClass: \"emoji-delete\", attrs: { \"data\": _vm.emojiIndex, \"emoji\": \":x:\", \"native\": true, \"size\": 10 }, on: { \"click\": _vm.unselect } })];\n }, proxy: true } : null], null, true) }, \"Picker\", _vm.$attrs, false))], 1)]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a3ed576d\"\n);\nconst NcEmojiPicker = __component__.exports;\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-CpU37Ozq.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcFormBox-D-kcijXp.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcFormBox-D-kcijXp.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { inject } from \"vue\";\nconst NC_FORM_BOX_CONTEXT_KEY = Symbol.for(\"NcFormBox:context\");\nfunction useNcFormBox() {\n return inject(NC_FORM_BOX_CONTEXT_KEY, {\n isInFormBox: false,\n formBoxItemClass: void 0\n });\n}\nexport {\n NC_FORM_BOX_CONTEXT_KEY as N,\n useNcFormBox as u\n};\n//# sourceMappingURL=useNcFormBox-DA9iwXWY.mjs.map\n","import '../assets/NcFormBox-D-kcijXp.css';\nimport { defineComponent, useCssModule, provide } from \"vue\";\nimport { N as NC_FORM_BOX_CONTEXT_KEY } from \"./useNcFormBox-DA9iwXWY.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormBox\",\n props: {\n row: { type: Boolean, default: false }\n },\n setup(__props) {\n const style = useCssModule();\n provide(NC_FORM_BOX_CONTEXT_KEY, {\n isInFormBox: true,\n formBoxItemClass: style.ncFormBox__item\n });\n return { __sfc: true, style };\n }\n});\nconst ncFormBox = \"_ncFormBox_1u9di_20\";\nconst ncFormBox_row = \"_ncFormBox_row_1u9di_25\";\nconst ncFormBox__item = \"_ncFormBox__item_1u9di_29\";\nconst ncFormBox_col = \"_ncFormBox_col_1u9di_33\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1u9di_12\",\n ncFormBox,\n ncFormBox_row,\n ncFormBox__item,\n ncFormBox_col\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"div\", { class: [_vm.$style.ncFormBox, _vm.row ? _vm.$style.ncFormBox_row : _vm.$style.ncFormBox_col] }, [_vm._t(\"default\", null, { \"itemClass\": _vm.$style.ncFormBox__item })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFormBox = __component__.exports;\nexport {\n NcFormBox as N\n};\n//# sourceMappingURL=NcFormBox-DL435pbV.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxButton-C6EvdLK4.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxButton-C6EvdLK4.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxItem-j2nGdOvd.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxItem-j2nGdOvd.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcFormBoxItem-j2nGdOvd.css';\nimport { defineComponent, useSlots } from \"vue\";\nimport { u as useNcFormBox } from \"./useNcFormBox-DA9iwXWY.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy32 } from \"./legacy-MK4GvP26.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n inheritAttrs: false\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcFormBoxItem\",\n props: {\n tag: null,\n label: { default: void 0 },\n description: { default: void 0 },\n invertedAccent: { type: Boolean, default: false },\n itemClasses: { default: void 0 }\n },\n emits: [\"click\"],\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const { formBoxItemClass } = useNcFormBox();\n const descriptionId = createElementId();\n const hasDescription = () => !!props.description || !!slots.description;\n return { __sfc: true, props, slots, formBoxItemClass, descriptionId, hasDescription, isLegacy32 };\n }\n});\nconst formBoxItem = \"_formBoxItem_pugbs_20\";\nconst formBoxItem_legacy = \"_formBoxItem_legacy_pugbs_60\";\nconst formBoxItem_inverted = \"_formBoxItem_inverted_pugbs_64\";\nconst formBoxItem__element = \"_formBoxItem__element_pugbs_64\";\nconst formBoxItem__description = \"_formBoxItem__description_pugbs_67\";\nconst formBoxItem__content = \"_formBoxItem__content_pugbs_71\";\nconst formBoxItem__icon = \"_formBoxItem__icon_pugbs_89\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_pugbs_12\",\n formBoxItem,\n formBoxItem_legacy,\n formBoxItem_inverted,\n formBoxItem__element,\n formBoxItem__description,\n formBoxItem__content,\n formBoxItem__icon\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: [\n _vm.$style.formBoxItem,\n _setup.formBoxItemClass,\n {\n [_vm.$style.formBoxItem_inverted]: _vm.invertedAccent && _setup.hasDescription(),\n [_vm.$style.formBoxItem_legacy]: _setup.isLegacy32\n }\n ] }, [_c(\"span\", { class: _vm.$style.formBoxItem__content }, [_c(_vm.tag, _vm._b({ tag: \"component\", class: [_vm.$style.formBoxItem__element, _vm.itemClasses], on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"component\", _vm.$attrs, false), [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label || \"⚠️ Label is missing\") + \" \")];\n }, { \"descriptionId\": _setup.descriptionId })], 2), _setup.hasDescription() ? _c(\"span\", { class: _vm.$style.formBoxItem__description, attrs: { \"id\": _setup.descriptionId } }, [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })], 2) : _vm._e()], 1), _c(\"span\", { class: _vm.$style.formBoxItem__icon }, [_vm._t(\"icon\", function() {\n return [_vm._v(\" ⚠️ Icon is missing \")];\n }, { \"descriptionId\": _setup.descriptionId })], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFormBoxItem = __component__.exports;\nexport {\n NcFormBoxItem as N\n};\n//# sourceMappingURL=NcFormBoxItem-DPBm3ZbJ.mjs.map\n","import '../assets/NcFormBoxButton-C6EvdLK4.css';\nimport { reactive, getCurrentInstance, computed, defineComponent } from \"vue\";\nimport { k as mdiOpenInNew, l as mdiArrowTopRight } from \"./mdi-C_j0YT8c.mjs\";\nimport { toRef } from \"@vueuse/core\";\nimport { N as NcFormBoxItem } from \"./NcFormBoxItem-DPBm3ZbJ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction useButtonLink(options) {\n const props = reactive(options);\n const instance = getCurrentInstance();\n const hasVueRouterContext = \"$router\" in instance.proxy.$root;\n const tag = computed(() => {\n if (hasVueRouterContext && props.to) {\n return \"RouterLink\";\n } else if (props.href) {\n return \"a\";\n } else {\n return \"button\";\n }\n });\n const isLink = computed(() => tag.value === \"RouterLink\" || tag.value === \"a\");\n const isHyperLink = computed(() => tag.value === \"a\");\n const isRouterLink = computed(() => tag.value === \"RouterLink\");\n const isButton = computed(() => tag.value === \"button\");\n const attrs = computed(() => {\n if (tag.value === \"RouterLink\") {\n return {\n to: props.to,\n activeClass: \"active\",\n ...props.additionalAttrs?.(\"RouterLink\") ?? {}\n };\n } else if (tag.value === \"a\") {\n return {\n href: props.href,\n target: props.target,\n download: props.download || void 0,\n rel: \"nofollow noreferrer noopener\",\n ...props.additionalAttrs?.(\"a\") ?? {}\n };\n } else if (tag.value === \"button\") {\n return {\n type: props.type || \"button\",\n disabled: props.disabled,\n ...props.additionalAttrs?.(\"button\") ?? {}\n };\n }\n });\n return {\n tag,\n isLink,\n isHyperLink,\n isRouterLink,\n isButton,\n attrs\n };\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormBoxButton\",\n props: {\n label: { default: void 0 },\n description: { default: void 0 },\n invertedAccent: { type: Boolean, default: false },\n to: { default: void 0 },\n href: { default: void 0 },\n target: { default: void 0 },\n disabled: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props) {\n const props = __props;\n const { tag, attrs, isLink } = useButtonLink({\n to: toRef(() => props.to),\n href: toRef(() => props.href),\n target: toRef(() => props.target),\n disabled: toRef(() => props.disabled)\n });\n const icon = computed(() => {\n if (isLink.value) {\n return props.target === \"_blank\" ? mdiOpenInNew : mdiArrowTopRight;\n }\n return void 0;\n });\n return { __sfc: true, props, tag, attrs, isLink, icon, NcFormBoxItem, NcIconSvgWrapper };\n }\n});\nconst formBoxButton = \"_formBoxButton_15jyc_20\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_15jyc_12\",\n formBoxButton\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcFormBoxItem, _vm._b({ attrs: { \"tag\": _setup.tag, \"item-classes\": [\n \"button-vue\",\n /* Reset server's global HTML button styles */\n _vm.$style.formBoxButton\n ], \"inverted-accent\": _vm.invertedAccent, \"tabindex\": \"0\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } }, scopedSlots: _vm._u([_vm.$scopedSlots.default || _vm.label ? { key: \"default\", fn: function() {\n return [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label) + \" \")];\n })];\n }, proxy: true } : null, _vm.$scopedSlots.description || _vm.description ? { key: \"description\", fn: function() {\n return [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })];\n }, proxy: true } : null, _vm.$scopedSlots.icon || _setup.icon ? { key: \"icon\", fn: function() {\n return [_vm._t(\"icon\", function() {\n return [_setup.icon ? _c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.icon, \"inline\": \"\" } }) : _vm._e()];\n })];\n }, proxy: true } : null], null, true) }, \"NcFormBoxItem\", _setup.attrs, false));\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFormBoxButton = __component__.exports;\nexport {\n NcFormBoxButton as N\n};\n//# sourceMappingURL=NcFormBoxButton-DN0-J4yN.mjs.map\n","import { ref, defineComponent, computed } from \"vue\";\nimport { a as mdiCheck, j as mdiContentCopy } from \"./mdi-C_j0YT8c.mjs\";\nimport { toValue, whenever } from \"@vueuse/core\";\nimport { N as NcFormBoxButton } from \"./NcFormBoxButton-DN0-J4yN.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst DELAY = 2e3;\nfunction useCopy(content) {\n const isCopied = ref(false);\n async function copy() {\n if (isCopied.value) {\n return;\n }\n const value = toValue(content);\n try {\n await navigator.clipboard.writeText(value);\n } catch {\n prompt(\"\", value);\n }\n isCopied.value = true;\n setTimeout(() => {\n isCopied.value = false;\n }, DELAY);\n }\n return {\n isCopied,\n copy\n };\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormBoxCopyButton\",\n props: {\n label: { default: void 0 },\n value: null,\n disabled: { type: Boolean, default: false }\n },\n emits: [\"copy\"],\n setup(__props, { emit }) {\n const props = __props;\n const { isCopied, copy } = useCopy(() => props.value);\n const icon = computed(() => isCopied.value ? mdiCheck : mdiContentCopy);\n whenever(isCopied, () => emit(\"copy\"));\n return { __sfc: true, props, emit, isCopied, copy, icon, NcFormBoxButton, NcIconSvgWrapper, t };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcFormBoxButton, { attrs: { \"disabled\": _vm.disabled, \"inverted-accent\": \"\" }, on: { \"click\": _setup.copy }, scopedSlots: _vm._u([_vm.$slots.default || _vm.label ? { key: \"default\", fn: function() {\n return [_c(\"span\", { staticClass: \"hidden-visually\" }, [_vm._v(\" \" + _vm._s(_setup.isCopied ? _setup.t(\"Copied\") : _setup.t(\"Copy to clipboard\")) + \" \")]), _vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label) + \" \")];\n })];\n }, proxy: true } : null, { key: \"description\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.value) + \" \")];\n }, proxy: true }, { key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.icon, \"inline\": \"\" } })];\n }, proxy: true }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcFormBoxCopyButton = __component__.exports;\nexport {\n NcFormBoxCopyButton as N\n};\n//# sourceMappingURL=NcFormBoxCopyButton-Dwrfiovz.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxSwitch-BmyNQCbA.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcFormBoxSwitch-BmyNQCbA.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcFormBoxSwitch-BmyNQCbA.css';\nimport { defineComponent, watch } from \"vue\";\nimport { f as mdiToggleSwitchOff, g as mdiToggleSwitch } from \"./mdi-C_j0YT8c.mjs\";\nimport { useVModel } from \"@vueuse/core\";\nimport { N as NcFormBoxItem } from \"./NcFormBoxItem-DPBm3ZbJ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcFormBoxSwitch\",\n props: {\n label: { default: void 0 },\n description: { default: void 0 },\n disabled: { type: Boolean, default: false },\n modelValue: { type: Boolean }\n },\n emits: [\"enable\", \"disable\", \"update:modelValue\"],\n setup(__props, { emit }) {\n const props = __props;\n const model = useVModel(props, \"modelValue\", emit);\n const inputId = createElementId();\n watch(model, () => {\n if (model.value) {\n emit(\"enable\");\n } else {\n emit(\"disable\");\n }\n }, {\n // defineModel emits update:modelValue synchronously\n // Watching it synchronously to emit the enable/disable events together with the update:modelValue event\n flush: \"sync\"\n });\n return { __sfc: true, props, emit, model, inputId, mdiToggleSwitch, mdiToggleSwitchOff, NcFormBoxItem, NcIconSvgWrapper };\n }\n});\nconst formBoxSwitch__input = \"_formBoxSwitch__input_hjv1a_20\";\nconst formBoxSwitch__icon = \"_formBoxSwitch__icon_hjv1a_34\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_hjv1a_12\",\n formBoxSwitch__input,\n formBoxSwitch__icon\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcFormBoxItem, { attrs: { \"tag\": \"label\", \"for\": _setup.inputId }, scopedSlots: _vm._u([_vm.$slots.default || _vm.label ? { key: \"default\", fn: function() {\n return [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label) + \" \")];\n })];\n }, proxy: true } : null, _vm.$slots.description || _vm.description ? { key: \"description\", fn: function() {\n return [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })];\n }, proxy: true } : null, { key: \"icon\", fn: function({ descriptionId }) {\n return [_c(\"input\", { directives: [{ name: \"model\", rawName: \"v-model\", value: _setup.model, expression: \"model\" }], class: _vm.$style.formBoxSwitch__input, attrs: { \"id\": _setup.inputId, \"type\": \"checkbox\", \"role\": \"switch\", \"aria-describedby\": descriptionId, \"disabled\": _vm.disabled }, domProps: { \"checked\": Array.isArray(_setup.model) ? _vm._i(_setup.model, null) > -1 : _setup.model }, on: { \"change\": function($event) {\n var $$a = _setup.model, $$el = $event.target, $$c = $$el.checked ? true : false;\n if (Array.isArray($$a)) {\n var $$v = null, $$i = _vm._i($$a, $$v);\n if ($$el.checked) {\n $$i < 0 && (_setup.model = $$a.concat([$$v]));\n } else {\n $$i > -1 && (_setup.model = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));\n }\n } else {\n _setup.model = $$c;\n }\n } } }), _c(_setup.NcIconSvgWrapper, { class: _vm.$style.formBoxSwitch__icon, attrs: { \"path\": _setup.model ? _setup.mdiToggleSwitch : _setup.mdiToggleSwitchOff, \"size\": 34, \"inline\": \"\" } })];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFormBoxSwitch = __component__.exports;\nexport {\n NcFormBoxSwitch as N\n};\n//# sourceMappingURL=NcFormBoxSwitch-aOCNeI-K.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcFormGroup-BrD0Scm7.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcFormGroup-BrD0Scm7.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcFormGroup-BrD0Scm7.css';\nimport { defineComponent, useSlots } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormGroup\",\n props: {\n label: { default: void 0 },\n description: { default: void 0 },\n hideLabel: { type: Boolean, default: false },\n hideDescription: { type: Boolean, default: false },\n noGap: { type: Boolean, default: false }\n },\n setup(__props) {\n const props = __props;\n const slots = useSlots();\n const id = `nc-form-group-${createElementId()}`;\n const descriptionId = `${id}-description`;\n const hasDescription = () => !!props.description || !!slots.description;\n const getDescriptionId = () => hasDescription() ? descriptionId : void 0;\n const hasContentOnly = () => props.hideLabel && (!hasDescription() || props.hideDescription);\n return { __sfc: true, props, slots, id, descriptionId, hasDescription, getDescriptionId, hasContentOnly };\n }\n});\nconst formGroup = \"_formGroup_9p8a1_20\";\nconst formGroup_noGap = \"_formGroup_noGap_9p8a1_24\";\nconst formGroup__label = \"_formGroup__label_9p8a1_28\";\nconst formGroup__description = \"_formGroup__description_9p8a1_34\";\nconst formGroup__content = \"_formGroup__content_9p8a1_39\";\nconst formGroup__content_only = \"_formGroup__content_only_9p8a1_45\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_9p8a1_12\",\n formGroup,\n formGroup_noGap,\n formGroup__label,\n formGroup__description,\n formGroup__content,\n formGroup__content_only\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"fieldset\", { class: [_vm.$style.formGroup, { [_vm.$style.formGroup_noGap]: _vm.noGap }], attrs: { \"aria-describedby\": _setup.getDescriptionId() } }, [_c(\"legend\", { class: [_vm.$style.formGroup__label, { \"hidden-visually\": _vm.hideLabel }] }, [_vm._t(\"label\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label || \"⚠️ Missing label\") + \" \")];\n })], 2), _setup.hasDescription() ? _c(\"div\", { class: [_vm.$style.formGroup__description, { \"hidden-visually\": _vm.hideDescription }], attrs: { \"id\": _setup.descriptionId } }, [_vm._t(\"description\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.description) + \" \")];\n })], 2) : _vm._e(), _c(\"div\", { class: [_vm.$style.formGroup__content, { [_vm.$style.formGroup__content_only]: _setup.hasContentOnly() }] }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcFormGroup = __component__.exports;\nexport {\n NcFormGroup as N\n};\n//# sourceMappingURL=NcFormGroup-BfsPo9aC.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcGuestContent-BkegjnLL.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcGuestContent-BkegjnLL.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcGuestContent-BkegjnLL.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcGuestContent\",\n mounted() {\n document.getElementById(\"content\").classList.add(\"nc-guest-content\");\n },\n destroyed() {\n document.getElementById(\"content\").classList.remove(\"nc-guest-content\");\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { attrs: { \"id\": \"guest-content-vue\" } }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"528e9576\"\n);\nconst NcGuestContent = __component__.exports;\nexport {\n NcGuestContent as default\n};\n//# sourceMappingURL=NcGuestContent.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcHeaderButton-DI-1Gsph.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcHeaderButton-DI-1Gsph.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcHeaderButton-DI-1Gsph.css';\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcHeaderButton\",\n components: {\n NcButton\n },\n props: {\n /**\n * Unique id for this menu\n */\n id: {\n type: String,\n required: true\n },\n /**\n * `aria-label` attribute of the button\n */\n ariaLabel: {\n type: String,\n required: true\n },\n /**\n * Additional visually hidden description text for the button\n */\n description: {\n type: String,\n default: null\n }\n },\n emits: [\n \"click\"\n ],\n data() {\n return {\n descriptionId: GenRandomId()\n };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"header-menu\", attrs: { \"id\": _vm.id } }, [_c(\"NcButton\", { staticClass: \"header-menu__trigger\", attrs: { \"aria-label\": _vm.ariaLabel, \"aria-describedby\": _vm.descriptionId, \"size\": \"large\", \"variant\": \"tertiary-no-background\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.$emit(\"click\", $event);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"icon\")];\n }, proxy: true }], null, true) }), _vm.description ? _c(\"span\", { staticClass: \"header-menu__description hidden-visually\", attrs: { \"id\": _vm.descriptionId } }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f1ee5a71\"\n);\nconst NcHeaderButton = __component__.exports;\nexport {\n NcHeaderButton as N\n};\n//# sourceMappingURL=NcHeaderButton-TgPjfPtk.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcHeaderMenu-BkpmEa3M.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcHeaderMenu-BkpmEa3M.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport '../assets/NcHeaderMenu-BkpmEa3M.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { ref } from \"vue\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-BnLfCgGU.mjs\";\nimport clickOutsideOptions from \"../Mixins/clickOutsideOptions.mjs\";\nimport \"../Composables/useIsFullscreen.mjs\";\nimport \"../Composables/useIsMobile.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"../Composables/useIsDarkTheme.mjs\";\nimport \"@nextcloud/router\";\nimport \"../Functions/isDarkTheme.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/capabilities\";\nimport \"./logger-D3RVzcfQ.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nconst _sfc_main = {\n name: \"NcHeaderMenu\",\n components: {\n NcButton\n },\n directives: {\n ClickOutside: vOnClickOutside\n },\n mixins: [\n clickOutsideOptions\n ],\n props: {\n /**\n * Unique id for this menu\n */\n id: {\n type: String,\n required: true\n },\n /**\n * aria-label attribute of the menu open button\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Current menu open state\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * Pass `true` if the header menu is used for website navigation\n *\n * The wrapper tag will be set to `nav` and its `aria-labelledby`\n * will be associated with the menu open button\n */\n isNav: {\n type: Boolean,\n default: false\n },\n /**\n * Additional visually hidden description text for the menu\n * open button\n */\n description: {\n type: String,\n default: null\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"open\",\n \"opened\",\n \"update:open\",\n \"cancel\"\n ],\n setup(props) {\n const opened = ref(props.open);\n useTrapStackControl(opened, {\n disabled: () => !props.isNav\n });\n return {\n opened\n };\n },\n data() {\n return {\n focusTrap: null,\n shortcutsDisabled: window.OCP?.Accessibility?.disableKeyboardShortcuts?.(),\n triggerId: GenRandomId(),\n descriptionId: GenRandomId()\n };\n },\n computed: {\n wrapperTag() {\n return this.isNav ? \"nav\" : \"div\";\n },\n clickOutsideConfig() {\n return [\n this.closeMenu,\n this.clickOutsideOptions\n ];\n },\n listeners() {\n if (this.isNav) {\n return {\n focusout: this.onFocusOut\n };\n }\n return null;\n }\n },\n watch: {\n open(open) {\n if (open) {\n this.openMenu();\n } else {\n this.closeMenu();\n }\n }\n },\n mounted() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n beforeDestroy() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n methods: {\n /**\n * Toggle the current menu open state\n */\n toggleMenu() {\n if (!this.opened) {\n this.openMenu();\n } else {\n this.closeMenu();\n }\n },\n /**\n * Close the current menu\n *\n * @param {boolean} cancelled emit a cancel event instead of close\n */\n closeMenu(cancelled = false) {\n this.opened = false;\n this.$emit(cancelled ? \"cancel\" : \"close\");\n this.$emit(\"update:open\", false);\n this.clearFocusTrap();\n this.$nextTick(() => {\n this.$emit(\"closed\");\n });\n },\n /**\n * Open the current menu\n */\n openMenu() {\n this.opened = true;\n this.$emit(\"open\");\n this.$emit(\"update:open\", true);\n this.$nextTick(() => {\n this.useFocusTrap();\n this.$emit(\"opened\");\n });\n },\n onKeyDown(event) {\n if (this.shortcutsDisabled || !this.opened) {\n return;\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n this.closeMenu(true);\n }\n },\n /**\n * @param {FocusEvent} event The focus event\n */\n onFocusOut(event) {\n if (!this.$refs.headerMenu.contains(event.relatedTarget)) {\n this.closeMenu();\n }\n },\n /**\n * Add focus trap for accessibility.\n * Shall only be used when all children are mounted\n * and available in the DOM. We use $nextTick for that.\n */\n async useFocusTrap() {\n if (this.isNav || this.focusTrap) {\n return;\n }\n const contentContainer = this.$refs.content;\n this.focusTrap = createFocusTrap(contentContainer, {\n allowOutsideClick: true,\n trapStack: getTrapStack(),\n fallbackFocus: this.$refs.trigger.$el\n });\n this.focusTrap.activate();\n },\n clearFocusTrap() {\n this.focusTrap?.deactivate();\n this.focusTrap = null;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.wrapperTag, _vm._g({ directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: _vm.clickOutsideConfig, expression: \"clickOutsideConfig\" }], ref: \"headerMenu\", tag: \"component\", staticClass: \"header-menu\", class: { \"header-menu--opened\": _vm.opened }, attrs: { \"id\": _vm.id, \"aria-labelledby\": _vm.isNav ? _vm.triggerId : null } }, _vm.listeners), [_c(\"NcButton\", { ref: \"trigger\", staticClass: \"header-menu__trigger\", attrs: { \"id\": _vm.isNav ? _vm.triggerId : null, \"aria-controls\": `header-menu-${_vm.id}`, \"aria-describedby\": _vm.description ? _vm.descriptionId : null, \"aria-expanded\": _vm.opened.toString(), \"aria-label\": _vm.ariaLabel, \"size\": \"large\", \"variant\": \"tertiary-no-background\" }, on: { \"click\": function($event) {\n $event.preventDefault();\n return _vm.toggleMenu.apply(null, arguments);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm._t(\"trigger\")];\n }, proxy: true }], null, true) }), _vm.description ? _c(\"span\", { staticClass: \"header-menu__description hidden-visually\", attrs: { \"id\": _vm.descriptionId } }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.opened, expression: \"opened\" }], staticClass: \"header-menu__carret\" }), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.opened, expression: \"opened\" }], staticClass: \"header-menu__wrapper\", attrs: { \"id\": `header-menu-${_vm.id}` } }, [_c(\"div\", { ref: \"content\", staticClass: \"header-menu__content\" }, [_vm._t(\"default\")], 2)])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f00deac7\"\n);\nconst NcHeaderMenu = __component__.exports;\nexport {\n NcHeaderMenu as N\n};\n//# sourceMappingURL=NcHeaderMenu-Hk8OTuma.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcHotkey-4yi1Hobg.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcHotkey-4yi1Hobg.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcKbd-BGW1_Jb7.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcKbd-BGW1_Jb7.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcKbd-BGW1_Jb7.css';\nimport { defineComponent, computed } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: void 0 },\n mac: { type: [Boolean, null], default: isMac }\n },\n setup(__props) {\n const props = __props;\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => props.symbol && labels.value[props.symbol] || props.symbol);\n return { __sfc: true, props, labels, label };\n }\n});\nconst kbd = \"_kbd_lf0a1_20\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_lf0a1_12\",\n kbd\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"kbd\", { class: _vm.$style.kbd }, [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_setup.label) + \" \")];\n })], 2);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcKbd = __component__.exports;\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-CfVfr9CW.mjs.map\n","import '../assets/NcHotkey-4yi1Hobg.css';\nimport { defineComponent, computed } from \"vue\";\nimport { N as NcKbd } from \"./NcKbd-CfVfr9CW.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkey\",\n props: {\n label: { default: void 0 },\n hotkey: { default: void 0 }\n },\n setup(__props) {\n const props = __props;\n const symbols = computed(() => {\n return props.hotkey?.split(/\\s+/).map((s) => s.trim());\n });\n const NO_LABEL_WARNING = \"⚠️ NcHotKey must have a label or slot content\";\n return { __sfc: true, props, symbols, NO_LABEL_WARNING, NcKbd };\n }\n});\nconst hotkey = \"_hotkey_1s86g_20\";\nconst hotkey__label = \"_hotkey__label_1s86g_27\";\nconst hotkey__keys = \"_hotkey__keys_1s86g_28\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1s86g_12\",\n hotkey,\n hotkey__label,\n hotkey__keys\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"li\", { class: _vm.$style.hotkey }, [_c(\"span\", { class: _vm.$style.hotkey__keys, attrs: { \"role\": \"term\" } }, [_vm._t(\"hotkey\", function() {\n return _vm._l(_setup.symbols, function(symbol, index) {\n return _c(_setup.NcKbd, { key: index, attrs: { \"symbol\": symbol } });\n });\n })], 2), _c(\"span\", { class: _vm.$style.hotkey__label, attrs: { \"role\": \"definition\" } }, [_vm._t(\"default\", function() {\n return [_vm._v(\" \" + _vm._s(_vm.label || _setup.NO_LABEL_WARNING) + \" \")];\n })], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcHotkey = __component__.exports;\nexport {\n NcHotkey as N\n};\n//# sourceMappingURL=NcHotkey-CzuMmIU9.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcHotkeyList-gAZN0WIu.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcHotkeyList-gAZN0WIu.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcHotkeyList-gAZN0WIu.css';\nimport { defineComponent } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister();\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return { __sfc: true, labelId, t };\n }\n});\nconst hotkeyList = \"_hotkeyList_pf97p_2\";\nconst hotkeyList__heading = \"_hotkeyList__heading_pf97p_6\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: _vm.$style.hotkeyList }, [_c(\"div\", { class: [_vm.$style.hotkeyList__heading, { \"hidden-visually\": !_vm.label }], attrs: { \"id\": _setup.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label || _setup.t(\"Keyboard shortcuts\")) + \" \")]), _c(\"ul\", { attrs: { \"aria-labelledby\": _setup.labelId } }, [_vm._t(\"default\")], 2)]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcHotkeyList = __component__.exports;\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-Bm25Odp7.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcListItem-Czbi1F0Q.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcListItem-Czbi1F0Q.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcListItem-Czbi1F0Q.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { N as NcActions } from \"./NcActions-CpdT2y6O.mjs\";\nimport { N as NcCounterBubble } from \"./NcCounterBubble-oxV8oMlX.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcListItem\",\n components: {\n NcActions,\n NcCounterBubble,\n NcVNodes\n },\n props: {\n /**\n * The details text displayed in the upper right part of the component\n */\n details: {\n type: String,\n default: \"\"\n },\n /**\n * Name (first line of text)\n */\n name: {\n type: String,\n default: void 0\n },\n /**\n * Pass in `true` if you want the matching behavior to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * The route for the router link.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * The value for the external link\n */\n href: {\n type: String,\n default: \"#\"\n },\n /**\n * The HTML target attribute used for the link\n */\n target: {\n type: String,\n default: \"\"\n },\n /**\n * Id for the `<a>` element\n */\n anchorId: {\n type: String,\n default: \"\"\n },\n /**\n * Make subname bold\n */\n bold: {\n type: Boolean,\n default: false\n },\n /**\n * Show the NcListItem in compact design\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Toggle the active state of the component\n */\n active: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: void 0\n },\n /**\n * Aria label for the wrapper element\n */\n linkAriaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions toggle\n */\n actionsAriaLabel: {\n type: String,\n default: void 0\n },\n /**\n * If different from 0 this component will display the\n * NcCounterBubble component\n */\n counterNumber: {\n type: [Number, String],\n default: 0\n },\n /**\n * Outlined or highlighted state of the counter\n */\n counterType: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].indexOf(value) !== -1;\n }\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Show the list component layout\n */\n oneLine: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"click\",\n \"update:menuOpen\"\n ],\n setup() {\n return {\n isLegacy\n };\n },\n data() {\n return {\n hovered: false,\n hasActions: false,\n hasSubname: false,\n displayActionsOnHoverFocus: false,\n menuOpen: false,\n hasIndicator: false,\n hasDetails: false\n };\n },\n computed: {\n showAdditionalElements() {\n return !this.displayActionsOnHoverFocus || this.forceDisplayActions;\n },\n showDetails() {\n return (this.details !== \"\" || this.hasDetails) && (!this.displayActionsOnHoverFocus || this.forceDisplayActions);\n }\n },\n watch: {\n menuOpen(newValue) {\n if (!newValue && !this.hovered) {\n this.displayActionsOnHoverFocus = false;\n }\n }\n },\n mounted() {\n this.checkSlots();\n },\n updated() {\n this.checkSlots();\n },\n methods: {\n /**\n * Handle link click\n *\n * @param {MouseEvent|KeyboardEvent} event - Native click or keydown event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n showActions() {\n if (this.hasActions) {\n this.displayActionsOnHoverFocus = true;\n }\n this.hovered = false;\n },\n hideActions() {\n this.displayActionsOnHoverFocus = false;\n },\n /**\n * @param {FocusEvent} event UI event\n */\n handleBlur(event) {\n if (this.menuOpen) {\n return;\n }\n if (this.$refs[\"list-item\"].contains(event.relatedTarget)) {\n return;\n }\n this.hideActions();\n },\n /**\n * Hide the actions on mouseleave unless the menu is open\n */\n handleMouseleave() {\n if (!this.menuOpen) {\n this.displayActionsOnHoverFocus = false;\n }\n this.hovered = false;\n },\n handleMouseover() {\n this.showActions();\n this.hovered = true;\n },\n handleActionsUpdateOpen(e) {\n this.menuOpen = e;\n this.$emit(\"update:menuOpen\", e);\n },\n // Check if subname and actions slots are populated\n checkSlots() {\n if (this.hasActions !== !!this.$slots.actions) {\n this.hasActions = !!this.$slots.actions;\n }\n if (this.hasSubname !== !!this.$slots.subname) {\n this.hasSubname = !!this.$slots.subname;\n }\n if (this.hasIndicator !== !!this.$slots.indicator) {\n this.hasIndicator = !!this.$slots.indicator;\n }\n if (this.hasDetails !== !!this.$slots.details) {\n this.hasDetails = !!this.$slots.details;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.to ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.to ? true : null, \"to\": _vm.to, \"exact\": _vm.to ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"li\", { staticClass: \"list-item__wrapper\", class: { \"list-item__wrapper--active\": _vm.active ?? isActive } }, [_c(\"div\", { ref: \"list-item\", staticClass: \"list-item\", class: {\n \"list-item--compact\": _vm.compact,\n \"list-item--legacy\": _vm.isLegacy,\n \"list-item--one-line\": _vm.oneLine\n }, on: { \"mouseover\": _vm.handleMouseover, \"mouseleave\": _vm.handleMouseleave } }, [_c(\"a\", { staticClass: \"list-item__anchor\", attrs: { \"id\": _vm.anchorId || void 0, \"aria-label\": _vm.linkAriaLabel, \"href\": routerLinkHref || _vm.href, \"target\": _vm.target || (_vm.href === \"#\" ? void 0 : \"_blank\"), \"rel\": _vm.href === \"#\" ? void 0 : \"noopener noreferrer\" }, on: { \"focus\": _vm.showActions, \"focusout\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.hideActions.apply(null, arguments);\n } } }, [_vm._t(\"icon\"), _c(\"div\", { staticClass: \"list-item-content\" }, [_c(\"div\", { staticClass: \"list-item-content__main\" }, [_c(\"div\", { staticClass: \"list-item-content__name\" }, [_vm._t(\"name\", function() {\n return [_vm._v(_vm._s(_vm.name))];\n })], 2), _vm.hasSubname ? _c(\"div\", { staticClass: \"list-item-content__subname\", class: { \"list-item-content__subname--bold\": _vm.bold } }, [_vm._t(\"subname\")], 2) : _vm._e()]), _c(\"div\", { staticClass: \"list-item-content__details\" }, [_vm.showDetails ? _c(\"div\", { staticClass: \"list-item-details__details\" }, [_vm._t(\"details\", function() {\n return [_vm._v(_vm._s(_vm.details))];\n })], 2) : _vm._e(), _vm.counterNumber || _vm.hasIndicator ? _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showAdditionalElements, expression: \"showAdditionalElements\" }], staticClass: \"list-item-details__extra\" }, [_vm.counterNumber ? _c(\"NcCounterBubble\", { staticClass: \"list-item-details__counter\", attrs: { \"active\": _vm.active ?? isActive, \"type\": _vm.counterType } }, [_vm._v(\" \" + _vm._s(_vm.counterNumber) + \" \")]) : _vm._e(), _vm.hasIndicator ? _c(\"span\", { staticClass: \"list-item-details__indicator\" }, [_vm._t(\"indicator\")], 2) : _vm._e()], 1) : _vm._e()])])], 2), _vm.$slots[\"extra-actions\"] ? _c(\"div\", { staticClass: \"list-item-content__extra-actions\" }, [_vm._t(\"extra-actions\")], 2) : _vm._e(), _vm.forceDisplayActions || _vm.displayActionsOnHoverFocus ? _c(\"div\", { staticClass: \"list-item-content__actions\", on: { \"focusout\": _vm.handleBlur } }, [_c(\"NcActions\", { ref: \"actions\", attrs: { \"primary\": _vm.active ?? isActive, \"force-menu\": _vm.forceMenu, \"aria-label\": _vm.actionsAriaLabel }, on: { \"update:open\": _vm.handleActionsUpdateOpen }, scopedSlots: _vm._u([_vm.$slots[\"actions-icon\"] ? { key: \"icon\", fn: function() {\n return [_vm._t(\"actions-icon\")];\n }, proxy: true } : null], null, true) }, [_vm._t(\"actions\")], 2)], 1) : _vm._e(), _vm.$slots.extra ? _c(\"div\", { staticClass: \"list-item__extra\" }, [_vm._t(\"extra\")], 2) : _vm._e()])])];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"0a08838f\"\n);\nconst NcListItem = __component__.exports;\nexport {\n NcListItem as N\n};\n//# sourceMappingURL=NcListItem-BommrKRB.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcNoteCard-Dz5-u2BY.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcNoteCard-Dz5-u2BY.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcNoteCard-Dz5-u2BY.css';\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { i as isLegacy32 } from \"../chunks/legacy-MK4GvP26.mjs\";\nconst _sfc_main$4 = {\n name: \"AlertIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst Alert = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"AlertDecagramIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon alert-decagram-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst AlertDecagram = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"CheckboxMarkedCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon checkbox-marked-circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst CheckboxMarkedCircle = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"InformationIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon information-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst Information = __component__$1.exports;\nconst _sfc_main = {\n name: \"NcNoteCard\",\n props: {\n /**\n * Type or severity of the message\n */\n type: {\n type: String,\n default: \"warning\",\n validator: (type) => [\"success\", \"info\", \"warning\", \"error\"].includes(type)\n },\n /**\n * Enforce the `alert` role on the note card.\n *\n * The [`alert` role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/alert_role)\n * should only be used for information that requires the user's immediate attention.\n */\n showAlert: {\n type: Boolean,\n default: false\n },\n /**\n * Optional text to show as a heading of the note card\n */\n heading: {\n type: String,\n default: \"\"\n },\n /**\n * The message text of the note card\n */\n text: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n isLegacy32\n };\n },\n computed: {\n shouldShowAlert() {\n return this.showAlert || this.type === \"error\";\n },\n icon() {\n switch (this.type) {\n case \"error\":\n return AlertDecagram;\n case \"success\":\n return CheckboxMarkedCircle;\n case \"info\":\n return Information;\n case \"warning\":\n return Alert;\n default:\n return Alert;\n }\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"notecard\", class: {\n [`notecard--${_vm.type}`]: _vm.type,\n \"notecard--legacy\": _vm.isLegacy32\n }, attrs: { \"role\": _vm.shouldShowAlert ? \"alert\" : \"note\" } }, [_vm._t(\"icon\", function() {\n return [_c(_vm.icon, { tag: \"component\", staticClass: \"notecard__icon\", class: { \"notecard__icon--heading\": _vm.heading }, attrs: { \"fill-color\": \"var(--note-theme)\", \"size\": 20 } })];\n }), _c(\"div\", [_vm.heading ? _c(\"p\", { staticClass: \"notecard__heading\" }, [_vm._v(\" \" + _vm._s(_vm.heading) + \" \")]) : _vm._e(), _vm._t(\"default\", function() {\n return [_c(\"p\", { staticClass: \"notecard__text\" }, [_vm._v(\" \" + _vm._s(_vm.text) + \" \")])];\n })], 2)], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"1362be5a\"\n);\nconst NcNoteCard = __component__.exports;\nexport {\n NcNoteCard as default\n};\n//# sourceMappingURL=NcNoteCard.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcProgressBar-CU_ib_HL.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcProgressBar-CU_ib_HL.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcProgressBar-CU_ib_HL.css';\nimport { useCssVars } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n name: \"NcProgressBar\",\n props: {\n /**\n * An integer between 1 and 100\n */\n value: {\n type: Number,\n default: 0,\n validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n /**\n * Determines the height of the progressbar.\n * Possible values:\n * - 'small' (default)\n * - 'medium'\n * - Number\n *\n * @type {'small'|'medium'|number}\n */\n size: {\n type: [String, Number],\n default: \"small\",\n validator(value) {\n return [\"small\", \"medium\"].includes(value) || typeof value === \"number\";\n }\n },\n /**\n * Applies an error color to the progressbar if true.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * ProgressBar type\n */\n type: {\n type: String,\n default: \"linear\",\n validator(value) {\n return [\"linear\", \"circular\"].includes(value);\n }\n },\n /**\n * The color of the progress bar\n */\n color: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n stroke: 4\n };\n },\n computed: {\n height() {\n if (this.type === \"circular\") {\n if (Number.isInteger(this.size)) {\n return this.size;\n }\n return 44;\n }\n if (this.size === \"small\") {\n return 4;\n } else if (this.size === \"medium\") {\n return 6;\n }\n return this.size;\n },\n progress() {\n return this.value / 100;\n },\n radius() {\n return this.height / 2;\n },\n radiusNormalized() {\n return this.radius - 3 * this.stroke;\n },\n circumference() {\n return this.radiusNormalized * 2 * Math.PI;\n }\n }\n};\nconst __injectCSSVars__ = () => {\n useCssVars((_vm, _setup) => ({\n \"15a054de\": _vm.color\n }));\n};\nconst __setup__ = __default__.setup;\n__default__.setup = __setup__ ? (props, ctx) => {\n __injectCSSVars__();\n return __setup__(props, ctx);\n} : __injectCSSVars__;\nconst _sfc_main = __default__;\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.type === \"circular\" ? _c(\"span\", { staticClass: \"progress-bar progress-bar--circular\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"role\": \"progressbar\", \"aria-valuenow\": _vm.value } }, [_c(\"svg\", { attrs: { \"height\": _vm.height, \"width\": _vm.height } }, [_c(\"circle\", { attrs: { \"stroke\": \"currentColor\", \"fill\": \"transparent\", \"stroke-dasharray\": `${_vm.progress * _vm.circumference} ${(1 - _vm.progress) * _vm.circumference}`, \"stroke-dashoffset\": 0.25 * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } }), _c(\"circle\", { attrs: { \"stroke\": \"var(--color-background-darker)\", \"fill\": \"transparent\", \"stroke-dasharray\": `${(1 - _vm.progress) * _vm.circumference} ${_vm.progress * _vm.circumference}`, \"stroke-dashoffset\": (0.25 - _vm.progress) * _vm.circumference, \"stroke-width\": _vm.stroke, \"r\": _vm.radiusNormalized, \"cx\": _vm.radius, \"cy\": _vm.radius } })])]) : _c(\"progress\", { staticClass: \"progress-bar progress-bar--linear vue\", class: { \"progress-bar--error\": _vm.error }, style: { \"--progress-bar-height\": _vm.height + \"px\" }, attrs: { \"max\": \"100\" }, domProps: { \"value\": _vm.value } });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"06c9abdc\"\n);\nconst NcProgressBar = __component__.exports;\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-D7zYeXBH.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcRadioGroup-1zpSX8V5.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcRadioGroup-1zpSX8V5.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcRadioGroup-1zpSX8V5.css';\nimport Vue, { defineComponent, ref, provide, computed } from \"vue\";\nimport { N as NcFormBox } from \"./NcFormBox-DL435pbV.mjs\";\nimport { N as NcFormGroup } from \"./NcFormGroup-BfsPo9aC.mjs\";\nimport { I as INSIDE_RADIO_GROUP_KEY } from \"./useNcRadioGroup-DaZbEKbf.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n __name: \"NcRadioGroup\",\n props: {\n label: null,\n labelHidden: { type: Boolean },\n hideLabel: { type: Boolean },\n description: null,\n modelValue: null\n },\n emits: [\"update:modelValue\"],\n setup(__props, { emit }) {\n const props = __props;\n const buttonVariant = ref();\n provide(INSIDE_RADIO_GROUP_KEY, computed(() => ({\n modelValue: props.modelValue,\n onUpdate,\n register\n })));\n function register(isButton) {\n if (buttonVariant.value !== void 0 && buttonVariant.value !== isButton) {\n Vue.util.warn(\"[NcRadioGroup] Mixing NcCheckboxRadioSwitch and NcRadioGroupButton is not possible!\");\n }\n buttonVariant.value = isButton;\n }\n function onUpdate(value) {\n emit(\"update:modelValue\", value);\n }\n return { __sfc: true, props, emit, buttonVariant, register, onUpdate, NcFormBox, NcFormGroup };\n }\n});\nconst radioGroup_checkboxRadioContainer = \"_radioGroup_checkboxRadioContainer_14z4o_20\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_14z4o_12\",\n radioGroup_checkboxRadioContainer\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcFormGroup, { attrs: { \"label\": _vm.label, \"description\": _vm.description, \"hide-label\": _vm.labelHidden || _vm.hideLabel } }, [_setup.buttonVariant ? _c(_setup.NcFormBox, { attrs: { \"row\": \"\" } }, [_vm._t(\"default\")], 2) : _c(\"span\", { class: _vm.$style.radioGroup_checkboxRadioContainer }, [_vm._t(\"default\")], 2)], 1);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcRadioGroup = __component__.exports;\nexport {\n NcRadioGroup as N\n};\n//# sourceMappingURL=NcRadioGroup-D0rC63G8.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcRadioGroupButton-DRZ1_-yY.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcRadioGroupButton-DRZ1_-yY.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcRadioGroupButton-DRZ1_-yY.css';\nimport { defineComponent, onMounted, computed } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { u as useNcFormBox } from \"./useNcFormBox-DA9iwXWY.mjs\";\nimport { u as useInsideRadioGroup } from \"./useNcRadioGroup-DaZbEKbf.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcRadioGroupButton\",\n props: {\n ariaLabel: null,\n label: null,\n value: null\n },\n setup(__props) {\n const props = __props;\n const labelId = createElementId();\n const radioGroup = useInsideRadioGroup();\n const { formBoxItemClass } = useNcFormBox();\n onMounted(() => radioGroup.value.register(true));\n const isChecked = computed(() => radioGroup?.value.modelValue === props.value);\n function onUpdate() {\n radioGroup.value.onUpdate(props.value);\n }\n return { __sfc: true, props, labelId, radioGroup, formBoxItemClass, isChecked, onUpdate };\n }\n});\nconst radioGroupButton = \"_radioGroupButton_1euqq_20\";\nconst radioGroupButton__label = \"_radioGroupButton__label_1euqq_46\";\nconst radioGroupButton__icon = \"_radioGroupButton__icon_1euqq_49\";\nconst radioGroupButton_active = \"_radioGroupButton_active_1euqq_62\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1euqq_12\",\n radioGroupButton,\n radioGroupButton__label,\n radioGroupButton__icon,\n radioGroupButton_active\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { class: [{\n [_vm.$style.radioGroupButton_active]: _setup.isChecked\n }, _vm.$style.radioGroupButton, _setup.formBoxItemClass], on: { \"click\": _setup.onUpdate } }, [_vm.$scopedSlots.icon ? _c(\"div\", { class: _vm.$style.radioGroupButton__icon }, [_vm._t(\"icon\")], 2) : _vm._e(), _vm.label ? _c(\"div\", { class: _vm.$style.radioGroupButton__label, attrs: { \"id\": _setup.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e(), _c(\"input\", { staticClass: \"hidden-visually\", attrs: { \"aria-labelledby\": _vm.label ? _setup.labelId : void 0, \"aria-label\": _vm.label ? void 0 : _vm.ariaLabel, \"type\": \"radio\" }, domProps: { \"checked\": _setup.isChecked, \"value\": _vm.value }, on: { \"input\": _setup.onUpdate } })]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style0\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n null\n);\nconst NcRadioGroupButton = __component__.exports;\nexport {\n NcRadioGroupButton as N\n};\n//# sourceMappingURL=NcRadioGroupButton-3Pu4Iqdf.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcRelatedResourcesPanel-BgMc8bue.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcRelatedResourcesPanel-BgMc8bue.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcRelatedResourcesPanel-BgMc8bue.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, O as t39, a as t, P as t42, Q as t9 } from \"./_l10n-BmKQgz1z.mjs\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { g as getRoute } from \"./autolink-D2pIbi92.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-DFQfzh63.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-C7Dy9Bph.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t39);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"li\", { staticClass: \"resource\" }, [_c(\"NcButton\", { staticClass: \"resource__button\", attrs: { \"aria-label\": _vm.labelTranslated, \"to\": _vm.route, \"href\": _vm.route ? null : _vm.url, \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"div\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": _vm.icon } })])];\n }, proxy: true }]) }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"9f864ea4\"\n);\nconst NcResource = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon account-group-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst AccountGroup = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon open-in-new-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst OpenInNew = __component__$2.exports;\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"Could not fetch Teams resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"team-resources\" }, [_c(\"h5\", { staticClass: \"team-resources__header\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Related team resources\")) + \" \")]), _vm._l(_vm.teamResources, function(team) {\n return _c(\"details\", { key: team.teamId, staticClass: \"related-team\", attrs: { \"name\": \"Team resources\", \"open\": _vm.open(team.teamId) }, on: { \"toggle\": (event) => _vm.toggleOpen(team.teamId, event.target.open) } }, [_c(\"summary\", { staticClass: \"related-team__header\" }, [_c(\"h5\", { staticClass: \"related-team__name\" }, [_c(\"AccountGroup\", { attrs: { \"size\": 20 } }), _vm._v(\" \" + _vm._s(team.displayName) + \" \")], 1), _c(\"NcButton\", { attrs: { \"aria-label\": _vm.t(\"View team\"), \"href\": team.link, \"title\": _vm.t(\"View team\"), \"variant\": \"tertiary\" }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"OpenInNew\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, true) }), _vm.open(team.teamId) ? _c(\"ChevronUp\", { attrs: { \"size\": 20 } }) : _c(\"ChevronDown\", { attrs: { \"size\": 20 } })], 1), _c(\"div\", _vm._l(_vm.teamProviders(team.teamId), function(provider) {\n return _c(\"div\", { key: provider.id, staticClass: \"related-team-provider\" }, [provider.resources.length > 0 ? _c(\"h6\", [_vm._v(\" \" + _vm._s(provider.name) + \" \")]) : _vm._e(), _c(\"ul\", _vm._l(provider.resources, function(resource) {\n return _c(\"li\", { key: resource.url, staticClass: \"related-team-resource\" }, [_c(\"a\", { staticClass: \"related-team-resource__link\", attrs: { \"href\": resource.url } }, [resource.iconEmoji ? _c(\"span\", { staticClass: \"resource__icon\" }, [_vm._v(\" \" + _vm._s(resource.iconEmoji) + \" \")]) : resource.iconSvg ? _c(\"NcIconSvgWrapper\", { staticClass: \"resource__icon\", attrs: { \"svg\": resource.iconSvg, \"size\": 20 } }) : resource.iconURL ? _c(\"span\", { staticClass: \"resource__icon\" }, [_c(\"img\", { attrs: { \"src\": resource.iconURL, \"alt\": \"\" } })]) : _vm._e(), _c(\"span\", { staticClass: \"resource__name\" }, [_vm._v(\" \" + _vm._s(resource.label) + \" \")])], 1)]);\n }), 0)]);\n }), 0)]);\n })], 2) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"e224f6ac\"\n);\nconst NcTeamResources = __component__$1.exports;\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"has-error\",\n \"has-resources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId = null;\n let itemId = null;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"has-error\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"has-resources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = e;\n logger.error(\"Could not fetch related resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_c(\"NcTeamResources\", { attrs: { \"provider-id\": _vm.providerId, \"item-id\": _vm.itemId } }), _vm.appEnabled && _vm.isVisible ? _c(\"div\", { staticClass: \"related-resources\" }, [_c(\"div\", { staticClass: \"related-resources__header\" }, [_c(\"h5\", [_vm._v(_vm._s(_vm.header))]), _c(\"p\", [_vm._v(_vm._s(_vm.subline))])]), _vm._l(_vm.resources, function(resource) {\n return _c(\"NcResource\", { key: resource.itemId, staticClass: \"related-resources__entry\", attrs: { \"icon\": resource.icon, \"name\": resource.title, \"url\": resource.url } });\n })], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"eaa109ec\"\n);\nconst NcRelatedResourcesPanel = __component__.exports;\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-D9-wo_xr.mjs.map\n","import '../assets/NcMentionBubble-CaztX9Pv.css';\nimport escapeHtml from \"escape-html\";\nimport stripTags from \"striptags\";\nimport Vue from \"vue\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-IhLacDEr.mjs\";\n/* empty css */\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcMentionBubble\",\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n id: {\n type: String,\n required: true\n },\n /**\n * @deprecated Use `label` instead\n */\n title: {\n type: String,\n required: false,\n default: null\n },\n label: {\n type: String,\n required: false,\n default: null\n },\n icon: {\n type: String,\n required: true\n },\n iconUrl: {\n type: [String, null],\n default: null\n },\n source: {\n type: String,\n required: true\n },\n primary: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n mentionText() {\n return !this.id.includes(\" \") && !this.id.includes(\"/\") ? `@${this.id}` : `@\"${this.id}\"`;\n },\n // Fallback to title for compatibility\n labelWithFallback() {\n return this.label || this.title;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", { staticClass: \"mention-bubble\", class: { \"mention-bubble--primary\": _vm.primary }, attrs: { \"contenteditable\": \"false\" } }, [_c(\"span\", { staticClass: \"mention-bubble__wrapper\" }, [_c(\"span\", { staticClass: \"mention-bubble__content\" }, [_c(\"span\", { staticClass: \"mention-bubble__icon\", class: [_vm.icon, `mention-bubble__icon--${_vm.avatarUrl ? \"with-avatar\" : \"\"}`], style: _vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null }), _c(\"span\", { staticClass: \"mention-bubble__title\", attrs: { \"role\": \"heading\", \"title\": _vm.labelWithFallback } })]), _c(\"span\", { staticClass: \"mention-bubble__select\", attrs: { \"role\": \"none\" } }, [_vm._v(_vm._s(_vm.mentionText))])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"07bfaab0\"\n);\nconst NcMentionBubble = __component__.exports;\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source;\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source;\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source;\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source;\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source;\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;\nconst USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, \"gi\");\nconst USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, \"gi\");\nconst richEditor = {\n props: {\n userData: {\n type: Object,\n default: () => ({})\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @return {string} rendered html\n */\n renderContent(value) {\n const sanitizedValue = escapeHtml(value);\n const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();\n return splitValue.map((part) => {\n if (!part.startsWith(\"@\")) {\n return part;\n }\n const id = part.slice(1).replace(/"/gi, \"\");\n return this.genSelectTemplate(id);\n }).join(\"\").replace(/\\n/gmi, \"<br>\").replace(/&/gmi, \"&\");\n },\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @return {string}\n */\n parseContent(content) {\n let text = content;\n text = text.replace(/<br>/gmi, \"\\n\");\n text = text.replace(/ /gmi, \" \");\n text = text.replace(/&/gmi, \"&\");\n text = text.replace(/<\\/div>/gmi, \"\\n\");\n text = stripTags(text, \"<div>\");\n text = stripTags(text);\n return text;\n },\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @return {string}\n */\n genSelectTemplate(value) {\n if (typeof value === \"undefined\") {\n return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;\n }\n const data = this.userData[value];\n if (!data) {\n return [\" \", \"/\", \":\"].every((char) => !value.includes(char)) ? `@${value}` : `@\"${value}\"`;\n }\n return this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, \"\").replace(/>\\s+</g, \"><\");\n },\n /**\n * Render a component and return its html content\n *\n * @param {object} propsData the props to pass to the component\n * @param {object} component the component to render\n * @return {string} the rendered html\n */\n renderComponentHtml(propsData, component) {\n const View = Vue.extend(component);\n const Item = new View({\n propsData\n });\n const wrapper = document.createElement(\"div\");\n const mount = document.createElement(\"div\");\n wrapper.style.display = \"none\";\n wrapper.appendChild(mount);\n document.body.appendChild(wrapper);\n Item.$mount(mount);\n const renderedHtml = wrapper.innerHTML;\n Item.$destroy();\n wrapper.remove();\n return renderedHtml;\n }\n }\n};\nexport {\n NcMentionBubble as N,\n USERID_REGEX as U,\n USERID_REGEX_WITH_SPACE as a,\n richEditor as r\n};\n//# sourceMappingURL=index-TmAR7I2T.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcRichContenteditable-BjQ4qHUO.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcRichContenteditable-BjQ4qHUO.css\";\n export default content && content.locals ? content.locals : undefined;\n","import ansiRegex from 'ansi-regex';\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\treturn string.replace(ansiRegex(), '');\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import stripAnsi from 'strip-ansi';\nimport charRegex from 'char-regex';\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\treturn string.match(charRegex()).length;\n}\n","// Based on https://github.com/lodash/lodash/blob/6018350ac10d5ce6a5b7db625140b82aeab804df/.internal/unicodeSize.js\r\n\r\nexport default function charRegex() {\r\n\t// Unicode character classes\r\n\tconst astralRange = '\\\\ud800-\\\\udfff';\r\n\tconst comboMarksRange = '\\\\u0300-\\\\u036f';\r\n\tconst comboHalfMarksRange = '\\\\ufe20-\\\\ufe2f';\r\n\tconst comboSymbolsRange = '\\\\u20d0-\\\\u20ff';\r\n\tconst comboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff';\r\n\tconst comboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff';\r\n\tconst comboRange = comboMarksRange + comboHalfMarksRange + comboSymbolsRange + comboMarksExtendedRange + comboMarksSupplementRange;\r\n\tconst varRange = '\\\\ufe0e\\\\ufe0f';\r\n\r\n\t// Telugu characters\r\n\tconst teluguVowels = '\\\\u0c05-\\\\u0c0c\\\\u0c0e-\\\\u0c10\\\\u0c12-\\\\u0c14\\\\u0c60-\\\\u0c61';\r\n\tconst teluguVowelsDiacritic = '\\\\u0c3e-\\\\u0c44\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4c\\\\u0c62-\\\\u0c63';\r\n\tconst teluguConsonants = '\\\\u0c15-\\\\u0c28\\\\u0c2a-\\\\u0c39';\r\n\tconst teluguConsonantsRare = '\\\\u0c58-\\\\u0c5a';\r\n\tconst teluguModifiers = '\\\\u0c01-\\\\u0c03\\\\u0c4d\\\\u0c55\\\\u0c56';\r\n\tconst teluguNumerals = '\\\\u0c66-\\\\u0c6f\\\\u0c78-\\\\u0c7e';\r\n\tconst teluguSingle = `[${teluguVowels}(?:${teluguConsonants}(?!\\\\u0c4d))${teluguNumerals}${teluguConsonantsRare}]`;\r\n\tconst teluguDouble = `[${teluguConsonants}${teluguConsonantsRare}][${teluguVowelsDiacritic}]|[${teluguConsonants}${teluguConsonantsRare}][${teluguModifiers}`;\r\n\tconst teluguTriple = `[${teluguConsonants}]\\\\u0c4d[${teluguConsonants}]`;\r\n\tconst telugu = `(?:${teluguTriple}|${teluguDouble}|${teluguSingle})`;\r\n\r\n\t// Unicode capture groups\r\n\tconst astral = `[${astralRange}]`;\r\n\tconst combo = `[${comboRange}]`;\r\n\tconst fitz = '\\\\ud83c[\\\\udffb-\\\\udfff]';\r\n\tconst modifier = `(?:${combo}|${fitz})`;\r\n\tconst nonAstral = `[^${astralRange}]`;\r\n\tconst regional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}';\r\n\tconst surrogatePair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]';\r\n\tconst zeroWidthJoiner = '\\\\u200d';\r\n\tconst blackFlag = '(?:\\\\ud83c\\\\udff4\\\\udb40\\\\udc67\\\\udb40\\\\udc62\\\\udb40(?:\\\\udc65|\\\\udc73|\\\\udc77)\\\\udb40(?:\\\\udc6e|\\\\udc63|\\\\udc6c)\\\\udb40(?:\\\\udc67|\\\\udc74|\\\\udc73)\\\\udb40\\\\udc7f)';\r\n\r\n\t// Unicode regexes\r\n\tconst optModifier = `${modifier}?`;\r\n\tconst optVar = `[${varRange}]?`;\r\n\tconst optJoin = `(?:${zeroWidthJoiner}(?:${[nonAstral, regional, surrogatePair].join('|')})${optVar + optModifier})*`;\r\n\tconst seq = optVar + optModifier + optJoin;\r\n\tconst nonAstralCombo = `${nonAstral}${combo}?`;\r\n\tconst symbol = `(?:${[blackFlag, nonAstralCombo, combo, regional, surrogatePair, astral].join('|')})`;\r\n\r\n\t// Match string symbols (https://mathiasbynens.be/notes/javascript-unicode)\r\n\treturn new RegExp(`${fitz}(?=${fitz})|${telugu}|${symbol + seq}`, 'g');\r\n}\r\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the <li> container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"<li>No Match Found!</li>\";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '<span class=\"tribute-mention\">' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"</span>\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"<span>\",\n post: this.current.collection.searchOpts.post || \"</span>\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./referencePickerModal-CGtNx7ew.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./referencePickerModal-CGtNx7ew.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nwindow._vue_richtext_widgets ??= {};\nwindow._registerWidget ??= (id, callback, onDestroy, props) => {\n registerWidget(id, callback, onDestroy, props);\n};\nfunction registerWidget(id, callback, onDestroy = () => {\n}, props) {\n const propsWithDefaults = {\n hasInteractiveView: true,\n fullWidth: false,\n ...props\n };\n if (window._vue_richtext_widgets[id]) {\n logger.error(`[ReferencePicker]: Widget for id ${id} already registered`);\n return;\n }\n window._vue_richtext_widgets[id] = {\n id,\n callback,\n onDestroy,\n ...propsWithDefaults\n };\n}\nfunction renderWidget(el, options) {\n const { richObjectType, richObject, accessible, interactive } = options;\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n logger.error(\"Widget for rich object type \" + richObjectType + \" not registered\");\n return;\n }\n window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive });\n}\nfunction destroyWidget(richObjectType, el) {\n if (richObjectType === \"open-graph\") {\n return;\n }\n if (!window._vue_richtext_widgets[richObjectType]) {\n return;\n }\n window._vue_richtext_widgets[richObjectType].onDestroy(el);\n}\nfunction isWidgetRegistered(id) {\n return !!window._vue_richtext_widgets[id];\n}\nfunction hasInteractiveView(id) {\n return !!window._vue_richtext_widgets[id]?.hasInteractiveView;\n}\nfunction hasFullWidth(id) {\n return !!window._vue_richtext_widgets[id]?.fullWidth;\n}\nwindow._vue_richtext_custom_picker_elements ??= {};\nwindow._registerCustomPickerElement ??= registerCustomPickerElement;\nclass NcCustomPickerRenderResult {\n element;\n object;\n /**\n * @param element - The HTML element\n * @param object - The object\n */\n constructor(element, object) {\n this.element = element;\n this.object = object;\n }\n}\nfunction isCustomPickerElementRegistered(id) {\n return !!window._vue_richtext_custom_picker_elements[id];\n}\nfunction getCustomPickerElementSize(id) {\n const size = window._vue_richtext_custom_picker_elements[id]?.size;\n if ([\"small\", \"normal\", \"large\", \"full\"].includes(size)) {\n return size;\n }\n return null;\n}\nfunction registerCustomPickerElement(id, callback, onDestroy = () => {\n}, size = \"large\") {\n if (window._vue_richtext_custom_picker_elements[id]) {\n logger.error(`Custom reference picker element for id ${id} already registered`);\n return;\n }\n window._vue_richtext_custom_picker_elements[id] = {\n id,\n callback,\n onDestroy,\n size\n };\n}\nfunction renderCustomPickerElement(el, options) {\n const { providerId, accessible } = options;\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n logger.error(`Custom reference picker element for reference provider ID ${providerId} not registered`);\n return;\n }\n return window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible });\n}\nfunction destroyCustomPickerElement(providerId, el, renderResult) {\n if (!window._vue_richtext_custom_picker_elements[providerId]) {\n return;\n }\n window._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult);\n}\nexport {\n NcCustomPickerRenderResult as N,\n renderWidget as a,\n destroyCustomPickerElement as b,\n isCustomPickerElementRegistered as c,\n destroyWidget as d,\n registerCustomPickerElement as e,\n renderCustomPickerElement as f,\n getCustomPickerElementSize as g,\n hasInteractiveView as h,\n isWidgetRegistered as i,\n hasFullWidth as j,\n registerWidget as r\n};\n//# sourceMappingURL=customPickerElements-DLFtgReB.mjs.map\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","import '../assets/referencePickerModal-CGtNx7ew.css';\nimport Vue, { ref, nextTick } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { A as ArrowLeft } from \"./ArrowLeft-DuT2LZOm.mjs\";\nimport { C as Close } from \"./Close-BtLPUSdO.mjs\";\nimport { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, j as hasFullWidth, f as renderCustomPickerElement, b as destroyCustomPickerElement, c as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from \"./customPickerElements-DLFtgReB.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { imagePath, generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, T as t23, a as t, U as t8, V as t47, W as t41, X as t24, v as t43, Y as t32, m as t18, Z as t12 } from \"./_l10n-BmKQgz1z.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEmptyContent from \"../Components/NcEmptyContent.mjs\";\nimport { N as NcHighlight } from \"./index-CxTT94_h.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DTniMiUS.mjs\";\nimport { useElementSize, useIntersectionObserver } from \"@vueuse/core\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcButton } from \"./NcButton-DUZTtFhr.mjs\";\nimport { g as getRoute } from \"./autolink-D2pIbi92.mjs\";\nimport NcLoadingIcon from \"../Components/NcLoadingIcon.mjs\";\nimport { N as NcTextField } from \"./NcTextField-CfZknuqx.mjs\";\nimport { D as DotsHorizontalIcon } from \"./NcActions-CpdT2y6O.mjs\";\nimport NcModal from \"../Components/NcModal.mjs\";\nregister(t23);\nconst IDLE_TIMEOUT = 3 * 60 * 1e3;\nconst _sfc_main$8 = {\n name: \"NcReferenceWidget\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n reference: {\n type: Object,\n required: true\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isVisible = ref(false);\n const widgetRoot = ref();\n const { width } = useElementSize(widgetRoot);\n useIntersectionObserver(widgetRoot, ([entry]) => {\n nextTick(() => {\n isVisible.value = entry.isIntersecting;\n });\n });\n return {\n width,\n isVisible,\n widgetRoot\n };\n },\n data() {\n return {\n showInteractive: false,\n rendered: false,\n idleTimeout: null\n };\n },\n computed: {\n isInteractive() {\n return !this.interactiveOptIn && this.interactive || this.showInteractive;\n },\n hasFullWidth() {\n return hasFullWidth(this.reference.richObjectType);\n },\n hasCustomWidget() {\n return isWidgetRegistered(this.reference.richObjectType);\n },\n hasInteractiveView() {\n return isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType);\n },\n noAccess() {\n return this.reference && !this.reference.accessible;\n },\n descriptionStyle() {\n if (this.numberOfLines === 0) {\n return {\n display: \"none\"\n };\n }\n const lineClamp = this.numberOfLines;\n return {\n lineClamp,\n webkitLineClamp: lineClamp\n };\n },\n numberOfLines() {\n const lineCountOffsets = [450, 550, 650, Infinity];\n return lineCountOffsets.findIndex((max) => this.width < max);\n },\n compactLink() {\n const link = this.reference.openGraphObject.link;\n if (!link) {\n return \"\";\n }\n if (link.startsWith(\"https://\")) {\n return link.substring(8);\n }\n if (link.startsWith(\"http://\")) {\n return link.substring(7);\n }\n return link;\n },\n route() {\n return getRoute(this.$router, this.reference.openGraphObject.link);\n },\n referenceWidgetLinkComponent() {\n return this.route ? RouterLink : \"a\";\n },\n referenceWidgetLinkProps() {\n return this.route ? { to: this.route } : { href: this.reference.openGraphObject.link, target: \"_blank\" };\n }\n },\n watch: {\n isVisible: {\n handler(val) {\n if (!val) {\n this.idleTimeout = setTimeout(() => {\n if (!this.isVisible) {\n this.destroyWidget();\n }\n }, IDLE_TIMEOUT);\n return;\n }\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n if (!this.rendered) {\n this.renderWidget();\n }\n },\n immediate: true\n }\n },\n beforeDestroy() {\n this.destroyWidget();\n },\n methods: {\n t,\n enableInteractive() {\n this.showInteractive = true;\n this.renderWidget();\n },\n renderWidget() {\n if (!this.$refs.customWidget) {\n return;\n }\n if (this?.reference?.richObjectType === \"open-graph\") {\n return;\n }\n this.$refs.customWidget.innerHTML = \"\";\n const widget = document.createElement(\"div\");\n widget.style = \"width: 100%;\";\n this.$refs.customWidget.appendChild(widget);\n this.$nextTick(() => {\n renderWidget(widget, {\n ...this.reference,\n interactive: this.isInteractive\n });\n this.rendered = true;\n });\n },\n destroyWidget() {\n if (this.rendered) {\n destroyWidget(this.reference.richObjectType, this.$el);\n this.rendered = false;\n }\n }\n }\n};\nvar _sfc_render$8 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"widgetRoot\", class: { \"toggle-interactive\": _vm.hasInteractiveView && !_vm.isInteractive } }, [_vm.reference && _vm.hasCustomWidget ? _c(\"div\", { ref: \"customWidget\", staticClass: \"widget-custom\", class: { \"full-width\": _vm.hasFullWidth } }) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c(_vm.referenceWidgetLinkComponent, _vm._b({ tag: \"component\", staticClass: \"widget-default\", attrs: { \"rel\": \"noopener noreferrer\" } }, \"component\", _vm.referenceWidgetLinkProps, false), [_vm.reference.openGraphObject.thumb ? _c(\"img\", { staticClass: \"widget-default--image\", attrs: { \"src\": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c(\"div\", { staticClass: \"widget-default--details\" }, [_c(\"p\", { staticClass: \"widget-default--name\" }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.name) + \" \")]), _c(\"p\", { staticClass: \"widget-default--description\", style: _vm.descriptionStyle }, [_vm._v(\" \" + _vm._s(_vm.reference.openGraphObject.description) + \" \")]), _c(\"p\", { staticClass: \"widget-default--link\" }, [_vm._v(\" \" + _vm._s(_vm.compactLink) + \" \")])])]) : _vm._e(), _vm.interactiveOptIn && _vm.hasInteractiveView && !_vm.isInteractive ? _c(\"NcButton\", { staticClass: \"toggle-interactive--button\", on: { \"click\": _vm.enableInteractive } }, [_vm._v(\" \" + _vm._s(_vm.t(\"Enable interactive view\")) + \" \")]) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$8 = [];\nvar __component__$8 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$8,\n _sfc_render$8,\n _sfc_staticRenderFns$8,\n false,\n null,\n \"f05dd81b\"\n);\nconst NcReferenceWidget = __component__$8.exports;\nconst _sfc_main$7 = {\n name: \"NcCustomPickerElement\",\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n isRegistered: isCustomPickerElementRegistered(this.provider.id),\n renderResult: null\n };\n },\n mounted() {\n if (this.isRegistered) {\n this.renderElement();\n }\n },\n beforeDestroy() {\n if (this.isRegistered) {\n destroyCustomPickerElement(this.provider.id, this.$el, this.renderResult);\n }\n },\n methods: {\n renderElement() {\n if (this.$refs.domElement) {\n this.$refs.domElement.innerHTML = \"\";\n }\n const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });\n Promise.resolve(renderFunctionResult).then((result) => {\n this.renderResult = result;\n if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n this.renderResult.object.$on(\"submit\", this.onSubmit);\n this.renderResult.object.$on(\"cancel\", this.onCancel);\n }\n this.renderResult.element.addEventListener(\"submit\", (e) => {\n this.onSubmit(e.detail);\n });\n this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n });\n },\n onSubmit(value) {\n this.$emit(\"submit\", value);\n },\n onCancel() {\n this.$emit(\"cancel\");\n }\n }\n};\nvar _sfc_render$7 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { ref: \"domElement\" });\n};\nvar _sfc_staticRenderFns$7 = [];\nvar __component__$7 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$7,\n _sfc_render$7,\n _sfc_staticRenderFns$7,\n false,\n null,\n \"0547d92f\"\n);\nconst NcCustomPickerElement = __component__$7.exports;\nconst _sfc_main$6 = {\n name: \"LinkVariantIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$6 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$6 = [];\nvar __component__$6 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$6,\n _sfc_render$6,\n _sfc_staticRenderFns$6,\n false,\n null,\n null\n);\nconst LinkVariantIcon = __component__$6.exports;\nregister(t8);\nconst anyLinkProviderId = \"any-link\";\nconst anyLinkProvider = {\n id: anyLinkProviderId,\n title: t(\"Any link\"),\n order: 0,\n icon_url: imagePath(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers ??= loadState(\"core\", \"reference-provider-list\", []);\nwindow._vue_richtext_reference_provider_timestamps ??= loadState(\"core\", \"reference-provider-timestamps\", {});\nfunction getProvider(providerId) {\n if (providerId === anyLinkProviderId) {\n return anyLinkProvider;\n }\n return getProviders().find((p) => p.id === providerId);\n}\nfunction getProviders() {\n return window._vue_richtext_reference_providers.filter((p) => {\n const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);\n if (!keep) {\n logger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`);\n }\n return keep;\n });\n}\nfunction sortProviders(providerList) {\n const timestamps = window._vue_richtext_reference_provider_timestamps;\n return providerList.sort((a, b) => {\n return a.order === b.order ? 0 : a.order > b.order ? 1 : -1;\n }).sort((a, b) => {\n const ta = timestamps[a.id];\n const tb = timestamps[b.id];\n return ta === tb ? 0 : tb === void 0 ? -1 : ta === void 0 ? 1 : ta > tb ? -1 : 1;\n });\n}\nfunction searchProvider(query, limit) {\n const providers = getProviders();\n const escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n const regexp = new RegExp(escapedQuery, \"i\");\n const sortedProviders = sortProviders(providers);\n const filteredSortedProviders = sortedProviders.filter((p) => {\n return p.title.match(regexp);\n });\n const searchResult = limit ? filteredSortedProviders.slice(0, limit) : filteredSortedProviders;\n if (query === \"\" || searchResult.length === 0) {\n searchResult.push(anyLinkProvider);\n }\n return searchResult;\n}\nasync function touchProvider(providerId) {\n const timestamp = Math.floor(Date.now() / 1e3);\n const url = generateOcsUrl(\"references/provider/{providerId}\", { providerId });\n await axios.put(url, { timestamp });\n window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;\n}\nregister(t41, t47);\nlet mytimer = 0;\nfunction delay(callback, ms) {\n return function() {\n const context = this;\n const args = arguments;\n clearTimeout(mytimer);\n mytimer = setTimeout(function() {\n callback.apply(context, args);\n }, ms);\n };\n}\nfunction isUrl(str) {\n try {\n return Boolean(new URL(str));\n } catch {\n return false;\n }\n}\nconst _sfc_main$5 = {\n name: \"NcProviderList\",\n components: {\n NcSelect,\n NcHighlight,\n NcEmptyContent,\n LinkVariantIcon\n },\n emits: [\n \"select-provider\",\n \"submit\"\n ],\n data() {\n return {\n selectedProvider: null,\n query: \"\",\n multiselectPlaceholder: t(\"Select provider\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n options() {\n const result = [];\n if (this.query !== \"\" && isUrl(this.query)) {\n result.push({\n id: this.query,\n title: this.query,\n isLink: true\n });\n }\n result.push(...searchProvider(this.query));\n return result;\n }\n },\n methods: {\n focus() {\n setTimeout(() => {\n this.$refs[\"provider-select\"]?.$el?.querySelector(\"#provider-select-input\")?.focus();\n }, 300);\n },\n onProviderSelected(p) {\n if (p !== null) {\n if (p.isLink) {\n this.$emit(\"submit\", p.title);\n } else {\n this.$emit(\"select-provider\", p);\n }\n this.selectedProvider = null;\n }\n },\n onSearch(query) {\n this.query = query;\n }\n }\n};\nvar _sfc_render$5 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"provider-list\" }, [_c(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", \"label\": \"title\", \"placeholder\": _vm.multiselectPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"clear-search-on-select\": true, \"clear-search-on-blur\": () => false, \"filterable\": false }, on: { \"search\": _vm.onSearch, \"input\": _vm.onProviderSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isLink ? _c(\"div\", { staticClass: \"provider\" }, [_c(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { \"size\": 20 } }), _c(\"span\", [_vm._v(_vm._s(option.title))])], 1) : _c(\"div\", { staticClass: \"provider\" }, [_c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": option.icon_url, \"alt\": _vm.providerIconAlt } }), _c(\"NcHighlight\", { staticClass: \"option-text\", attrs: { \"search\": _vm.query, \"text\": option.title } })], 1)];\n } }]), model: { value: _vm.selectedProvider, callback: function($$v) {\n _vm.selectedProvider = $$v;\n }, expression: \"selectedProvider\" } }), _c(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$5 = [];\nvar __component__$5 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$5,\n _sfc_render$5,\n _sfc_staticRenderFns$5,\n false,\n null,\n \"f39d58d9\"\n);\nconst NcProviderList = __component__$5.exports;\nregister(t24);\nconst _sfc_main$4 = {\n name: \"NcRawLinkInput\",\n components: {\n LinkVariantIcon,\n NcEmptyContent,\n NcLoadingIcon,\n NcReferenceWidget,\n NcTextField\n },\n props: {\n /**\n * The reference provider\n */\n provider: {\n type: Object,\n required: true\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n inputValue: \"\",\n loading: false,\n reference: null,\n abortController: null,\n inputPlaceholder: t(\"Enter link\")\n };\n },\n computed: {\n isLinkValid() {\n return isUrl(this.inputValue);\n }\n },\n methods: {\n focus() {\n this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]?.focus();\n },\n onSubmit(e) {\n const value = e.target.value;\n if (this.isLinkValid) {\n this.$emit(\"submit\", value);\n }\n },\n onClear() {\n this.inputValue = \"\";\n this.reference = null;\n },\n onInput() {\n this.reference = null;\n if (this.abortController) {\n this.abortController.abort();\n }\n if (this.isLinkValid) {\n delay(() => {\n this.updateReference();\n }, 500)();\n }\n },\n updateReference() {\n this.loading = true;\n this.abortController = new AbortController();\n axios.get(generateOcsUrl(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n signal: this.abortController.signal\n }).then((response) => {\n this.reference = response.data.ocs.data.references[this.inputValue];\n }).catch((error) => {\n logger.error(\"Could not update reference\", { error });\n }).then(() => {\n this.loading = false;\n });\n }\n }\n};\nvar _sfc_render$4 = function render5() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"raw-link\" }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"NcTextField\", { ref: \"url-input\", attrs: { \"value\": _vm.inputValue, \"show-trailing-button\": _vm.inputValue !== \"\", \"label\": _vm.inputPlaceholder }, on: { \"update:value\": [function($event) {\n _vm.inputValue = $event;\n }, _vm.onInput], \"trailing-button-click\": _vm.onClear }, nativeOn: { \"keyup\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_vm.loading ? _c(\"NcLoadingIcon\", { attrs: { \"size\": 16 } }) : _c(\"LinkVariantIcon\", { attrs: { \"size\": 16 } })], 1)], 1), _vm.reference !== null ? _c(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { \"reference\": _vm.reference } }) : _c(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }]) })], 1);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n \"be630586\"\n);\nconst NcRawLinkInput = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"NcSearchResult\",\n components: {\n NcHighlight\n },\n props: {\n /**\n * Unified search result entry\n */\n entry: {\n type: Object,\n required: true\n },\n /**\n * The query that led to getting this result\n * Used to highlight the entry text\n */\n query: {\n type: String,\n required: true\n }\n }\n};\nvar _sfc_render$3 = function render6() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"result\" }, [_vm.entry.icon ? _c(\"div\", { staticClass: \"result--icon-class\", class: { [_vm.entry.icon]: true, rounded: _vm.entry.rounded } }) : _c(\"img\", { staticClass: \"result--image\", class: { rounded: _vm.entry.rounded }, attrs: { \"src\": _vm.entry.thumbnailUrl } }), _c(\"div\", { staticClass: \"result--content\" }, [_c(\"span\", { staticClass: \"result--content--name\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.title } })], 1), _c(\"span\", { staticClass: \"result--content--subline\" }, [_c(\"NcHighlight\", { attrs: { \"search\": _vm.query, \"text\": _vm.entry.subline } })], 1)])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n \"995c2758\"\n);\nconst NcSearchResult = __component__$3.exports;\nregister(t32, t41, t43);\nconst LIMIT = 5;\nconst _sfc_main$2 = {\n name: \"NcSearch\",\n components: {\n LinkVariantIcon,\n DotsHorizontalIcon,\n NcEmptyContent,\n NcSelect,\n NcSearchResult\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The selected reference provider\n */\n provider: {\n type: Object,\n required: true\n },\n showEmptyContent: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Placeholder of the search\n */\n searchPlaceholder: {\n type: String,\n default: null\n }\n },\n emits: [\n \"submit\"\n ],\n data() {\n return {\n searchQuery: \"\",\n selectedResult: null,\n resultsBySearchProvider: {},\n searching: false,\n searchingMoreOf: null,\n abortController: null,\n noOptionsText: t(\"Start typing to search\"),\n providerIconAlt: t(\"Provider icon\")\n };\n },\n computed: {\n mySearchPlaceholder() {\n return this.searchPlaceholder || t(\"Search\");\n },\n searchProviderIds() {\n return this.provider.search_providers_ids;\n },\n options() {\n if (this.searchQuery === \"\") {\n return [];\n }\n const options = [];\n if (isUrl(this.searchQuery)) {\n options.push(this.rawLinkEntry);\n }\n options.push(...this.formattedSearchResults);\n return options;\n },\n rawLinkEntry() {\n return {\n id: \"rawLinkEntry\",\n resourceUrl: this.searchQuery,\n isRawLink: true\n };\n },\n formattedSearchResults() {\n const results = [];\n this.searchProviderIds.forEach((pid) => {\n if (this.resultsBySearchProvider[pid].entries.length > 0) {\n if (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n results.push({\n id: \"groupTitle-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isCustomGroupTitle: true,\n providerId: pid\n });\n }\n const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n return {\n id: \"provider-\" + pid + \"-entry-\" + index,\n ...entry\n };\n });\n results.push(...providerEntriesWithId);\n if (this.resultsBySearchProvider[pid].isPaginated) {\n results.push({\n id: \"moreOf-\" + pid,\n name: this.resultsBySearchProvider[pid].name,\n isMore: true,\n providerId: pid,\n isLoading: this.searchingMoreOf === pid\n });\n }\n }\n });\n return results;\n }\n },\n mounted() {\n this.resetResults();\n },\n beforeDestroy() {\n this.cancelSearchRequests();\n },\n methods: {\n t,\n resetResults() {\n const resultsBySearchProvider = {};\n this.searchProviderIds.forEach((pid) => {\n resultsBySearchProvider[pid] = {\n entries: []\n };\n });\n this.resultsBySearchProvider = resultsBySearchProvider;\n },\n focus() {\n setTimeout(() => {\n this.$refs[\"search-select\"]?.$el?.querySelector(\"#search-select-input\")?.focus();\n }, 300);\n },\n cancelSearchRequests() {\n if (this.abortController) {\n this.abortController.abort();\n }\n },\n onSearchInput(query) {\n this.searchQuery = query;\n delay(() => {\n this.updateSearch();\n }, 500)();\n },\n onSelectResultSelected(item) {\n if (item !== null) {\n if (item.resourceUrl) {\n this.cancelSearchRequests();\n this.$emit(\"submit\", item.resourceUrl);\n } else if (item.isMore) {\n this.searchMoreOf(item.providerId).then(() => {\n this.selectedResult = null;\n });\n }\n }\n },\n searchMoreOf(searchProviderId) {\n this.searchingMoreOf = searchProviderId;\n this.cancelSearchRequests();\n return this.searchProviders(searchProviderId);\n },\n updateSearch() {\n this.cancelSearchRequests();\n this.resetResults();\n if (this.searchQuery === \"\") {\n this.searching = false;\n return;\n }\n return this.searchProviders();\n },\n searchProviders(searchProviderId = null) {\n this.abortController = new AbortController();\n this.searching = true;\n const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {\n return this.searchOneProvider(pid);\n }) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];\n return Promise.allSettled(searchPromises).then((promises) => {\n const isOneCanceled = !!promises.find((p) => {\n return p.status === \"rejected\" && (p.reason.name === \"CanceledError\" || p.reason.code === \"ERR_CANCELED\");\n });\n if (!isOneCanceled) {\n this.searching = false;\n this.searchingMoreOf = null;\n }\n });\n },\n searchOneProvider(providerId, cursor = null) {\n const url = cursor === null ? generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId, term: this.searchQuery, limit: LIMIT }) : generateOcsUrl(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId, term: this.searchQuery, limit: LIMIT, cursor });\n return axios.get(url, {\n signal: this.abortController.signal\n }).then((response) => {\n const data = response.data.ocs.data;\n this.resultsBySearchProvider[providerId].name = data.name;\n this.resultsBySearchProvider[providerId].cursor = data.cursor;\n this.resultsBySearchProvider[providerId].isPaginated = data.isPaginated;\n this.resultsBySearchProvider[providerId].entries.push(...data.entries);\n });\n }\n }\n};\nvar _sfc_render$2 = function render7() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": _vm.showEmptyContent } }, [_c(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", \"label\": \"name\", \"placeholder\": _vm.mySearchPlaceholder, \"options\": _vm.options, \"append-to-body\": false, \"close-on-select\": false, \"clear-search-on-select\": false, \"clear-search-on-blur\": () => false, \"reset-focus-on-options-change\": false, \"filterable\": false, \"autoscroll\": true, \"reset-on-options-change\": false, \"loading\": _vm.searching }, on: { \"search\": _vm.onSearchInput, \"input\": _vm.onSelectResultSelected }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [option.isRawLink ? _c(\"div\", { staticClass: \"custom-option\" }, [_c(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t(\"Raw link {options}\", { options: option.resourceUrl })) + \" \")])], 1) : option.resourceUrl ? _c(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { \"entry\": option, \"query\": _vm.searchQuery } }) : option.isCustomGroupTitle ? _c(\"span\", { staticClass: \"custom-option group-name\" }, [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { \"src\": _vm.provider.icon_url } }) : _vm._e(), _c(\"span\", { staticClass: \"option-text\" }, [_c(\"strong\", [_vm._v(_vm._s(option.name))])])]) : option.isMore ? _c(\"span\", { staticClass: \"custom-option\" }, [option.isLoading ? _c(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : _c(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { \"size\": 20 } }), _c(\"span\", { staticClass: \"option-text\" }, [_vm._v(\" \" + _vm._s(_vm.t('Load more \"{options}\"', { options: option.name })) + \" \")])], 1) : _vm._e()];\n } }, { key: \"no-options\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.noOptionsText) + \" \")];\n }, proxy: true }]), model: { value: _vm.selectedResult, callback: function($$v) {\n _vm.selectedResult = $$v;\n }, expression: \"selectedResult\" } }), _vm.showEmptyContent ? _c(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_vm.provider.icon_url ? _c(\"img\", { staticClass: \"provider-icon\", attrs: { \"alt\": _vm.providerIconAlt, \"src\": _vm.provider.icon_url } }) : _c(\"LinkVariantIcon\")];\n }, proxy: true }], null, false, 2922132592) }) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n \"e61f71e3\"\n);\nconst NcSearch = __component__$2.exports;\nconst MODES = {\n providerList: 1,\n standardLinkInput: 2,\n searchInput: 3,\n customElement: 4\n};\nconst _sfc_main$1 = {\n name: \"NcReferencePicker\",\n components: {\n NcCustomPickerElement,\n NcProviderList,\n NcRawLinkInput,\n NcSearch\n },\n props: {\n /**\n * Provider to select on creation\n * Default: null. Show the provider list\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Optional width in pixels\n * Default: 100%\n */\n width: {\n type: Number,\n default: null\n },\n /**\n * Focus on the provider list select input on creation\n * Default: true\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"cancel\",\n \"cancel-raw-link\",\n \"cancel-search\",\n \"provider-selected\",\n \"submit\"\n ],\n data() {\n return {\n MODES,\n selectedProvider: this.initialProvider\n };\n },\n computed: {\n mode() {\n return this.selectedProvider === null ? MODES.providerList : isCustomPickerElementRegistered(this.selectedProvider.id) ? MODES.customElement : this.selectedProvider.search_providers_ids ? MODES.searchInput : MODES.standardLinkInput;\n },\n pickerWrapperStyle() {\n return {\n width: this.width ? this.width + \"px\" : void 0\n };\n }\n },\n mounted() {\n if (this.focusOnCreate) {\n if (this.initialProvider) {\n setTimeout(() => {\n this.$refs[\"url-input\"]?.focus();\n }, 300);\n } else {\n this.$nextTick(() => {\n this.$refs[\"provider-list\"]?.focus();\n });\n }\n }\n },\n methods: {\n onEscapePressed() {\n if (this.selectedProvider !== null) {\n this.deselectProvider();\n } else {\n this.cancelProviderSelection();\n }\n },\n onProviderSelected(provider) {\n this.selectedProvider = provider;\n this.$emit(\"provider-selected\", provider);\n this.$nextTick(() => {\n this.$refs[\"url-input\"]?.focus();\n });\n },\n cancelCustomElement() {\n this.deselectProvider();\n },\n cancelSearch() {\n this.$emit(\"cancel-search\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelRawLinkInput() {\n this.$emit(\"cancel-raw-link\", this.selectedProvider?.title);\n this.deselectProvider();\n },\n cancelProviderSelection() {\n this.$emit(\"cancel\");\n },\n submitLink(link) {\n if (this.selectedProvider !== null) {\n touchProvider(this.selectedProvider.id);\n }\n this.$emit(\"submit\", link);\n this.deselectProvider();\n },\n deselectProvider() {\n this.selectedProvider = null;\n this.$emit(\"provider-selected\", null);\n setTimeout(() => {\n this.$refs[\"provider-list\"]?.focus();\n }, 300);\n }\n }\n};\nvar _sfc_render$1 = function render8() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"reference-picker\", style: _vm.pickerWrapperStyle, attrs: { \"tabindex\": \"-1\" }, on: { \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onEscapePressed.apply(null, arguments);\n } } }, [_vm.mode === _vm.MODES.providerList ? _c(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": _vm.onProviderSelected, \"submit\": _vm.submitLink, \"cancel\": _vm.cancelProviderSelection } }) : _vm.mode === _vm.MODES.standardLinkInput ? _c(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelRawLinkInput } }) : _vm.mode === _vm.MODES.searchInput ? _c(\"NcSearch\", { ref: \"url-input\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"cancel\": _vm.cancelSearch, \"submit\": _vm.submitLink } }) : _vm.mode === _vm.MODES.customElement ? _c(\"div\", { staticClass: \"custom-element-wrapper\" }, [_c(\"NcCustomPickerElement\", { staticClass: \"custom-element\", attrs: { \"provider\": _vm.selectedProvider }, on: { \"submit\": _vm.submitLink, \"cancel\": _vm.cancelCustomElement } })], 1) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"646d5538\"\n);\nconst NcReferencePicker = __component__$1.exports;\nregister(t12, t18);\nconst _sfc_main = {\n name: \"NcReferencePickerModal\",\n components: {\n NcReferencePicker,\n NcModal,\n NcButton,\n ArrowLeftIcon: ArrowLeft,\n CloseIcon: Close\n },\n props: {\n /**\n * Provider to select on creation\n * Show the provider list if no initial one is provided\n */\n initialProvider: {\n type: Object,\n default: () => null\n },\n /**\n * Focus on the input item on create\n */\n focusOnCreate: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * If true, add the modal content to the Viewer trap elements via the event-bus\n */\n isInsideViewer: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"cancel\",\n \"submit\"\n ],\n data() {\n return {\n show: true,\n selectedProvider: this.initialProvider,\n backButtonTitle: t(\"Back to provider selection\"),\n closeButtonTitle: t(\"Close\"),\n closeButtonLabel: t(\"Close Smart Picker\")\n };\n },\n computed: {\n isProviderSelected() {\n return this.selectedProvider !== null;\n },\n showBackButton() {\n return this.initialProvider === null && this.isProviderSelected;\n },\n modalSize() {\n return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? \"large\" : \"normal\";\n },\n showModalName() {\n return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);\n },\n modalName() {\n return this.isProviderSelected ? this.selectedProvider.title : t(\"Smart Picker\");\n }\n },\n mounted() {\n if (this.isInsideViewer) {\n const elem = this.$refs.modal_content;\n emit(\"viewer:trapElements:changed\", elem);\n }\n },\n methods: {\n onCancel() {\n this.show = false;\n this.$emit(\"cancel\");\n },\n onSubmit(value) {\n this.show = false;\n this.$emit(\"submit\", value);\n },\n onProviderSelect(provider) {\n this.selectedProvider = provider;\n if (provider === null && this.initialProvider !== null) {\n this.onCancel();\n }\n },\n onBackClicked() {\n this.$refs.referencePicker.deselectProvider();\n }\n }\n};\nvar _sfc_render = function render9() {\n var _vm = this, _c = _vm._self._c;\n return _vm.show ? _c(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { \"size\": _vm.modalSize, \"can-close\": true }, on: { \"close\": _vm.onCancel } }, [_c(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [_vm.showBackButton ? _c(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": _vm.backButtonTitle, \"title\": _vm.backButtonTitle }, on: { \"click\": _vm.onBackClicked }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"ArrowLeftIcon\")];\n }, proxy: true }], null, false, 3001860362) }) : _vm._e(), _c(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": _vm.closeButtonLabel, \"title\": _vm.closeButtonTitle, \"variant\": \"tertiary\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"CloseIcon\")];\n }, proxy: true }], null, false, 2491825086) }), _vm.showModalName ? _c(\"h2\", [_vm._v(\" \" + _vm._s(_vm.modalName) + \" \")]) : _vm._e(), _c(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": _vm.initialProvider, \"focus-on-create\": _vm.focusOnCreate }, on: { \"provider-selected\": _vm.onProviderSelect, \"submit\": _vm.onSubmit, \"cancel\": _vm.onCancel } })], 1)]) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"00990f2a\"\n);\nconst NcReferencePickerModal = __component__.exports;\nasync function getLinkWithPicker(providerId, isInsideViewer) {\n const modalId = \"referencePickerModal\";\n const modalElement = document.createElement(\"div\");\n modalElement.id = modalId;\n document.body.append(modalElement);\n const { promise, reject, resolve } = Promise.withResolvers();\n const initialProvider = providerId && getProvider(providerId) || null;\n const View = Vue.extend(NcReferencePickerModal);\n const view = new View({\n propsData: {\n initialProvider,\n isInsideViewer\n }\n }).$mount(modalElement);\n view.$on(\"cancel\", () => {\n view.$destroy();\n reject(new Error(\"User cancellation\"));\n });\n view.$on(\"submit\", (link) => {\n view.$destroy();\n resolve(link);\n });\n return promise;\n}\nexport {\n NcReferencePicker as N,\n anyLinkProviderId as a,\n getProvider as b,\n getProviders as c,\n sortProviders as d,\n NcReferencePickerModal as e,\n NcReferenceWidget as f,\n getLinkWithPicker as g,\n NcSearch as h,\n searchProvider as s\n};\n//# sourceMappingURL=referencePickerModal-CHpUHrDL.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcRichText-Cr-HXxVi.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcRichText-Cr-HXxVi.css\";\n export default content && content.locals ? content.locals : undefined;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type)\n return as([type, [...value]], value);\n \n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\n\n// Windows paths like `c:\\`\nconst WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\\\/;\n\nexport default function isAbsoluteUrl(url) {\n\tif (typeof url !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof url}\\``);\n\t}\n\n\tif (WINDOWS_PATH_REGEX.test(url)) {\n\t\treturn false;\n\t}\n\n\treturn ABSOLUTE_URL_REGEX.test(url);\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @callback CreateContent\n * Create a target for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<ElementContent> | ElementContent | null | undefined}\n * Content to add.\n *\n * @callback CreateProperties\n * Create properties for an element.\n * @param {Element} element\n * Element to check.\n * @returns {Properties | null | undefined}\n * Properties to add.\n *\n * @callback CreateRel\n * Create a `rel` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Array<string> | string | null | undefined}\n * `rel` to use.\n *\n * @callback CreateTarget\n * Create a `target` for the element.\n * @param {Element} element\n * Element to check.\n * @returns {Target | null | undefined}\n * `target` to use.\n *\n * @typedef Options\n * Configuration.\n * @property {Array<ElementContent> | CreateContent | ElementContent | null | undefined} [content]\n * Content to insert at the end of external links (optional); will be\n * inserted in a `<span>` element; useful for improving accessibility by\n * giving users advanced warning when opening a new window.\n * @property {CreateProperties | Properties | null | undefined} [contentProperties]\n * Properties to add to the `span` wrapping `content` (optional).\n * @property {CreateProperties | Properties | null | undefined} [properties]\n * Properties to add to the link itself (optional).\n * @property {Array<string> | null | undefined} [protocols=['http', 'https']]\n * Protocols to check, such as `mailto` or `tel` (default: `['http',\n * 'https']`).\n * @property {Array<string> | CreateRel | string | null | undefined} [rel=['nofollow']]\n * Link types to hint about the referenced documents (default:\n * `['nofollow']`); pass an empty array (`[]`) to not set `rel`s on links;\n * when using a `target`, add `noopener` and `noreferrer` to avoid\n * exploitation of the `window.opener` API.\n * @property {CreateTarget | Target | null | undefined} [target]\n * How to display referenced documents; the default (nothing) is to not set\n * `target`s on links.\n * @property {Test | null | undefined} [test]\n * Extra test to define which external link elements are modified (optional);\n * any test that can be given to `hast-util-is-element` is supported.\n *\n * @typedef {'_blank' | '_parent' | '_self' | '_top'} Target\n * Target.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {convertElement} from 'hast-util-is-element'\nimport isAbsoluteUrl from 'is-absolute-url'\nimport {parse} from 'space-separated-tokens'\nimport {visit} from 'unist-util-visit'\n\nconst defaultProtocols = ['http', 'https']\nconst defaultRel = ['nofollow']\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Automatically add `rel` (and `target`?) to external links.\n *\n * ###### Notes\n *\n * You should [likely not configure `target`][css-tricks].\n *\n * You should at least set `rel` to `['nofollow']`.\n * When using a `target`, add `noopener` and `noreferrer` to avoid exploitation\n * of the `window.opener` API.\n *\n * When using a `target`, you should set `content` to adhere to accessibility\n * guidelines by giving users advanced warning when opening a new window.\n *\n * [css-tricks]: https://css-tricks.com/use-target_blank/\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeExternalLinks(options) {\n const settings = options || emptyOptions\n const protocols = settings.protocols || defaultProtocols\n const is = convertElement(settings.test)\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n visit(tree, 'element', function (node, index, parent) {\n if (\n node.tagName === 'a' &&\n typeof node.properties.href === 'string' &&\n is(node, index, parent)\n ) {\n const url = node.properties.href\n\n if (\n isAbsoluteUrl(url)\n ? protocols.includes(url.slice(0, url.indexOf(':')))\n : url.startsWith('//')\n ) {\n const contentRaw = createIfNeeded(settings.content, node)\n const content =\n contentRaw && !Array.isArray(contentRaw) ? [contentRaw] : contentRaw\n const relRaw = createIfNeeded(settings.rel, node) || defaultRel\n const rel = typeof relRaw === 'string' ? parse(relRaw) : relRaw\n const target = createIfNeeded(settings.target, node)\n\n const properties = createIfNeeded(settings.properties, node)\n\n if (properties) {\n Object.assign(node.properties, structuredClone(properties))\n }\n\n if (rel.length > 0) {\n node.properties.rel = [...rel]\n }\n\n if (target) {\n node.properties.target = target\n }\n\n if (content) {\n const properties =\n createIfNeeded(settings.contentProperties, node) || {}\n\n node.children.push({\n type: 'element',\n tagName: 'span',\n properties: structuredClone(properties),\n children: structuredClone(content)\n })\n }\n }\n }\n })\n }\n}\n\n/**\n * Call a function to get a return value or use the value.\n *\n * @template T\n * Type of value.\n * @param {T} value\n * Value.\n * @param {Element} element\n * Element.\n * @returns {T extends Function ? ReturnType<T> : T}\n * Result.\n */\nfunction createIfNeeded(value, element) {\n return typeof value === 'function' ? value(element) : value\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","import StyleToObject from './index.js';\n\nexport default StyleToObject;\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback CreateElementLike\n * Function that works somewhat like `React.createElement`.\n * @param {string} name\n * Element name.\n * @param {any} attributes\n * Properties.\n * @param {Array<any>} [children]\n * Children.\n * @returns {any}\n * Something.\n *\n * @typedef State\n * Info passed around.\n * @property {Schema} schema\n * Current schema.\n * @property {string | undefined} prefix\n * Prefix to use.\n * @property {number} key\n * Current key.\n * @property {boolean} react\n * Looks like React.\n * @property {boolean} vue\n * Looks like Vue.\n * @property {boolean} vdom\n * Looks like vdom.\n * @property {boolean} hyperscript\n * Looks like `hyperscript`.\n *\n * @typedef Options\n * Configuration.\n * @property {string | null | undefined} [prefix]\n * Prefix to use as a prefix for keys passed in `props` to `h()`, this\n * behavior is turned off by passing `false` and turned on by passing a\n * `string`.\n * By default, `h-` is used as a prefix if the given `h` is detected as being\n * `virtual-dom/h` or `React.createElement`\n * @property {'html' | 'svg' | null | undefined} [space]\n * Whether `node` is in the `'html'` or `'svg'` space.\n * If an `<svg>` element is found when inside the HTML space, `toH`\n * automatically switches to the SVG space when entering the element, and\n * switches back when exiting.\n */\n\nimport {html, svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport styleToObject from 'style-to-object'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Node} tree\n * Tree to transform.\n * @param {string | boolean | Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\n// eslint-disable-next-line complexity\nexport function toH(h, tree, options) {\n if (typeof h !== 'function') {\n throw new TypeError('h is not a function')\n }\n\n const r = react(h)\n const v = vue(h)\n const vd = vdom(h)\n /** @type {string|boolean|null|undefined} */\n let prefix\n /** @type {Element} */\n let node\n\n if (typeof options === 'string' || typeof options === 'boolean') {\n prefix = options\n options = {}\n } else {\n if (!options) options = {}\n prefix = options.prefix\n }\n\n if (tree && tree.type === 'root') {\n const head = tree.children[0]\n // @ts-expect-error Allow `doctypes` in there, we’ll filter them out later.\n node =\n tree.children.length === 1 && head.type === 'element'\n ? head\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: tree.children\n }\n } else if (tree && tree.type === 'element') {\n node = tree\n } else {\n throw new Error(\n 'Expected root or element, not `' + ((tree && tree.type) || tree) + '`'\n )\n }\n\n return transform(h, node, {\n schema: options.space === 'svg' ? svg : html,\n prefix:\n prefix === undefined || prefix === null\n ? r || v || vd\n ? 'h-'\n : undefined\n : typeof prefix === 'string'\n ? prefix\n : prefix\n ? 'h-'\n : undefined,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n })\n}\n\n/**\n * Transform a hast node through a hyperscript interface to *anything*!\n *\n * @template {CreateElementLike} H\n * Type of hyperscript function.\n * @param {H} h\n * HyperScript function.\n * @param {Element} node\n * Node to transform.\n * @param {State} state\n * Info passed around.\n * @returns {ReturnType<H>}\n * Return type of the hyperscript function.\n */\nfunction transform(h, node, state) {\n const parentSchema = state.schema\n let schema = parentSchema\n let name = node.tagName\n /** @type {Record<string, unknown>} */\n const attributes = {}\n /** @type {Array<ReturnType<H>|string>} */\n const nodes = []\n let index = -1\n /** @type {string} */\n let key\n\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg\n state.schema = schema\n }\n\n for (key in node.properties) {\n if (node.properties && own.call(node.properties, key)) {\n addAttribute(attributes, key, node.properties[key], state, name)\n }\n }\n\n if (state.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase()\n } else if (schema.space) {\n attributes.namespace = webNamespaces[schema.space]\n }\n }\n\n if (state.prefix) {\n state.key++\n attributes.key = state.prefix + state.key\n }\n\n if (node.children) {\n while (++index < node.children.length) {\n const value = node.children[index]\n\n if (value.type === 'element') {\n nodes.push(transform(h, value, state))\n } else if (value.type === 'text') {\n nodes.push(value.value)\n }\n }\n }\n\n // Restore parent schema.\n state.schema = parentSchema\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length > 0\n ? h.call(node, name, attributes, nodes)\n : h.call(node, name, attributes)\n}\n\n/**\n * Add an attribute to `props`.\n *\n * @param {Record<string, unknown>} props\n * Map.\n * @param {string} prop\n * Key.\n * @param {unknown} value\n * Value.\n * @param {State} state\n * Info passed around.\n * @param {string} name\n * Element name.\n * @returns {void}\n * Nothing.\n */\n// eslint-disable-next-line complexity, max-params\nfunction addAttribute(props, prop, value, state, name) {\n const info = find(state.schema, prop)\n /** @type {string | undefined} */\n let subprop\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (\n value === undefined ||\n value === null ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (value === false && (state.vue || state.vdom || state.hyperscript)) ||\n (!value && info.boolean && (state.vue || state.vdom || state.hyperscript))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && state.hyperscript) {\n value = ''\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (\n info.property === 'style' &&\n typeof value === 'string' &&\n (state.react || state.vue || state.vdom)\n ) {\n value = parseStyle(value, name)\n }\n\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 2 */\n if (state.vue) {\n if (info.property !== 'style') subprop = 'attrs'\n } else if (!info.mustUseProperty) {\n if (state.vdom) {\n if (info.property !== 'style') subprop = 'attributes'\n } else if (state.hyperscript) {\n subprop = 'attrs'\n }\n }\n\n if (subprop) {\n props[subprop] = Object.assign(props[subprop] || {}, {\n [info.attribute]: value\n })\n } else if (info.space && state.react) {\n props[hastToReact[info.property] || info.property] = value\n } else {\n props[info.attribute] = value\n }\n}\n\n/**\n * Check if `h` is `react.createElement`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like React.\n */\nfunction react(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n return Boolean(\n node &&\n // @ts-expect-error Looks like a React node.\n ('_owner' in node || '_store' in node) &&\n // @ts-expect-error Looks like a React node.\n (node.key === undefined || node.key === null)\n )\n}\n\n/**\n * Check if `h` is `hyperscript`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `hyperscript`.\n */\nfunction hyperscript(h) {\n return 'context' in h && 'cleanup' in h\n}\n\n/**\n * Check if `h` is `virtual-dom/h`.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like `virtual-dom`\n */\nfunction vdom(h) {\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a vnode.\n return node.type === 'VirtualNode'\n}\n\n/**\n * Check if `h` is Vue.\n *\n * @param {CreateElementLike} h\n * HyperScript function.\n * @returns {boolean}\n * Looks like Vue.\n */\nfunction vue(h) {\n // Vue 3 (used in our tests) doesn’t need this anymore.\n // Some major in the future we can drop Vue 2 support.\n /* c8 ignore next 3 */\n const node = /** @type {unknown} */ (h('div', {}))\n // @ts-expect-error Looks like a Vue node.\n return Boolean(node && node.context && node.context._isVue)\n}\n\n/**\n * Parse a declaration into an object.\n *\n * @param {string} value\n * CSS declarations.\n * @param {string} tagName\n * Tag name.\n * @returns {Record<string, string>}\n * Properties.\n */\nfunction parseStyle(value, tagName) {\n /** @type {Record<string, string>} */\n const result = {}\n\n try {\n styleToObject(value, (name, value) => {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n\n result[\n name.replace(\n /-([a-z])/g,\n /**\n * @param {string} _\n * @param {string} $1\n * @returns {string}\n */\n (_, $1) => $1.toUpperCase()\n )\n ] = value\n })\n } catch (error_) {\n const error = /** @type {Error} */ (error_)\n error.message =\n tagName + '[style]' + error.message.slice('undefined'.length)\n throw error\n }\n\n return result\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<unknown>} ReactElement\n *\n * @callback CreateElementLike\n * @param {any} name\n * @param {any} props\n * @param {...ReactNode} children\n * @returns {ReactNode}\n *\n * @typedef SharedOptions\n * Base configuration (without `components`).\n * @property {CreateElementLike} createElement\n * How to create elements or components.\n * You should typically pass `React.createElement`.\n * @property {((props: any) => ReactNode)|undefined} [Fragment]\n * Create fragments instead of an outer `<div>` if available.\n * You should typically pass `React.Fragment`.\n * @property {string|undefined} [prefix='h-']\n * React key prefix.\n * @property {boolean|undefined} [fixTableCellAlign=true]\n * Fix obsolete align attributes on table cells by turning them\n * into inline styles.\n * Keep it on when working with markdown, turn it off when working\n * with markup for emails.\n * The default is `true`.\n *\n * @typedef {SharedOptions & (import('./complex-types').ComponentsWithNodeOptions|import('./complex-types').ComponentsWithoutNodeOptions)} Options\n * Configuration.\n */\n\nimport {toH} from 'hast-to-hyperscript'\n// @ts-expect-error: hush.\nimport tableCellStyle from '@mapbox/hast-util-table-cell-style'\nimport {whitespace} from 'hast-util-whitespace'\n\nconst own = {}.hasOwnProperty\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * Compile HTML to React nodes.\n *\n * > 👉 **Note**: this compiler returns a React node where compilers typically\n * > return `string`.\n * > When using `.stringify`, the result is such a React node.\n * > When using `.process` (or `.processSync`), the result is available at\n * > `file.result`.\n *\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options], Root, ReactElement>}\n */\nexport default function rehypeReact(options) {\n if (!options || typeof options.createElement !== 'function') {\n throw new TypeError('createElement is not a function')\n }\n\n const createElement = options.createElement\n\n const fixTableCellAlign = options.fixTableCellAlign !== false\n\n Object.assign(this, {Compiler: compiler})\n\n /** @type {import('unified').CompilerFunction<Root, ReactNode>} */\n function compiler(node) {\n /** @type {ReactNode} */\n let result = toH(\n // @ts-expect-error: assume `name` is a known element.\n h,\n fixTableCellAlign ? tableCellStyle(node) : node,\n options.prefix\n )\n\n if (node.type === 'root') {\n // Invert <https://github.com/syntax-tree/hast-to-hyperscript/blob/d227372/index.js#L46-L56>.\n result =\n result &&\n typeof result === 'object' &&\n 'type' in result &&\n 'props' in result &&\n result.type === 'div' &&\n (node.children.length !== 1 || node.children[0].type !== 'element')\n ? // `children` does exist.\n // type-coverage:ignore-next-line\n result.props.children\n : [result]\n\n return createElement(options.Fragment || 'div', {}, result)\n }\n\n return result\n }\n\n /**\n * @param {keyof JSX.IntrinsicElements} name\n * @param {Record<string, unknown>} props\n * @param {Array<ReactNode>} [children]\n * @returns {ReactNode}\n */\n function h(name, props, children) {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we remove the pretty lines for now.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/rehypejs/rehype-react/pull/29>.\n // See: <https://github.com/rehypejs/rehype-react/pull/32>.\n // See: <https://github.com/rehypejs/rehype-react/pull/45>.\n if (children && tableElements.has(name)) {\n children = children.filter((child) => !whitespace(child))\n }\n\n if (options.components && own.call(options.components, name)) {\n const component = options.components[name]\n\n if (options.passNode && typeof component === 'function') {\n // @ts-expect-error: `toH` passes the current node.\n // type-coverage:ignore-next-line\n props = Object.assign({node: this}, props)\n }\n\n return createElement(component, props, children)\n }\n\n return createElement(name, props, children)\n }\n}\n","/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n * Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`).\n * If a node is passed it must be a `Text` node, whose `value` field is\n * checked.\n */\nexport function whitespace(thing) {\n /** @type {string} */\n const value =\n // @ts-expect-error looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-expect-error looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array<string>`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {import('unist-util-visit-parents').BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array<Nodes> | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parents>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array<Nodes>} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/**\n * Turn normal line endings into hard breaks.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function newlineToBreak(tree) {\n findAndReplace(tree, [/\\r?\\n|\\r/g, replace])\n}\n\n/**\n * Replace line endings.\n *\n * @type {ReplaceFunction}\n */\nfunction replace() {\n return {type: 'break'}\n}\n","/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {newlineToBreak} from 'mdast-util-newline-to-break'\n\n/**\n * Support hard breaks without needing spaces or escapes (turns enters into\n * `<br>`s).\n *\n * @returns\n * Transform.\n */\nexport default function remarkBreaks() {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n newlineToBreak(tree)\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}","/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // …and either is not ended yet…\n !childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}","/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}","/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const character = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n if (\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n value !== 'semi'\n ) {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return character === characterReference ? false : character\n}\n","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array<ElementContent>} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array<ElementContent>} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract<Nodes, Reference>} node\n * Reference node (image, link).\n * @returns {Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n let reuseCounter = state.footnoteCounts.get(id)\n\n if (reuseCounter === undefined) {\n reuseCounter = 0\n state.footnoteOrder.push(id)\n counter = state.footnoteOrder.length\n } else {\n counter = index + 1\n }\n\n reuseCounter += 1\n state.footnoteCounts.set(id, reuseCounter)\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + clobberPrefix + 'fn-' + safeId,\n id:\n clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Element | Raw | undefined}\n * hast node.\n */\nexport function html(state, node) {\n if (state.options.allowDangerousHtml) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n return undefined\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function imageReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function linkReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(definition.url || '')}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastParents}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start && end) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n // To do: option to use `style`?\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(cell, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastElement | HastText}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {\n * ElementContent as HastElementContent,\n * Element as HastElement,\n * Nodes as HastNodes,\n * Properties as HastProperties,\n * RootContent as HastRootContent,\n * Text as HastText\n * } from 'hast'\n * @import {\n * Definition as MdastDefinition,\n * FootnoteDefinition as MdastFootnoteDefinition,\n * Nodes as MdastNodes,\n * Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n * FootnoteBackContentTemplate,\n * FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | undefined} parent\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n * Handle nodes.\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree (default:\n * `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` property on footnotes to prevent them from\n * *clobbering* (default: `'user-content-'`).\n *\n * Pass `''` for trusted markdown and when you are careful with\n * polyfilling.\n * You could pass a different prefix.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=\"x\"></p>\n * <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n * Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map<string, MdastDefinition>} */\n const definitionById = new Map()\n /** @type {Map<string, MdastFootnoteDefinition>} */\n const footnoteById = new Map()\n /** @type {Map<string, number>} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array<HastElementContent>} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<HastText | Type>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// <reference types=\"mdast-util-to-hast\" />\n\n/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} ToHastOptions\n * @typedef {import('unified').Processor} Processor\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise<undefined>}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(options || destination)})\n )\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: MIT\n */\n\n/**\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n */\n\nimport {squeezeParagraphs} from 'mdast-squeeze-paragraphs'\nimport {visit} from 'unist-util-visit'\n\n/**\n * Only keep links with the given protocols.\n *\n * @param {object} options Options\n * @param {string[]} options.except - Protocols to exclude. Defauls to `['http', 'https']`.\n * @returns\n * Transform.\n */\nexport default function remarkUnlinkProtocols(\n options = {except: ['http', 'https']}\n) {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n /** @type {Map<string, string>} */\n const definitions = new Map()\n\n // Find definitions to look up linkReferences.\n visit(tree, 'definition', function (node, index, parent) {\n definitions.set(node.identifier, node.url)\n if (parent && typeof index === 'number') {\n const url = node.url\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1)\n return index\n }\n }\n })\n\n visit(tree, function (node, index, parent) {\n if (\n parent &&\n typeof index === 'number' &&\n (node.type === 'link' || node.type === 'linkReference')\n ) {\n const url =\n node.type === 'link' ? node.url : definitions.get(node.identifier)\n if (\n url &&\n url.includes(':') &&\n !options.except.some((proto) => url.startsWith(`${proto}:`))\n ) {\n parent.children.splice(index, 1, ...node.children)\n return index\n }\n }\n })\n\n squeezeParagraphs(tree)\n }\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Remove empty paragraphs in `tree`.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @returns {undefined}\n * Nothing.\n */\nexport function squeezeParagraphs(tree) {\n visit(tree, function (node, index, parent) {\n if (\n index !== undefined &&\n parent &&\n node.type === 'paragraph' &&\n node.children.every(function (child) {\n return child.type === 'text' && /^\\s*$/.test(child.value)\n })\n ) {\n parent.children.splice(index, 1)\n return index\n }\n })\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /* eslint-disable no-unused-expressions */\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {string | null | undefined} [basename]\n * Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n * Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n * Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n * Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n * Set `extname` (extension with dot).\n * @property {Array<string> | null | undefined} [history]\n * Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n * Set `path` (current path).\n * @property {string | null | undefined} [stem]\n * Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n * Set `value` (the contents of the file).\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * <https://github.com/mozilla/source-map/blob/60adcb0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n * An array of URLs to the original source files.\n * @property {Array<string>} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {Record<string, unknown> & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array<VFile>} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {path} from 'vfile/do-not-use-conditional-minpath'\nimport {proc} from 'vfile/do-not-use-conditional-minproc'\nimport {urlToPath, isUrl} from 'vfile/do-not-use-conditional-minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const func = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return func.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n const names = Object.getOwnPropertyNames(func)\n\n for (const p of names) {\n const descriptor = Object.getOwnPropertyDescriptor(func, p)\n if (descriptor) Object.defineProperty(apply, p, descriptor)\n }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@link Node `Node`}\n * and {@link VFile `VFile`} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@link VFile `VFile`} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@link Node `Node`}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node it expects.\n * * If the plugin sets a {@link Parser `Parser`}, this should be\n * `string`.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@link Transformer `Transformer`}, this\n * should be the node that that yields.\n * * If the plugin sets a {@link Parser `Parser`}, this should be the\n * node that it yields.\n * * If the plugin sets a {@link Compiler `Compiler`}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise<undefined>` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@link VFile `VFile`}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@link Processor `Processor`}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > 👉 **Note**: to register custom data in TypeScript, augment the\n * > {@link Data `Data`} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > 👉 **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@link CompileResultMap `CompileResultMap`}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n/**\n * @module public\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the current page is on a public share\n */\nexport function isPublicShare() {\n // check both the new initial state version and fallback to legacy input\n return (loadState('files_sharing', 'isPublic', null)\n ?? document.querySelector('input#isPublic[type=\"hidden\"][name=\"isPublic\"][value=\"1\"]') !== null);\n}\n/**\n * Get the sharing token for the current public share\n */\nexport function getSharingToken() {\n return (loadState('files_sharing', 'sharingToken', null)\n ?? document.querySelector('input#sharingToken[type=\"hidden\"]')?.value\n ?? null);\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n/**\n * @param app app ID, e.g. \"mail\"\n * @param key name of the property\n * @param fallback optional parameter to use as default value\n * @throws if the key can't be found\n */\nexport function loadState(app, key, fallback) {\n const selector = `#initial-state-${app}-${key}`;\n if (window._nc_initial_state?.has(selector)) {\n return window._nc_initial_state.get(selector);\n }\n else if (!window._nc_initial_state) {\n window._nc_initial_state = new Map();\n }\n const elem = document.querySelector(selector);\n if (elem === null) {\n if (fallback !== undefined) {\n return fallback;\n }\n throw new Error(`Could not find initial state ${key} of ${app}`);\n }\n try {\n const parsedValue = JSON.parse(atob(elem.value));\n window._nc_initial_state.set(selector, parsedValue);\n return parsedValue;\n }\n catch (error) {\n console.error('[@nextcloud/initial-state] Could not parse initial state', { key, app, error });\n if (fallback !== undefined) {\n return fallback;\n }\n throw new Error(`Could not parse initial state ${key} of ${app}`, { cause: error });\n }\n}\n","import '../assets/NcRichText-Cr-HXxVi.css';\nimport rehypeExternalLinks from \"rehype-external-links\";\nimport rehype2react from \"rehype-react\";\nimport breaks from \"remark-breaks\";\nimport remarkParse from \"remark-parse\";\nimport remark2rehype from \"remark-rehype\";\nimport remarkUnlinkProtocols from \"remark-unlink-protocols\";\nimport { unified } from \"unified\";\nimport { ref } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcCheckboxRadioSwitch } from \"./NcCheckboxRadioSwitch-DAPHFb0L.mjs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { getSharingToken } from \"@nextcloud/sharing/public\";\nimport { f as NcReferenceWidget } from \"./referencePickerModal-CHpUHrDL.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute } from \"./autolink-D2pIbi92.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { u } from \"unist-builder\";\nimport { visit, EXIT as EXIT$1, SKIP as SKIP$1 } from \"unist-util-visit\";\nconst _sfc_main$1 = {\n name: \"NcReferenceList\",\n components: {\n NcReferenceWidget\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n referenceData: {\n type: Array,\n default: null\n },\n limit: {\n type: Number,\n default: 1\n },\n displayFallback: {\n type: Boolean,\n default: false\n },\n interactive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n interactiveOptIn: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n references: null,\n loading: true\n };\n },\n computed: {\n isVisible() {\n return this.loading || this.displayedReferences.length !== 0;\n },\n values() {\n if (this.referenceData) {\n return this.referenceData;\n }\n if (this.displayFallback && !this.loading && !this.references) {\n return [this.fallbackReference];\n }\n return this.references ? Object.values(this.references) : [];\n },\n firstReference() {\n return this.values[0] ?? null;\n },\n displayedReferences() {\n return this.values.filter(Boolean).slice(0, this.limit);\n },\n fallbackReference() {\n return {\n accessible: true,\n openGraphObject: {\n id: this.text,\n link: this.text,\n name: this.text\n },\n richObjectType: \"open-graph\"\n };\n }\n },\n watch: {\n text: \"fetch\"\n },\n mounted() {\n this.fetch();\n },\n methods: {\n fetch() {\n this.loading = true;\n if (this.referenceData) {\n this.references = null;\n this.loading = false;\n return;\n }\n if (!new RegExp(URL_PATTERN).exec(this.text)) {\n this.references = null;\n this.loading = false;\n return;\n }\n this.resolve().then((response) => {\n this.references = response.data.ocs.data.references;\n this.loading = false;\n this.$emit(\"loaded\");\n }).catch((error) => {\n logger.error(\"Failed to extract references\", { error });\n this.loading = false;\n this.$emit(\"loaded\");\n });\n },\n resolve() {\n const match = new RegExp(URL_PATTERN).exec(this.text.trim());\n const isPublic = getCurrentUser() === null;\n if (this.limit === 1 && match) {\n return isPublic ? axios.get(generateOcsUrl(\"references/resolvePublic\") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl(\"references/resolve\") + `?reference=${encodeURIComponent(match[0])}`);\n }\n return isPublic ? axios.post(generateOcsUrl(\"references/extractPublic\"), {\n text: this.text,\n resolve: true,\n limit: this.limit,\n sharingToken: getSharingToken()\n }) : axios.post(generateOcsUrl(\"references/extract\"), {\n text: this.text,\n resolve: true,\n limit: this.limit\n });\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _vm.isVisible ? _c(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {\n return _c(\"NcReferenceWidget\", { key: reference.openGraphObject?.id, attrs: { \"reference\": reference, \"interactive\": _vm.interactive, \"interactive-opt-in\": _vm.interactiveOptIn } });\n }), 1) : _vm._e();\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"a50e616b\"\n);\nconst NcReferenceList = __component__$1.exports;\nfunction ccount(value, character) {\n const source = String(value);\n if (typeof character !== \"string\") {\n throw new TypeError(\"Expected character\");\n }\n let count = 0;\n let index = source.indexOf(character);\n while (index !== -1) {\n count++;\n index = source.indexOf(character, index + character.length);\n }\n return count;\n}\nfunction ok$1() {\n}\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nfunction asciiControl(code2) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code2 !== null && (code2 < 32 || code2 === 127)\n );\n}\nfunction markdownLineEnding(code2) {\n return code2 !== null && code2 < -2;\n}\nfunction markdownLineEndingOrSpace(code2) {\n return code2 !== null && (code2 < 0 || code2 === 32);\n}\nfunction markdownSpace(code2) {\n return code2 === -2 || code2 === -1 || code2 === 32;\n}\nconst unicodePunctuation = regexCheck(new RegExp(\"\\\\p{P}|\\\\p{S}\", \"u\"));\nconst unicodeWhitespace = regexCheck(/\\s/);\nfunction regexCheck(regex) {\n return check;\n function check(code2) {\n return code2 !== null && code2 > -1 && regex.test(String.fromCharCode(code2));\n }\n}\nfunction escapeStringRegexp(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(\"Expected a string\");\n }\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\nconst convert = (\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function(test) {\n if (test === null || test === void 0) {\n return ok;\n }\n if (typeof test === \"function\") {\n return castFactory(test);\n }\n if (typeof test === \"object\") {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test);\n }\n if (typeof test === \"string\") {\n return typeFactory(test);\n }\n throw new Error(\"Expected function, string, or object as test\");\n }\n);\nfunction anyFactory(tests) {\n const checks = [];\n let index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return castFactory(any);\n function any(...parameters) {\n let index2 = -1;\n while (++index2 < checks.length) {\n if (checks[index2].apply(this, parameters)) return true;\n }\n return false;\n }\n}\nfunction propsFactory(check) {\n const checkAsRecord = (\n /** @type {Record<string, unknown>} */\n check\n );\n return castFactory(all2);\n function all2(node2) {\n const nodeAsRecord = (\n /** @type {Record<string, unknown>} */\n /** @type {unknown} */\n node2\n );\n let key;\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false;\n }\n return true;\n }\n}\nfunction typeFactory(check) {\n return castFactory(type);\n function type(node2) {\n return node2 && node2.type === check;\n }\n}\nfunction castFactory(testFunction) {\n return check;\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) && testFunction.call(\n this,\n value,\n typeof index === \"number\" ? index : void 0,\n parent || void 0\n )\n );\n }\n}\nfunction ok() {\n return true;\n}\nfunction looksLikeANode(value) {\n return value !== null && typeof value === \"object\" && \"type\" in value;\n}\nfunction color(d) {\n return d;\n}\nconst empty = [];\nconst CONTINUE = true;\nconst EXIT = false;\nconst SKIP = \"skip\";\nfunction visitParents(tree, test, visitor, reverse) {\n let check;\n {\n check = test;\n }\n const is = convert(check);\n const step = 1;\n factory(tree, void 0, [])();\n function factory(node2, index, parents) {\n const value = (\n /** @type {Record<string, unknown>} */\n node2 && typeof node2 === \"object\" ? node2 : {}\n );\n if (typeof value.type === \"string\") {\n const name = (\n // `hast`\n typeof value.tagName === \"string\" ? value.tagName : (\n // `xast`\n typeof value.name === \"string\" ? value.name : void 0\n )\n );\n Object.defineProperty(visit2, \"name\", {\n value: \"node (\" + color(node2.type + (name ? \"<\" + name + \">\" : \"\")) + \")\"\n });\n }\n return visit2;\n function visit2() {\n let result = empty;\n let subresult;\n let offset;\n let grandparents;\n if (is(node2, index, parents[parents.length - 1] || void 0)) {\n result = toResult(visitor(node2, parents));\n if (result[0] === EXIT) {\n return result;\n }\n }\n if (\"children\" in node2 && node2.children) {\n const nodeAsParent = (\n /** @type {UnistParent} */\n node2\n );\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = -1 + step;\n grandparents = parents.concat(nodeAsParent);\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset];\n subresult = factory(child, offset, grandparents)();\n if (subresult[0] === EXIT) {\n return subresult;\n }\n offset = typeof subresult[1] === \"number\" ? subresult[1] : offset + step;\n }\n }\n }\n return result;\n }\n }\n}\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"number\") {\n return [CONTINUE, value];\n }\n return value === null || value === void 0 ? empty : [value];\n}\nfunction findAndReplace(tree, list2, options) {\n const settings = options || {};\n const ignored = convert(settings.ignore || []);\n const pairs = toPairs(list2);\n let pairIndex = -1;\n while (++pairIndex < pairs.length) {\n visitParents(tree, \"text\", visitor);\n }\n function visitor(node2, parents) {\n let index = -1;\n let grandparent;\n while (++index < parents.length) {\n const parent = parents[index];\n const siblings = grandparent ? grandparent.children : void 0;\n if (ignored(\n parent,\n siblings ? siblings.indexOf(parent) : void 0,\n grandparent\n )) {\n return;\n }\n grandparent = parent;\n }\n if (grandparent) {\n return handler(node2, parents);\n }\n }\n function handler(node2, parents) {\n const parent = parents[parents.length - 1];\n const find = pairs[pairIndex][0];\n const replace2 = pairs[pairIndex][1];\n let start = 0;\n const siblings = parent.children;\n const index = siblings.indexOf(node2);\n let change = false;\n let nodes = [];\n find.lastIndex = 0;\n let match = find.exec(node2.value);\n while (match) {\n const position = match.index;\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node2]\n };\n let value = replace2(...match, matchObject);\n if (typeof value === \"string\") {\n value = value.length > 0 ? { type: \"text\", value } : void 0;\n }\n if (value === false) {\n find.lastIndex = position + 1;\n } else {\n if (start !== position) {\n nodes.push({\n type: \"text\",\n value: node2.value.slice(start, position)\n });\n }\n if (Array.isArray(value)) {\n nodes.push(...value);\n } else if (value) {\n nodes.push(value);\n }\n start = position + match[0].length;\n change = true;\n }\n if (!find.global) {\n break;\n }\n match = find.exec(node2.value);\n }\n if (change) {\n if (start < node2.value.length) {\n nodes.push({ type: \"text\", value: node2.value.slice(start) });\n }\n parent.children.splice(index, 1, ...nodes);\n } else {\n nodes = [node2];\n }\n return index + nodes.length;\n }\n}\nfunction toPairs(tupleOrList) {\n const result = [];\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError(\"Expected find and replace tuple or list of tuples\");\n }\n const list2 = !tupleOrList[0] || Array.isArray(tupleOrList[0]) ? tupleOrList : [tupleOrList];\n let index = -1;\n while (++index < list2.length) {\n const tuple = list2[index];\n result.push([toExpression(tuple[0]), toFunction(tuple[1])]);\n }\n return result;\n}\nfunction toExpression(find) {\n return typeof find === \"string\" ? new RegExp(escapeStringRegexp(find), \"g\") : find;\n}\nfunction toFunction(replace2) {\n return typeof replace2 === \"function\" ? replace2 : function() {\n return replace2;\n };\n}\nconst inConstruct = \"phrasing\";\nconst notInConstruct = [\"autolink\", \"link\", \"image\", \"label\"];\nfunction gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n };\n}\nfunction gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: \"@\",\n before: \"[+\\\\-.\\\\w]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \".\",\n before: \"[Ww]\",\n after: \"[\\\\-.\\\\w]\",\n inConstruct,\n notInConstruct\n },\n {\n character: \":\",\n before: \"[ps]\",\n after: \"\\\\/\",\n inConstruct,\n notInConstruct\n }\n ]\n };\n}\nfunction enterLiteralAutolink(token) {\n this.enter({ type: \"link\", title: null, url: \"\", children: [] }, token);\n}\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token);\n}\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token);\n const node2 = this.stack[this.stack.length - 1];\n ok$1(node2.type === \"link\");\n node2.url = \"http://\" + this.sliceSerialize(token);\n}\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token);\n}\nfunction exitLiteralAutolink(token) {\n this.exit(token);\n}\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n { ignore: [\"link\", \"linkReference\"] }\n );\n}\nfunction findUrl(_, protocol, domain2, path2, match) {\n let prefix = \"\";\n if (!previous(match)) {\n return false;\n }\n if (/^w/i.test(protocol)) {\n domain2 = protocol + domain2;\n protocol = \"\";\n prefix = \"http://\";\n }\n if (!isCorrectDomain(domain2)) {\n return false;\n }\n const parts = splitUrl(domain2 + path2);\n if (!parts[0]) return false;\n const result = {\n type: \"link\",\n title: null,\n url: prefix + protocol + parts[0],\n children: [{ type: \"text\", value: protocol + parts[0] }]\n };\n if (parts[1]) {\n return [result, { type: \"text\", value: parts[1] }];\n }\n return result;\n}\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) || // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false;\n }\n return {\n type: \"link\",\n title: null,\n url: \"mailto:\" + atext + \"@\" + label,\n children: [{ type: \"text\", value: atext + \"@\" + label }]\n };\n}\nfunction isCorrectDomain(domain2) {\n const parts = domain2.split(\".\");\n if (parts.length < 2 || parts[parts.length - 1] && (/_/.test(parts[parts.length - 1]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 1])) || parts[parts.length - 2] && (/_/.test(parts[parts.length - 2]) || !/[a-zA-Z\\d]/.test(parts[parts.length - 2]))) {\n return false;\n }\n return true;\n}\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url);\n if (!trailExec) {\n return [url, void 0];\n }\n url = url.slice(0, trailExec.index);\n let trail2 = trailExec[0];\n let closingParenIndex = trail2.indexOf(\")\");\n const openingParens = ccount(url, \"(\");\n let closingParens = ccount(url, \")\");\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail2.slice(0, closingParenIndex + 1);\n trail2 = trail2.slice(closingParenIndex + 1);\n closingParenIndex = trail2.indexOf(\")\");\n closingParens++;\n }\n return [url, trail2];\n}\nfunction previous(match, email) {\n const code2 = match.input.charCodeAt(match.index - 1);\n return (match.index === 0 || unicodeWhitespace(code2) || unicodePunctuation(code2)) && (!email || code2 !== 47);\n}\nfunction normalizeIdentifier(value) {\n return value.replace(/[\\t\\n\\r ]+/g, \" \").replace(/^ | $/g, \"\").toLowerCase().toUpperCase();\n}\nfootnoteReference.peek = footnoteReferencePeek;\nfunction gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n };\n}\nfunction gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{ character: \"[\", inConstruct: [\"phrasing\", \"label\", \"reference\"] }],\n handlers: { footnoteDefinition, footnoteReference }\n };\n}\nfunction enterFootnoteDefinition(token) {\n this.enter(\n { type: \"footnoteDefinition\", identifier: \"\", label: \"\", children: [] },\n token\n );\n}\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer();\n}\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume();\n const node2 = this.stack[this.stack.length - 1];\n ok$1(node2.type === \"footnoteDefinition\");\n node2.label = label;\n node2.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteDefinition(token) {\n this.exit(token);\n}\nfunction enterFootnoteCall(token) {\n this.enter({ type: \"footnoteReference\", identifier: \"\", label: \"\" }, token);\n}\nfunction enterFootnoteCallString() {\n this.buffer();\n}\nfunction exitFootnoteCallString(token) {\n const label = this.resume();\n const node2 = this.stack[this.stack.length - 1];\n ok$1(node2.type === \"footnoteReference\");\n node2.label = label;\n node2.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase();\n}\nfunction exitFootnoteCall(token) {\n this.exit(token);\n}\nfunction footnoteReference(node2, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteReference\");\n const subexit = state.enter(\"reference\");\n value += tracker.move(\n state.safe(state.associationId(node2), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n exit2();\n value += tracker.move(\"]\");\n return value;\n}\nfunction footnoteReferencePeek() {\n return \"[\";\n}\nfunction footnoteDefinition(node2, _, state, info) {\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[^\");\n const exit2 = state.enter(\"footnoteDefinition\");\n const subexit = state.enter(\"label\");\n value += tracker.move(\n state.safe(state.associationId(node2), {\n ...tracker.current(),\n before: value,\n after: \"]\"\n })\n );\n subexit();\n value += tracker.move(\n \"]:\" + (node2.children && node2.children.length > 0 ? \" \" : \"\")\n );\n tracker.shift(4);\n value += tracker.move(\n state.indentLines(state.containerFlow(node2, tracker.current()), map$2)\n );\n exit2();\n return value;\n}\nfunction map$2(line, index, blank) {\n if (index === 0) {\n return line;\n }\n return (blank ? \"\" : \" \") + line;\n}\nconst constructsWithoutStrikethrough = [\n \"autolink\",\n \"destinationLiteral\",\n \"destinationRaw\",\n \"reference\",\n \"titleQuote\",\n \"titleApostrophe\"\n];\nhandleDelete.peek = peekDelete;\nfunction gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: [\"delete\"],\n enter: { strikethrough: enterStrikethrough },\n exit: { strikethrough: exitStrikethrough }\n };\n}\nfunction gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: \"~\",\n inConstruct: \"phrasing\",\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: { delete: handleDelete }\n };\n}\nfunction enterStrikethrough(token) {\n this.enter({ type: \"delete\", children: [] }, token);\n}\nfunction exitStrikethrough(token) {\n this.exit(token);\n}\nfunction handleDelete(node2, _, state, info) {\n const tracker = state.createTracker(info);\n const exit2 = state.enter(\"strikethrough\");\n let value = tracker.move(\"~~\");\n value += state.containerPhrasing(node2, {\n ...tracker.current(),\n before: value,\n after: \"~\"\n });\n value += tracker.move(\"~~\");\n exit2();\n return value;\n}\nfunction peekDelete() {\n return \"~\";\n}\nfunction markdownTable(table, options = {}) {\n const align = (options.align || []).concat();\n const stringLength = options.stringLength || defaultStringLength;\n const alignments = [];\n const cellMatrix = [];\n const sizeMatrix = [];\n const longestCellByColumn = [];\n let mostCellsPerRow = 0;\n let rowIndex = -1;\n while (++rowIndex < table.length) {\n const row2 = [];\n const sizes2 = [];\n let columnIndex2 = -1;\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length;\n }\n while (++columnIndex2 < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex2]);\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell);\n sizes2[columnIndex2] = size;\n if (longestCellByColumn[columnIndex2] === void 0 || size > longestCellByColumn[columnIndex2]) {\n longestCellByColumn[columnIndex2] = size;\n }\n }\n row2.push(cell);\n }\n cellMatrix[rowIndex] = row2;\n sizeMatrix[rowIndex] = sizes2;\n }\n let columnIndex = -1;\n if (typeof align === \"object\" && \"length\" in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex]);\n }\n } else {\n const code2 = toAlignment(align);\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code2;\n }\n }\n columnIndex = -1;\n const row = [];\n const sizes = [];\n while (++columnIndex < mostCellsPerRow) {\n const code2 = alignments[columnIndex];\n let before = \"\";\n let after = \"\";\n if (code2 === 99) {\n before = \":\";\n after = \":\";\n } else if (code2 === 108) {\n before = \":\";\n } else if (code2 === 114) {\n after = \":\";\n }\n let size = options.alignDelimiters === false ? 1 : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n );\n const cell = before + \"-\".repeat(size) + after;\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length;\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size;\n }\n sizes[columnIndex] = size;\n }\n row[columnIndex] = cell;\n }\n cellMatrix.splice(1, 0, row);\n sizeMatrix.splice(1, 0, sizes);\n rowIndex = -1;\n const lines = [];\n while (++rowIndex < cellMatrix.length) {\n const row2 = cellMatrix[rowIndex];\n const sizes2 = sizeMatrix[rowIndex];\n columnIndex = -1;\n const line = [];\n while (++columnIndex < mostCellsPerRow) {\n const cell = row2[columnIndex] || \"\";\n let before = \"\";\n let after = \"\";\n if (options.alignDelimiters !== false) {\n const size = longestCellByColumn[columnIndex] - (sizes2[columnIndex] || 0);\n const code2 = alignments[columnIndex];\n if (code2 === 114) {\n before = \" \".repeat(size);\n } else if (code2 === 99) {\n if (size % 2) {\n before = \" \".repeat(size / 2 + 0.5);\n after = \" \".repeat(size / 2 - 0.5);\n } else {\n before = \" \".repeat(size / 2);\n after = before;\n }\n } else {\n after = \" \".repeat(size);\n }\n }\n if (options.delimiterStart !== false && !columnIndex) {\n line.push(\"|\");\n }\n if (options.padding !== false && // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === \"\") && (options.delimiterStart !== false || columnIndex)) {\n line.push(\" \");\n }\n if (options.alignDelimiters !== false) {\n line.push(before);\n }\n line.push(cell);\n if (options.alignDelimiters !== false) {\n line.push(after);\n }\n if (options.padding !== false) {\n line.push(\" \");\n }\n if (options.delimiterEnd !== false || columnIndex !== mostCellsPerRow - 1) {\n line.push(\"|\");\n }\n }\n lines.push(\n options.delimiterEnd === false ? line.join(\"\").replace(/ +$/, \"\") : line.join(\"\")\n );\n }\n return lines.join(\"\\n\");\n}\nfunction serialize(value) {\n return value === null || value === void 0 ? \"\" : String(value);\n}\nfunction defaultStringLength(value) {\n return value.length;\n}\nfunction toAlignment(value) {\n const code2 = typeof value === \"string\" ? value.codePointAt(0) : 0;\n return code2 === 67 || code2 === 99 ? 99 : code2 === 76 || code2 === 108 ? 108 : code2 === 82 || code2 === 114 ? 114 : 0;\n}\nfunction blockquote(node2, _, state, info) {\n const exit2 = state.enter(\"blockquote\");\n const tracker = state.createTracker(info);\n tracker.move(\"> \");\n tracker.shift(2);\n const value = state.indentLines(\n state.containerFlow(node2, tracker.current()),\n map$1\n );\n exit2();\n return value;\n}\nfunction map$1(line, _, blank) {\n return \">\" + (blank ? \"\" : \" \") + line;\n}\nfunction patternInScope(stack, pattern) {\n return listInScope(stack, pattern.inConstruct, true) && !listInScope(stack, pattern.notInConstruct, false);\n}\nfunction listInScope(stack, list2, none) {\n if (typeof list2 === \"string\") {\n list2 = [list2];\n }\n if (!list2 || list2.length === 0) {\n return none;\n }\n let index = -1;\n while (++index < list2.length) {\n if (stack.includes(list2[index])) {\n return true;\n }\n }\n return false;\n}\nfunction hardBreak(_, _1, state, info) {\n let index = -1;\n while (++index < state.unsafe.length) {\n if (state.unsafe[index].character === \"\\n\" && patternInScope(state.stack, state.unsafe[index])) {\n return /[ \\t]/.test(info.before) ? \"\" : \" \";\n }\n }\n return \"\\\\\\n\";\n}\nfunction longestStreak(value, substring) {\n const source = String(value);\n let index = source.indexOf(substring);\n let expected = index;\n let count = 0;\n let max = 0;\n if (typeof substring !== \"string\") {\n throw new TypeError(\"Expected substring\");\n }\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count;\n }\n } else {\n count = 1;\n }\n expected = index + substring.length;\n index = source.indexOf(substring, expected);\n }\n return max;\n}\nfunction formatCodeAsIndented(node2, state) {\n return Boolean(\n state.options.fences === false && node2.value && // If there’s no info…\n !node2.lang && // And there’s a non-whitespace character…\n /[^ \\r\\n]/.test(node2.value) && // And the value doesn’t start or end in a blank…\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node2.value)\n );\n}\nfunction checkFence(state) {\n const marker = state.options.fence || \"`\";\n if (marker !== \"`\" && marker !== \"~\") {\n throw new Error(\n \"Cannot serialize code with `\" + marker + \"` for `options.fence`, expected `` ` `` or `~`\"\n );\n }\n return marker;\n}\nfunction code$1(node2, _, state, info) {\n const marker = checkFence(state);\n const raw = node2.value || \"\";\n const suffix = marker === \"`\" ? \"GraveAccent\" : \"Tilde\";\n if (formatCodeAsIndented(node2, state)) {\n const exit3 = state.enter(\"codeIndented\");\n const value2 = state.indentLines(raw, map);\n exit3();\n return value2;\n }\n const tracker = state.createTracker(info);\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3));\n const exit2 = state.enter(\"codeFenced\");\n let value = tracker.move(sequence);\n if (node2.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`);\n value += tracker.move(\n state.safe(node2.lang, {\n before: value,\n after: \" \",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n if (node2.lang && node2.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`);\n value += tracker.move(\" \");\n value += tracker.move(\n state.safe(node2.meta, {\n before: value,\n after: \"\\n\",\n encode: [\"`\"],\n ...tracker.current()\n })\n );\n subexit();\n }\n value += tracker.move(\"\\n\");\n if (raw) {\n value += tracker.move(raw + \"\\n\");\n }\n value += tracker.move(sequence);\n exit2();\n return value;\n}\nfunction map(line, _, blank) {\n return (blank ? \"\" : \" \") + line;\n}\nfunction checkQuote(state) {\n const marker = state.options.quote || '\"';\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n \"Cannot serialize title with `\" + marker + \"` for `options.quote`, expected `\\\"`, or `'`\"\n );\n }\n return marker;\n}\nfunction definition(node2, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"definition\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.safe(state.associationId(node2), {\n before: value,\n after: \"]\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"]: \");\n subexit();\n if (\n // If there’s no url, or…\n !node2.url || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node2.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node2.url, {\n before: value,\n after: node2.title ? \" \" : \"\\n\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node2.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node2.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n exit2();\n return value;\n}\nfunction checkEmphasis(state) {\n const marker = state.options.emphasis || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize emphasis with `\" + marker + \"` for `options.emphasis`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nemphasis.peek = emphasisPeek;\nfunction emphasis(node2, _, state, info) {\n const marker = checkEmphasis(state);\n const exit2 = state.enter(\"emphasis\");\n const tracker = state.createTracker(info);\n let value = tracker.move(marker);\n value += tracker.move(\n state.containerPhrasing(node2, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n );\n value += tracker.move(marker);\n exit2();\n return value;\n}\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || \"*\";\n}\nconst emptyOptions$1 = {};\nfunction toString(value, options) {\n const settings = emptyOptions$1;\n const includeImageAlt = typeof settings.includeImageAlt === \"boolean\" ? settings.includeImageAlt : true;\n const includeHtml = typeof settings.includeHtml === \"boolean\" ? settings.includeHtml : true;\n return one(value, includeImageAlt, includeHtml);\n}\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if (\"value\" in value) {\n return value.type === \"html\" && !includeHtml ? \"\" : value.value;\n }\n if (includeImageAlt && \"alt\" in value && value.alt) {\n return value.alt;\n }\n if (\"children\" in value) {\n return all(value.children, includeImageAlt, includeHtml);\n }\n }\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml);\n }\n return \"\";\n}\nfunction all(values, includeImageAlt, includeHtml) {\n const result = [];\n let index = -1;\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml);\n }\n return result.join(\"\");\n}\nfunction node(value) {\n return Boolean(value && typeof value === \"object\");\n}\nfunction formatHeadingAsSetext(node2, state) {\n let literalWithBreak = false;\n visit(node2, function(node3) {\n if (\"value\" in node3 && /\\r?\\n|\\r/.test(node3.value) || node3.type === \"break\") {\n literalWithBreak = true;\n return EXIT$1;\n }\n });\n return Boolean(\n (!node2.depth || node2.depth < 3) && toString(node2) && (state.options.setext || literalWithBreak)\n );\n}\nfunction heading(node2, _, state, info) {\n const rank = Math.max(Math.min(6, node2.depth || 1), 1);\n const tracker = state.createTracker(info);\n if (formatHeadingAsSetext(node2, state)) {\n const exit3 = state.enter(\"headingSetext\");\n const subexit2 = state.enter(\"phrasing\");\n const value2 = state.containerPhrasing(node2, {\n ...tracker.current(),\n before: \"\\n\",\n after: \"\\n\"\n });\n subexit2();\n exit3();\n return value2 + \"\\n\" + (rank === 1 ? \"=\" : \"-\").repeat(\n // The whole size…\n value2.length - // Minus the position of the character after the last EOL (or\n // 0 if there is none)…\n (Math.max(value2.lastIndexOf(\"\\r\"), value2.lastIndexOf(\"\\n\")) + 1)\n );\n }\n const sequence = \"#\".repeat(rank);\n const exit2 = state.enter(\"headingAtx\");\n const subexit = state.enter(\"phrasing\");\n tracker.move(sequence + \" \");\n let value = state.containerPhrasing(node2, {\n before: \"# \",\n after: \"\\n\",\n ...tracker.current()\n });\n if (/^[\\t ]/.test(value)) {\n value = \"&#x\" + value.charCodeAt(0).toString(16).toUpperCase() + \";\" + value.slice(1);\n }\n value = value ? sequence + \" \" + value : sequence;\n if (state.options.closeAtx) {\n value += \" \" + sequence;\n }\n subexit();\n exit2();\n return value;\n}\nhtml.peek = htmlPeek;\nfunction html(node2) {\n return node2.value || \"\";\n}\nfunction htmlPeek() {\n return \"<\";\n}\nimage.peek = imagePeek;\nfunction image(node2, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const exit2 = state.enter(\"image\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n value += tracker.move(\n state.safe(node2.alt, { before: value, after: \"]\", ...tracker.current() })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node2.url && node2.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node2.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node2.url, {\n before: value,\n after: node2.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node2.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node2.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction imagePeek() {\n return \"!\";\n}\nimageReference.peek = imageReferencePeek;\nfunction imageReference(node2, _, state, info) {\n const type = node2.referenceType;\n const exit2 = state.enter(\"imageReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"![\");\n const alt = state.safe(node2.alt, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(alt + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node2), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !alt || alt !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction imageReferencePeek() {\n return \"!\";\n}\ninlineCode.peek = inlineCodePeek;\nfunction inlineCode(node2, _, state) {\n let value = node2.value || \"\";\n let sequence = \"`\";\n let index = -1;\n while (new RegExp(\"(^|[^`])\" + sequence + \"([^`]|$)\").test(value)) {\n sequence += \"`\";\n }\n if (/[^ \\r\\n]/.test(value) && (/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value) || /^`|`$/.test(value))) {\n value = \" \" + value + \" \";\n }\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index];\n const expression = state.compilePattern(pattern);\n let match;\n if (!pattern.atBreak) continue;\n while (match = expression.exec(value)) {\n let position = match.index;\n if (value.charCodeAt(position) === 10 && value.charCodeAt(position - 1) === 13) {\n position--;\n }\n value = value.slice(0, position) + \" \" + value.slice(match.index + 1);\n }\n }\n return sequence + value + sequence;\n}\nfunction inlineCodePeek() {\n return \"`\";\n}\nfunction formatLinkAsAutolink(node2, state) {\n const raw = toString(node2);\n return Boolean(\n !state.options.resourceLink && // If there’s a url…\n node2.url && // And there’s a no title…\n !node2.title && // And the content of `node` is a single text node…\n node2.children && node2.children.length === 1 && node2.children[0].type === \"text\" && // And if the url is the same as the content…\n (raw === node2.url || \"mailto:\" + raw === node2.url) && // And that starts w/ a protocol…\n /^[a-z][a-z+.-]+:/i.test(node2.url) && // And that doesn’t contain ASCII control codes (character escapes and\n // references don’t work), space, or angle brackets…\n !/[\\0- <>\\u007F]/.test(node2.url)\n );\n}\nlink.peek = linkPeek;\nfunction link(node2, _, state, info) {\n const quote = checkQuote(state);\n const suffix = quote === '\"' ? \"Quote\" : \"Apostrophe\";\n const tracker = state.createTracker(info);\n let exit2;\n let subexit;\n if (formatLinkAsAutolink(node2, state)) {\n const stack = state.stack;\n state.stack = [];\n exit2 = state.enter(\"autolink\");\n let value2 = tracker.move(\"<\");\n value2 += tracker.move(\n state.containerPhrasing(node2, {\n before: value2,\n after: \">\",\n ...tracker.current()\n })\n );\n value2 += tracker.move(\">\");\n exit2();\n state.stack = stack;\n return value2;\n }\n exit2 = state.enter(\"link\");\n subexit = state.enter(\"label\");\n let value = tracker.move(\"[\");\n value += tracker.move(\n state.containerPhrasing(node2, {\n before: value,\n after: \"](\",\n ...tracker.current()\n })\n );\n value += tracker.move(\"](\");\n subexit();\n if (\n // If there’s no url but there is a title…\n !node2.url && node2.title || // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node2.url)\n ) {\n subexit = state.enter(\"destinationLiteral\");\n value += tracker.move(\"<\");\n value += tracker.move(\n state.safe(node2.url, { before: value, after: \">\", ...tracker.current() })\n );\n value += tracker.move(\">\");\n } else {\n subexit = state.enter(\"destinationRaw\");\n value += tracker.move(\n state.safe(node2.url, {\n before: value,\n after: node2.title ? \" \" : \")\",\n ...tracker.current()\n })\n );\n }\n subexit();\n if (node2.title) {\n subexit = state.enter(`title${suffix}`);\n value += tracker.move(\" \" + quote);\n value += tracker.move(\n state.safe(node2.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n );\n value += tracker.move(quote);\n subexit();\n }\n value += tracker.move(\")\");\n exit2();\n return value;\n}\nfunction linkPeek(node2, _, state) {\n return formatLinkAsAutolink(node2, state) ? \"<\" : \"[\";\n}\nlinkReference.peek = linkReferencePeek;\nfunction linkReference(node2, _, state, info) {\n const type = node2.referenceType;\n const exit2 = state.enter(\"linkReference\");\n let subexit = state.enter(\"label\");\n const tracker = state.createTracker(info);\n let value = tracker.move(\"[\");\n const text2 = state.containerPhrasing(node2, {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n value += tracker.move(text2 + \"][\");\n subexit();\n const stack = state.stack;\n state.stack = [];\n subexit = state.enter(\"reference\");\n const reference = state.safe(state.associationId(node2), {\n before: value,\n after: \"]\",\n ...tracker.current()\n });\n subexit();\n state.stack = stack;\n exit2();\n if (type === \"full\" || !text2 || text2 !== reference) {\n value += tracker.move(reference + \"]\");\n } else if (type === \"shortcut\") {\n value = value.slice(0, -1);\n } else {\n value += tracker.move(\"]\");\n }\n return value;\n}\nfunction linkReferencePeek() {\n return \"[\";\n}\nfunction checkBullet(state) {\n const marker = state.options.bullet || \"*\";\n if (marker !== \"*\" && marker !== \"+\" && marker !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bullet`, expected `*`, `+`, or `-`\"\n );\n }\n return marker;\n}\nfunction checkBulletOther(state) {\n const bullet = checkBullet(state);\n const bulletOther = state.options.bulletOther;\n if (!bulletOther) {\n return bullet === \"*\" ? \"-\" : \"*\";\n }\n if (bulletOther !== \"*\" && bulletOther !== \"+\" && bulletOther !== \"-\") {\n throw new Error(\n \"Cannot serialize items with `\" + bulletOther + \"` for `options.bulletOther`, expected `*`, `+`, or `-`\"\n );\n }\n if (bulletOther === bullet) {\n throw new Error(\n \"Expected `bullet` (`\" + bullet + \"`) and `bulletOther` (`\" + bulletOther + \"`) to be different\"\n );\n }\n return bulletOther;\n}\nfunction checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || \".\";\n if (marker !== \".\" && marker !== \")\") {\n throw new Error(\n \"Cannot serialize items with `\" + marker + \"` for `options.bulletOrdered`, expected `.` or `)`\"\n );\n }\n return marker;\n}\nfunction checkRule(state) {\n const marker = state.options.rule || \"*\";\n if (marker !== \"*\" && marker !== \"-\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize rules with `\" + marker + \"` for `options.rule`, expected `*`, `-`, or `_`\"\n );\n }\n return marker;\n}\nfunction list(node2, parent, state, info) {\n const exit2 = state.enter(\"list\");\n const bulletCurrent = state.bulletCurrent;\n let bullet = node2.ordered ? checkBulletOrdered(state) : checkBullet(state);\n const bulletOther = node2.ordered ? bullet === \".\" ? \")\" : \".\" : checkBulletOther(state);\n let useDifferentMarker = parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false;\n if (!node2.ordered) {\n const firstListItem = node2.children ? node2.children[0] : void 0;\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === \"*\" || bullet === \"-\") && // Empty first list item:\n firstListItem && (!firstListItem.children || !firstListItem.children[0]) && // Directly in two other list items:\n state.stack[state.stack.length - 1] === \"list\" && state.stack[state.stack.length - 2] === \"listItem\" && state.stack[state.stack.length - 3] === \"list\" && state.stack[state.stack.length - 4] === \"listItem\" && // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 && state.indexStack[state.indexStack.length - 2] === 0 && state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true;\n }\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1;\n while (++index < node2.children.length) {\n const item = node2.children[index];\n if (item && item.type === \"listItem\" && item.children && item.children[0] && item.children[0].type === \"thematicBreak\") {\n useDifferentMarker = true;\n break;\n }\n }\n }\n }\n if (useDifferentMarker) {\n bullet = bulletOther;\n }\n state.bulletCurrent = bullet;\n const value = state.containerFlow(node2, info);\n state.bulletLastUsed = bullet;\n state.bulletCurrent = bulletCurrent;\n exit2();\n return value;\n}\nfunction checkListItemIndent(state) {\n const style = state.options.listItemIndent || \"one\";\n if (style !== \"tab\" && style !== \"one\" && style !== \"mixed\") {\n throw new Error(\n \"Cannot serialize items with `\" + style + \"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`\"\n );\n }\n return style;\n}\nfunction listItem(node2, parent, state, info) {\n const listItemIndent = checkListItemIndent(state);\n let bullet = state.bulletCurrent || checkBullet(state);\n if (parent && parent.type === \"list\" && parent.ordered) {\n bullet = (typeof parent.start === \"number\" && parent.start > -1 ? parent.start : 1) + (state.options.incrementListMarker === false ? 0 : parent.children.indexOf(node2)) + bullet;\n }\n let size = bullet.length + 1;\n if (listItemIndent === \"tab\" || listItemIndent === \"mixed\" && (parent && parent.type === \"list\" && parent.spread || node2.spread)) {\n size = Math.ceil(size / 4) * 4;\n }\n const tracker = state.createTracker(info);\n tracker.move(bullet + \" \".repeat(size - bullet.length));\n tracker.shift(size);\n const exit2 = state.enter(\"listItem\");\n const value = state.indentLines(\n state.containerFlow(node2, tracker.current()),\n map2\n );\n exit2();\n return value;\n function map2(line, index, blank) {\n if (index) {\n return (blank ? \"\" : \" \".repeat(size)) + line;\n }\n return (blank ? bullet : bullet + \" \".repeat(size - bullet.length)) + line;\n }\n}\nfunction paragraph(node2, _, state, info) {\n const exit2 = state.enter(\"paragraph\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node2, info);\n subexit();\n exit2();\n return value;\n}\nconst phrasing = (\n /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n convert([\n \"break\",\n \"delete\",\n \"emphasis\",\n // To do: next major: removed since footnotes were added to GFM.\n \"footnote\",\n \"footnoteReference\",\n \"image\",\n \"imageReference\",\n \"inlineCode\",\n // Enabled by `mdast-util-math`:\n \"inlineMath\",\n \"link\",\n \"linkReference\",\n // Enabled by `mdast-util-mdx`:\n \"mdxJsxTextElement\",\n // Enabled by `mdast-util-mdx`:\n \"mdxTextExpression\",\n \"strong\",\n \"text\",\n // Enabled by `mdast-util-directive`:\n \"textDirective\"\n ])\n);\nfunction root(node2, _, state, info) {\n const hasPhrasing = node2.children.some(function(d) {\n return phrasing(d);\n });\n const fn = hasPhrasing ? state.containerPhrasing : state.containerFlow;\n return fn.call(state, node2, info);\n}\nfunction checkStrong(state) {\n const marker = state.options.strong || \"*\";\n if (marker !== \"*\" && marker !== \"_\") {\n throw new Error(\n \"Cannot serialize strong with `\" + marker + \"` for `options.strong`, expected `*`, or `_`\"\n );\n }\n return marker;\n}\nstrong.peek = strongPeek;\nfunction strong(node2, _, state, info) {\n const marker = checkStrong(state);\n const exit2 = state.enter(\"strong\");\n const tracker = state.createTracker(info);\n let value = tracker.move(marker + marker);\n value += tracker.move(\n state.containerPhrasing(node2, {\n before: value,\n after: marker,\n ...tracker.current()\n })\n );\n value += tracker.move(marker + marker);\n exit2();\n return value;\n}\nfunction strongPeek(_, _1, state) {\n return state.options.strong || \"*\";\n}\nfunction text$1(node2, _, state, info) {\n return state.safe(node2.value, info);\n}\nfunction checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3;\n if (repetition < 3) {\n throw new Error(\n \"Cannot serialize rules with repetition `\" + repetition + \"` for `options.ruleRepetition`, expected `3` or more\"\n );\n }\n return repetition;\n}\nfunction thematicBreak(_, _1, state) {\n const value = (checkRule(state) + (state.options.ruleSpaces ? \" \" : \"\")).repeat(checkRuleRepetition(state));\n return state.options.ruleSpaces ? value.slice(0, -1) : value;\n}\nconst handle = {\n blockquote,\n break: hardBreak,\n code: code$1,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text: text$1,\n thematicBreak\n};\nfunction gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n };\n}\nfunction enterTable(token) {\n const align = token._align;\n this.enter(\n {\n type: \"table\",\n align: align.map(function(d) {\n return d === \"none\" ? null : d;\n }),\n children: []\n },\n token\n );\n this.data.inTable = true;\n}\nfunction exitTable(token) {\n this.exit(token);\n this.data.inTable = void 0;\n}\nfunction enterRow(token) {\n this.enter({ type: \"tableRow\", children: [] }, token);\n}\nfunction exit(token) {\n this.exit(token);\n}\nfunction enterCell(token) {\n this.enter({ type: \"tableCell\", children: [] }, token);\n}\nfunction exitCodeText(token) {\n let value = this.resume();\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace);\n }\n const node2 = this.stack[this.stack.length - 1];\n ok$1(node2.type === \"inlineCode\");\n node2.value = value;\n this.exit(token);\n}\nfunction replace($0, $1) {\n return $1 === \"|\" ? $1 : $0;\n}\nfunction gfmTableToMarkdown(options) {\n const settings = options || {};\n const padding = settings.tableCellPadding;\n const alignDelimiters = settings.tablePipeAlign;\n const stringLength = settings.stringLength;\n const around = padding ? \" \" : \"|\";\n return {\n unsafe: [\n { character: \"\\r\", inConstruct: \"tableCell\" },\n { character: \"\\n\", inConstruct: \"tableCell\" },\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n { atBreak: true, character: \"|\", after: \"[\t :-]\" },\n // A pipe in a cell must be encoded.\n { character: \"|\", inConstruct: \"tableCell\" },\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n { atBreak: true, character: \":\", after: \"-\" },\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n { atBreak: true, character: \"-\", after: \"[:|-]\" }\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n };\n function handleTable(node2, _, state, info) {\n return serializeData(handleTableAsData(node2, state, info), node2.align);\n }\n function handleTableRow(node2, _, state, info) {\n const row = handleTableRowAsData(node2, state, info);\n const value = serializeData([row]);\n return value.slice(0, value.indexOf(\"\\n\"));\n }\n function handleTableCell(node2, _, state, info) {\n const exit2 = state.enter(\"tableCell\");\n const subexit = state.enter(\"phrasing\");\n const value = state.containerPhrasing(node2, {\n ...info,\n before: around,\n after: around\n });\n subexit();\n exit2();\n return value;\n }\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n });\n }\n function handleTableAsData(node2, state, info) {\n const children = node2.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"table\");\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info);\n }\n subexit();\n return result;\n }\n function handleTableRowAsData(node2, state, info) {\n const children = node2.children;\n let index = -1;\n const result = [];\n const subexit = state.enter(\"tableRow\");\n while (++index < children.length) {\n result[index] = handleTableCell(children[index], node2, state, info);\n }\n subexit();\n return result;\n }\n function inlineCodeWithTable(node2, parent, state) {\n let value = handle.inlineCode(node2, parent, state);\n if (state.stack.includes(\"tableCell\")) {\n value = value.replace(/\\|/g, \"\\\\$&\");\n }\n return value;\n }\n}\nfunction gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n };\n}\nfunction gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{ atBreak: true, character: \"-\", after: \"[:|-]\" }],\n handlers: { listItem: listItemWithTaskListItem }\n };\n}\nfunction exitCheck(token) {\n const node2 = this.stack[this.stack.length - 2];\n ok$1(node2.type === \"listItem\");\n node2.checked = token.type === \"taskListCheckValueChecked\";\n}\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2];\n if (parent && parent.type === \"listItem\" && typeof parent.checked === \"boolean\") {\n const node2 = this.stack[this.stack.length - 1];\n ok$1(node2.type === \"paragraph\");\n const head = node2.children[0];\n if (head && head.type === \"text\") {\n const siblings = parent.children;\n let index = -1;\n let firstParaghraph;\n while (++index < siblings.length) {\n const sibling = siblings[index];\n if (sibling.type === \"paragraph\") {\n firstParaghraph = sibling;\n break;\n }\n }\n if (firstParaghraph === node2) {\n head.value = head.value.slice(1);\n if (head.value.length === 0) {\n node2.children.shift();\n } else if (node2.position && head.position && typeof head.position.start.offset === \"number\") {\n head.position.start.column++;\n head.position.start.offset++;\n node2.position.start = Object.assign({}, head.position.start);\n }\n }\n }\n }\n this.exit(token);\n}\nfunction listItemWithTaskListItem(node2, parent, state, info) {\n const head = node2.children[0];\n const checkable = typeof node2.checked === \"boolean\" && head && head.type === \"paragraph\";\n const checkbox = \"[\" + (node2.checked ? \"x\" : \" \") + \"] \";\n const tracker = state.createTracker(info);\n if (checkable) {\n tracker.move(checkbox);\n }\n let value = handle.listItem(node2, parent, state, {\n ...info,\n ...tracker.current()\n });\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check);\n }\n return value;\n function check($0) {\n return $0 + checkbox;\n }\n}\nfunction gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ];\n}\nfunction gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n };\n}\nfunction splice(list2, start, remove, items) {\n const end = list2.length;\n let chunkStart = 0;\n let parameters;\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n if (items.length < 1e4) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n list2.splice(...parameters);\n } else {\n if (remove) list2.splice(start, remove);\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 1e4);\n parameters.unshift(start, 0);\n list2.splice(...parameters);\n chunkStart += 1e4;\n start += 1e4;\n }\n }\n}\nconst hasOwnProperty = {}.hasOwnProperty;\nfunction combineExtensions(extensions) {\n const all2 = {};\n let index = -1;\n while (++index < extensions.length) {\n syntaxExtension(all2, extensions[index]);\n }\n return all2;\n}\nfunction syntaxExtension(all2, extension) {\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all2, hook) ? all2[hook] : void 0;\n const left = maybe || (all2[hook] = {});\n const right = extension[hook];\n let code2;\n if (right) {\n for (code2 in right) {\n if (!hasOwnProperty.call(left, code2)) left[code2] = [];\n const value = right[code2];\n constructs(\n // @ts-expect-error Looks like a list.\n left[code2],\n Array.isArray(value) ? value : value ? [value] : []\n );\n }\n }\n }\n}\nfunction constructs(existing, list2) {\n let index = -1;\n const before = [];\n while (++index < list2.length) {\n (list2[index].add === \"after\" ? existing : before).push(list2[index]);\n }\n splice(existing, 0, 0, before);\n}\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\nconst text = {};\nfunction gfmAutolinkLiteral() {\n return {\n text\n };\n}\nlet code = 48;\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;\n else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\nfunction tokenizeEmailAutolink(effects, ok2, nok) {\n const self = this;\n let dot;\n let data;\n return start;\n function start(code2) {\n if (!gfmAtext(code2) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkEmail\");\n return atext(code2);\n }\n function atext(code2) {\n if (gfmAtext(code2)) {\n effects.consume(code2);\n return atext;\n }\n if (code2 === 64) {\n effects.consume(code2);\n return emailDomain;\n }\n return nok(code2);\n }\n function emailDomain(code2) {\n if (code2 === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code2);\n }\n if (code2 === 45 || code2 === 95 || asciiAlphanumeric(code2)) {\n data = true;\n effects.consume(code2);\n return emailDomain;\n }\n return emailDomainAfter(code2);\n }\n function emailDomainDot(code2) {\n effects.consume(code2);\n dot = true;\n return emailDomain;\n }\n function emailDomainAfter(code2) {\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit(\"literalAutolinkEmail\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n return nok(code2);\n }\n}\nfunction tokenizeWwwAutolink(effects, ok2, nok) {\n const self = this;\n return wwwStart;\n function wwwStart(code2) {\n if (code2 !== 87 && code2 !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code2);\n }\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkWww\");\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code2);\n }\n function wwwAfter(code2) {\n effects.exit(\"literalAutolinkWww\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeProtocolAutolink(effects, ok2, nok) {\n const self = this;\n let buffer = \"\";\n let seen = false;\n return protocolStart;\n function protocolStart(code2) {\n if ((code2 === 72 || code2 === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter(\"literalAutolink\");\n effects.enter(\"literalAutolinkHttp\");\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n return nok(code2);\n }\n function protocolPrefixInside(code2) {\n if (asciiAlpha(code2) && buffer.length < 5) {\n buffer += String.fromCodePoint(code2);\n effects.consume(code2);\n return protocolPrefixInside;\n }\n if (code2 === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === \"http\" || protocol === \"https\") {\n effects.consume(code2);\n return protocolSlashesInside;\n }\n }\n return nok(code2);\n }\n function protocolSlashesInside(code2) {\n if (code2 === 47) {\n effects.consume(code2);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code2);\n }\n function afterProtocol(code2) {\n return code2 === null || asciiControl(code2) || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || unicodePunctuation(code2) ? nok(code2) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code2);\n }\n function protocolAfter(code2) {\n effects.exit(\"literalAutolinkHttp\");\n effects.exit(\"literalAutolink\");\n return ok2(code2);\n }\n}\nfunction tokenizeWwwPrefix(effects, ok2, nok) {\n let size = 0;\n return wwwPrefixInside;\n function wwwPrefixInside(code2) {\n if ((code2 === 87 || code2 === 119) && size < 3) {\n size++;\n effects.consume(code2);\n return wwwPrefixInside;\n }\n if (code2 === 46 && size === 3) {\n effects.consume(code2);\n return wwwPrefixAfter;\n }\n return nok(code2);\n }\n function wwwPrefixAfter(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction tokenizeDomain(effects, ok2, nok) {\n let underscoreInLastSegment;\n let underscoreInLastLastSegment;\n let seen;\n return domainInside;\n function domainInside(code2) {\n if (code2 === 46 || code2 === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== 45 && unicodePunctuation(code2)) {\n return domainAfter(code2);\n }\n seen = true;\n effects.consume(code2);\n return domainInside;\n }\n function domainAtPunctuation(code2) {\n if (code2 === 95) {\n underscoreInLastSegment = true;\n } else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = void 0;\n }\n effects.consume(code2);\n return domainInside;\n }\n function domainAfter(code2) {\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code2);\n }\n return ok2(code2);\n }\n}\nfunction tokenizePath(effects, ok2) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n function pathInside(code2) {\n if (code2 === 40) {\n sizeOpen++;\n effects.consume(code2);\n return pathInside;\n }\n if (code2 === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code2);\n }\n if (code2 === 33 || code2 === 34 || code2 === 38 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 60 || code2 === 63 || code2 === 93 || code2 === 95 || code2 === 126) {\n return effects.check(trail, ok2, pathAtPunctuation)(code2);\n }\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n effects.consume(code2);\n return pathInside;\n }\n function pathAtPunctuation(code2) {\n if (code2 === 41) {\n sizeClose++;\n }\n effects.consume(code2);\n return pathInside;\n }\n}\nfunction tokenizeTrail(effects, ok2, nok) {\n return trail2;\n function trail2(code2) {\n if (code2 === 33 || code2 === 34 || code2 === 39 || code2 === 41 || code2 === 42 || code2 === 44 || code2 === 46 || code2 === 58 || code2 === 59 || code2 === 63 || code2 === 95 || code2 === 126) {\n effects.consume(code2);\n return trail2;\n }\n if (code2 === 38) {\n effects.consume(code2);\n return trailCharRefStart;\n }\n if (code2 === 93) {\n effects.consume(code2);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code2 === 60 || // So is whitespace.\n code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)\n ) {\n return ok2(code2);\n }\n return nok(code2);\n }\n function trailBracketAfter(code2) {\n if (code2 === null || code2 === 40 || code2 === 91 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return ok2(code2);\n }\n return trail2(code2);\n }\n function trailCharRefStart(code2) {\n return asciiAlpha(code2) ? trailCharRefInside(code2) : nok(code2);\n }\n function trailCharRefInside(code2) {\n if (code2 === 59) {\n effects.consume(code2);\n return trail2;\n }\n if (asciiAlpha(code2)) {\n effects.consume(code2);\n return trailCharRefInside;\n }\n return nok(code2);\n }\n}\nfunction tokenizeEmailDomainDotTrail(effects, ok2, nok) {\n return start;\n function start(code2) {\n effects.consume(code2);\n return after;\n }\n function after(code2) {\n return asciiAlphanumeric(code2) ? nok(code2) : ok2(code2);\n }\n}\nfunction previousWww(code2) {\n return code2 === null || code2 === 40 || code2 === 42 || code2 === 95 || code2 === 91 || code2 === 93 || code2 === 126 || markdownLineEndingOrSpace(code2);\n}\nfunction previousProtocol(code2) {\n return !asciiAlpha(code2);\n}\nfunction previousEmail(code2) {\n return !(code2 === 47 || gfmAtext(code2));\n}\nfunction gfmAtext(code2) {\n return code2 === 43 || code2 === 45 || code2 === 46 || code2 === 95 || asciiAlphanumeric(code2);\n}\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === \"labelLink\" || token.type === \"labelImage\") && !token._balanced) {\n result = true;\n break;\n }\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}\nfunction classifyCharacter(code2) {\n if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {\n return 1;\n }\n if (unicodePunctuation(code2)) {\n return 2;\n }\n}\nfunction resolveAll(constructs2, events, context) {\n const called = [];\n let index = -1;\n while (++index < constructs2.length) {\n const resolve = constructs2[index].resolveAll;\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}\nfunction factorySpace(effects, ok2, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n function start(code2) {\n if (markdownSpace(code2)) {\n effects.enter(type);\n return prefix(code2);\n }\n return ok2(code2);\n }\n function prefix(code2) {\n if (markdownSpace(code2) && size++ < limit) {\n effects.consume(code2);\n return prefix;\n }\n effects.exit(type);\n return ok2(code2);\n }\n}\nconst blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n};\nfunction tokenizeBlankLine(effects, ok2, nok) {\n return start;\n function start(code2) {\n return markdownSpace(code2) ? factorySpace(effects, after, \"linePrefix\")(code2) : after(code2);\n }\n function after(code2) {\n return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);\n }\n}\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\nfunction gfmFootnote() {\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: \"after\",\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\nfunction tokenizePotentialGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let labelStart;\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n if (token.type === \"gfmFootnoteCall\" || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n function start(code2) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code2);\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n );\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return ok2(code2);\n }\n}\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === \"enter\") {\n events[index][1];\n break;\n }\n }\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = \"gfmFootnoteCallLabelMarker\";\n const call = {\n type: \"gfmFootnoteCall\",\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const marker = {\n type: \"gfmFootnoteCallMarker\",\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n const string = {\n type: \"gfmFootnoteCallString\",\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n const chunk = {\n type: \"chunkString\",\n contentType: \"string\",\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n [\"enter\", call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n [\"enter\", marker, context],\n [\"exit\", marker, context],\n // Everything in between.\n [\"enter\", string, context],\n [\"enter\", chunk, context],\n [\"exit\", chunk, context],\n [\"exit\", string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n [\"exit\", call, context]\n ];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\nfunction tokenizeGfmFootnoteCall(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteCall\");\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n return callStart;\n }\n function callStart(code2) {\n if (code2 !== 94) return nok(code2);\n effects.enter(\"gfmFootnoteCallMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallMarker\");\n effects.enter(\"gfmFootnoteCallString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return callData;\n }\n function callData(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteCallString\");\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code2);\n }\n effects.enter(\"gfmFootnoteCallLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteCallLabelMarker\");\n effects.exit(\"gfmFootnoteCall\");\n return ok2;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? callEscape : callData;\n }\n function callEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return callData;\n }\n return callData(code2);\n }\n}\nfunction tokenizeDefinitionStart(effects, ok2, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let identifier;\n let size = 0;\n let data;\n return start;\n function start(code2) {\n effects.enter(\"gfmFootnoteDefinition\")._container = true;\n effects.enter(\"gfmFootnoteDefinitionLabel\");\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n return labelAtMarker;\n }\n function labelAtMarker(code2) {\n if (code2 === 94) {\n effects.enter(\"gfmFootnoteDefinitionMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionMarker\");\n effects.enter(\"gfmFootnoteDefinitionLabelString\");\n effects.enter(\"chunkString\").contentType = \"string\";\n return labelInside;\n }\n return nok(code2);\n }\n function labelInside(code2) {\n if (\n // Too long.\n size > 999 || // Closing brace with nothing.\n code2 === 93 && !data || // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code2 === null || code2 === 91 || markdownLineEndingOrSpace(code2)\n ) {\n return nok(code2);\n }\n if (code2 === 93) {\n effects.exit(\"chunkString\");\n const token = effects.exit(\"gfmFootnoteDefinitionLabelString\");\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter(\"gfmFootnoteDefinitionLabelMarker\");\n effects.consume(code2);\n effects.exit(\"gfmFootnoteDefinitionLabelMarker\");\n effects.exit(\"gfmFootnoteDefinitionLabel\");\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code2)) {\n data = true;\n }\n size++;\n effects.consume(code2);\n return code2 === 92 ? labelEscape : labelInside;\n }\n function labelEscape(code2) {\n if (code2 === 91 || code2 === 92 || code2 === 93) {\n effects.consume(code2);\n size++;\n return labelInside;\n }\n return labelInside(code2);\n }\n function labelAfter(code2) {\n if (code2 === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code2);\n effects.exit(\"definitionMarker\");\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n return factorySpace(\n effects,\n whitespaceAfter,\n \"gfmFootnoteDefinitionWhitespace\"\n );\n }\n return nok(code2);\n }\n function whitespaceAfter(code2) {\n return ok2(code2);\n }\n}\nfunction tokenizeDefinitionContinuation(effects, ok2, nok) {\n return effects.check(blankLine, ok2, effects.attempt(indent, ok2, nok));\n}\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit(\"gfmFootnoteDefinition\");\n}\nfunction tokenizeIndent(effects, ok2, nok) {\n const self = this;\n return factorySpace(\n effects,\n afterPrefix,\n \"gfmFootnoteDefinitionIndent\",\n 4 + 1\n );\n function afterPrefix(code2) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"gfmFootnoteDefinitionIndent\" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok2(code2) : nok(code2);\n }\n}\nfunction gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === void 0) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n while (++index < events.length) {\n if (events[index][0] === \"enter\" && events[index][1].type === \"strikethroughSequenceTemporary\" && events[index][1]._close) {\n let open = index;\n while (open--) {\n if (events[open][0] === \"exit\" && events[open][1].type === \"strikethroughSequenceTemporary\" && events[open][1]._open && // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = \"strikethroughSequence\";\n events[open][1].type = \"strikethroughSequence\";\n const strikethrough = {\n type: \"strikethrough\",\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n const text2 = {\n type: \"strikethroughText\",\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n const nextEvents = [\n [\"enter\", strikethrough, context],\n [\"enter\", events[open][1], context],\n [\"exit\", events[open][1], context],\n [\"enter\", text2, context]\n ];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n );\n }\n splice(nextEvents, nextEvents.length, 0, [\n [\"exit\", text2, context],\n [\"enter\", events[index][1], context],\n [\"exit\", events[index][1], context],\n [\"exit\", strikethrough, context]\n ]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === \"strikethroughSequenceTemporary\") {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n function tokenizeStrikethrough(effects, ok2, nok) {\n const previous2 = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n function start(code2) {\n if (previous2 === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code2);\n }\n effects.enter(\"strikethroughSequenceTemporary\");\n return more(code2);\n }\n function more(code2) {\n const before = classifyCharacter(previous2);\n if (code2 === 126) {\n if (size > 1) return nok(code2);\n effects.consume(code2);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code2);\n const token = effects.exit(\"strikethroughSequenceTemporary\");\n const after = classifyCharacter(code2);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok2(code2);\n }\n }\n}\nclass EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n this.map = [];\n }\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add);\n }\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function(a, b) {\n return a[0] - b[0];\n });\n if (this.map.length === 0) {\n return;\n }\n let index = this.map.length;\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(\n events.slice(this.map[index][0] + this.map[index][1]),\n this.map[index][2]\n );\n events.length = this.map[index][0];\n }\n vecs.push([...events]);\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n events.push(...slice);\n slice = vecs.pop();\n }\n this.map.length = 0;\n }\n}\nfunction addImpl(editMap, at, remove, add) {\n let index = 0;\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n editMap.map[index][2].push(...add);\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\nfunction gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === \"enter\") {\n if (event[1].type === \"tableContent\") {\n align.push(\n events[index + 1][1].type === \"tableDelimiterMarker\" ? \"left\" : \"none\"\n );\n }\n } else if (event[1].type === \"tableContent\") {\n if (events[index - 1][1].type === \"tableDelimiterMarker\") {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === \"left\" ? \"center\" : \"right\";\n }\n } else if (event[1].type === \"tableDelimiterRow\") {\n break;\n }\n } else if (event[0] === \"enter\" && event[1].type === \"tableDelimiterRow\") {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}\nfunction gfmTable() {\n return {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\nfunction tokenizeTable(effects, ok2, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n let seen;\n return start;\n function start(code2) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" || // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\")\n index--;\n else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === \"tableHead\" || tail === \"tableRow\" ? bodyRowStart : headRowBefore;\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n return next(code2);\n }\n function headRowBefore(code2) {\n effects.enter(\"tableHead\");\n effects.enter(\"tableRow\");\n return headRowStart(code2);\n }\n function headRowStart(code2) {\n if (code2 === 124) {\n return headRowBreak(code2);\n }\n seen = true;\n sizeB += 1;\n return headRowBreak(code2);\n }\n function headRowBreak(code2) {\n if (code2 === null) {\n return nok(code2);\n }\n if (markdownLineEnding(code2)) {\n if (sizeB > 1) {\n sizeB = 0;\n self.interrupt = true;\n effects.exit(\"tableRow\");\n effects.enter(\"lineEnding\");\n effects.consume(code2);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n return nok(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, headRowBreak, \"whitespace\")(code2);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n size += 1;\n }\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n seen = true;\n return headRowBreak;\n }\n effects.enter(\"data\");\n return headRowData(code2);\n }\n function headRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return headRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? headRowEscape : headRowData;\n }\n function headRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return headRowData;\n }\n return headRowData(code2);\n }\n function headDelimiterStart(code2) {\n self.interrupt = false;\n if (self.parser.lazy[self.now().line]) {\n return nok(code2);\n }\n effects.enter(\"tableDelimiterRow\");\n seen = false;\n if (markdownSpace(code2)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n \"linePrefix\",\n self.parser.constructs.disable.null.includes(\"codeIndented\") ? void 0 : 4\n )(code2);\n }\n return headDelimiterBefore(code2);\n }\n function headDelimiterBefore(code2) {\n if (code2 === 45 || code2 === 58) {\n return headDelimiterValueBefore(code2);\n }\n if (code2 === 124) {\n seen = true;\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return headDelimiterCellBefore;\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterCellBefore(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code2);\n }\n return headDelimiterValueBefore(code2);\n }\n function headDelimiterValueBefore(code2) {\n if (code2 === 58) {\n sizeB += 1;\n seen = true;\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterLeftAlignmentAfter;\n }\n if (code2 === 45) {\n sizeB += 1;\n return headDelimiterLeftAlignmentAfter(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n return headDelimiterCellAfter(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterLeftAlignmentAfter(code2) {\n if (code2 === 45) {\n effects.enter(\"tableDelimiterFiller\");\n return headDelimiterFiller(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterFiller(code2) {\n if (code2 === 45) {\n effects.consume(code2);\n return headDelimiterFiller;\n }\n if (code2 === 58) {\n seen = true;\n effects.exit(\"tableDelimiterFiller\");\n effects.enter(\"tableDelimiterMarker\");\n effects.consume(code2);\n effects.exit(\"tableDelimiterMarker\");\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit(\"tableDelimiterFiller\");\n return headDelimiterRightAlignmentAfter(code2);\n }\n function headDelimiterRightAlignmentAfter(code2) {\n if (markdownSpace(code2)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code2);\n }\n return headDelimiterCellAfter(code2);\n }\n function headDelimiterCellAfter(code2) {\n if (code2 === 124) {\n return headDelimiterBefore(code2);\n }\n if (code2 === null || markdownLineEnding(code2)) {\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code2);\n }\n effects.exit(\"tableDelimiterRow\");\n effects.exit(\"tableHead\");\n return ok2(code2);\n }\n return headDelimiterNok(code2);\n }\n function headDelimiterNok(code2) {\n return nok(code2);\n }\n function bodyRowStart(code2) {\n effects.enter(\"tableRow\");\n return bodyRowBreak(code2);\n }\n function bodyRowBreak(code2) {\n if (code2 === 124) {\n effects.enter(\"tableCellDivider\");\n effects.consume(code2);\n effects.exit(\"tableCellDivider\");\n return bodyRowBreak;\n }\n if (code2 === null || markdownLineEnding(code2)) {\n effects.exit(\"tableRow\");\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code2);\n }\n effects.enter(\"data\");\n return bodyRowData(code2);\n }\n function bodyRowData(code2) {\n if (code2 === null || code2 === 124 || markdownLineEndingOrSpace(code2)) {\n effects.exit(\"data\");\n return bodyRowBreak(code2);\n }\n effects.consume(code2);\n return code2 === 92 ? bodyRowEscape : bodyRowData;\n }\n function bodyRowEscape(code2) {\n if (code2 === 92 || code2 === 124) {\n effects.consume(code2);\n return bodyRowData;\n }\n return bodyRowData(code2);\n }\n}\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n let rowKind = 0;\n let lastCell = [0, 0, 0, 0];\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n let currentTable;\n let currentBody;\n let currentCell;\n const map2 = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === \"enter\") {\n if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = false;\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n currentBody = void 0;\n lastTableEnd = 0;\n }\n currentTable = {\n type: \"table\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentTable, context]]);\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n inFirstCellAwaitingPipe = true;\n currentCell = void 0;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: \"tableBody\",\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map2.add(index, 0, [[\"enter\", currentBody, context]]);\n }\n rowKind = token.type === \"tableDelimiterRow\" ? 2 : currentBody ? 3 : 1;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n inFirstCellAwaitingPipe = false;\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === \"tableCellDivider\") {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n void 0,\n currentCell\n );\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n } else if (token.type === \"tableHead\") {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === \"tableRow\" || token.type === \"tableDelimiterRow\") {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(\n map2,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n );\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map2, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === \"tableDelimiterMarker\" || token.type === \"tableDelimiterFiller\")) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map2, context, lastTableEnd, currentTable, currentBody);\n }\n map2.consume(context.events);\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === \"enter\" && event[1].type === \"table\") {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\nfunction flushCell(map2, context, range, rowKind, rowEnd, previousCell) {\n const groupName = rowKind === 1 ? \"tableHeader\" : rowKind === 2 ? \"tableDelimiter\" : \"tableData\";\n const valueName = \"tableContent\";\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map2.add(range[0], 0, [[\"exit\", previousCell, context]]);\n }\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map2.add(range[1], 0, [[\"enter\", previousCell, context]]);\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map2.add(range[2], 0, [[\"enter\", valueToken, context]]);\n if (rowKind !== 2) {\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map2.add(a, b, []);\n }\n }\n map2.add(range[3] + 1, 0, [[\"exit\", valueToken, context]]);\n }\n if (rowEnd !== void 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map2.add(rowEnd, 0, [[\"exit\", previousCell, context]]);\n previousCell = void 0;\n }\n return previousCell;\n}\nfunction flushTableEnd(map2, context, index, table, tableBody) {\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push([\"exit\", tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push([\"exit\", table, context]);\n map2.add(index + 1, 0, exits);\n}\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === \"enter\" ? \"start\" : \"end\";\n return event[1][side];\n}\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n};\nfunction gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\nfunction tokenizeTasklistCheck(effects, ok2, nok) {\n const self = this;\n return open;\n function open(code2) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null || // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code2);\n }\n effects.enter(\"taskListCheck\");\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n return inside;\n }\n function inside(code2) {\n if (markdownLineEndingOrSpace(code2)) {\n effects.enter(\"taskListCheckValueUnchecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueUnchecked\");\n return close;\n }\n if (code2 === 88 || code2 === 120) {\n effects.enter(\"taskListCheckValueChecked\");\n effects.consume(code2);\n effects.exit(\"taskListCheckValueChecked\");\n return close;\n }\n return nok(code2);\n }\n function close(code2) {\n if (code2 === 93) {\n effects.enter(\"taskListCheckMarker\");\n effects.consume(code2);\n effects.exit(\"taskListCheckMarker\");\n effects.exit(\"taskListCheck\");\n return after;\n }\n return nok(code2);\n }\n function after(code2) {\n if (markdownLineEnding(code2)) {\n return ok2(code2);\n }\n if (markdownSpace(code2)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok2,\n nok\n )(code2);\n }\n return nok(code2);\n }\n}\nfunction spaceThenNonSpace(effects, ok2, nok) {\n return factorySpace(effects, after, \"whitespace\");\n function after(code2) {\n return code2 === null ? nok(code2) : ok2(code2);\n }\n}\nfunction gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ]);\n}\nconst emptyOptions = {};\nfunction remarkGfm(options) {\n const self = (\n /** @type {Processor<Root>} */\n this\n );\n const settings = options || emptyOptions;\n const data = self.data();\n const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []);\n const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []);\n const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n micromarkExtensions.push(gfm(settings));\n fromMarkdownExtensions.push(gfmFromMarkdown());\n toMarkdownExtensions.push(gfmToMarkdown(settings));\n}\nfunction remarkPlaceholder() {\n return function(ast) {\n visit(ast, (node2) => node2.type === \"text\", visitor);\n function visitor(node2, index, parent) {\n const placeholders = node2.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return u(\"text\", entry);\n }\n const [, component] = matches;\n return u(\"element\", {\n tagName: `#${component}`\n });\n });\n parent.children.splice(index, 1, ...placeholders);\n }\n };\n}\nfunction prepareTextNode({ h, context }, text2) {\n if (context.autolink) {\n text2 = parseUrl(text2);\n }\n if (Array.isArray(text2)) {\n return text2.map((entry) => {\n if (typeof entry === \"string\") {\n return entry;\n }\n const { component, props } = entry;\n const componentClass = component.name === \"NcLink\" ? void 0 : \"rich-text--component\";\n return h(component, {\n props,\n class: componentClass\n });\n });\n }\n return text2;\n}\nfunction remarkUnescape() {\n return function(tree) {\n visit(tree, (node2) => [\"text\", \"code\", \"inlineCode\"].includes(node2.type), (node2, index, parent) => {\n parent.children.splice(index, 1, {\n ...node2,\n value: node2.value.replace(/</gmi, \"<\").replace(/>/gmi, \">\")\n });\n return [SKIP$1, index + 1];\n });\n };\n}\nconst LINK_PROTOCOLS = [\"http\", \"https\", \"mailto\", \"tel\"];\nconst rehypeHighlight = ref(null);\nasync function importRehypeHighlightLibrary() {\n const module = await import(\"rehype-highlight\");\n rehypeHighlight.value = module.default;\n}\nconst _sfc_main = {\n name: \"NcRichText\",\n components: {\n NcReferenceList\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n text: {\n type: String,\n default: \"\"\n },\n arguments: {\n type: Object,\n default: () => {\n return {};\n }\n },\n referenceLimit: {\n type: Number,\n default: 0\n },\n referenceInteractive: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n referenceInteractiveOptIn: {\n type: Boolean,\n default: false\n },\n /** Provide data upfront to avoid extra http request */\n references: {\n type: Array,\n default: null\n },\n /** Provide basic Markdown syntax */\n useMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide GitHub Flavored Markdown syntax */\n useExtendedMarkdown: {\n type: Boolean,\n default: false\n },\n /** Provide event from rendered markdown inputs */\n interactive: {\n type: Boolean,\n default: false\n },\n autolink: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"interact-todo\",\n \"interact:todo\"\n ],\n data() {\n return {\n parentId: GenRandomId(5)\n };\n },\n methods: {\n renderPlaintext(h) {\n const placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n const matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n if (!matches) {\n return prepareTextNode({ h, context: this }, entry);\n }\n const argumentId = matches[1];\n const argument = this.arguments[argumentId];\n if (typeof argument === \"object\") {\n const { component, props } = argument;\n return h(component, {\n props,\n class: \"rich-text--component\"\n });\n }\n if (argument) {\n return h(\"span\", { class: \"rich-text--fallback\" }, argument);\n }\n return entry;\n });\n return h(\"div\", { class: \"rich-text--wrapper\" }, [\n h(\"div\", {}, placeholders.flat()),\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.text,\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n },\n renderMarkdown(h) {\n const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {\n autolink: this.autolink,\n useMarkdown: this.useMarkdown,\n useExtendedMarkdown: this.useExtendedMarkdown\n }).use(remarkUnescape).use(this.useExtendedMarkdown ? remarkGfm : void 0).use(breaks).use(remarkUnlinkProtocols, { except: LINK_PROTOCOLS }).use(remark2rehype, {\n handlers: {\n component(toHast, node2) {\n return toHast(node2, node2.component, { value: node2.value });\n }\n }\n }).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {\n target: \"_blank\",\n rel: [\"noopener noreferrer\"]\n }).use(rehype2react, {\n createElement: (tag, attrs, children) => {\n if (!tag.startsWith(\"#\")) {\n if ([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(tag)) {\n tag = `h${Math.min(+String(tag)[1] + 3, 6)}`;\n }\n if (this.useExtendedMarkdown) {\n if (tag === \"code\" && !rehypeHighlight.value && attrs?.attrs?.class?.includes(\"language\")) {\n importRehypeHighlightLibrary();\n }\n let nestedNode = null;\n if (tag === \"li\" && Array.isArray(children) && children[0].tag === \"input\" && children[0].data.attrs.type === \"checkbox\") {\n const [inputNode, ...labelParts] = children;\n const nestedNodeIndex = labelParts.findIndex((child) => [\"ul\", \"ol\", \"li\", \"blockquote\", \"pre\"].includes(child.tag));\n if (nestedNodeIndex !== -1) {\n nestedNode = labelParts[nestedNodeIndex];\n labelParts.splice(nestedNodeIndex);\n }\n const id = this.parentId + \"-markdown-input-\" + GenRandomId(5);\n const inputComponent = h(NcCheckboxRadioSwitch, {\n attrs: {\n ...inputNode.data.attrs,\n id,\n disabled: !this.interactive\n },\n on: {\n \"update:checked\": () => {\n this.$emit(\"interact-todo\", id);\n this.$emit(\"interact:todo\", id);\n }\n }\n }, labelParts);\n return h(tag, attrs, [inputComponent, nestedNode]);\n }\n }\n if (tag === \"a\") {\n const route = getRoute(this.$router, attrs.attrs.href);\n if (route) {\n delete attrs.attrs.href;\n delete attrs.attrs.target;\n return h(RouterLink, {\n ...attrs,\n props: {\n to: route\n }\n }, children);\n }\n }\n return h(tag, attrs, children);\n }\n const placeholder = this.arguments[tag.slice(1)];\n if (!placeholder) {\n return h(\"span\", { ...{ attrs }, ...{ class: \"rich-text--fallback\" } }, [`{${tag.slice(1)}}`]);\n }\n if (!placeholder.component) {\n return h(\"span\", attrs, [placeholder]);\n }\n return h(\n placeholder.component,\n {\n attrs,\n props: placeholder.props,\n class: \"rich-text--component\"\n },\n children\n );\n },\n prefix: false\n }).processSync(this.text.replace(/<[^>]+>/g, (match) => match.replace(/</g, \"<\")).replace(/>/gmi, \">\")).result;\n return h(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n renderedMarkdown,\n this.referenceLimit > 0 ? h(\"div\", { class: \"rich-text--reference-widget\" }, [\n h(NcReferenceList, {\n props: {\n text: this.text,\n referenceData: this.references,\n interactive: this.referenceInteractive,\n interactiveOptIn: this.referenceInteractiveOptIn\n }\n })\n ]) : null\n ]);\n }\n },\n render(h) {\n return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(h) : this.renderPlaintext(h);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"ec7a0a24\"\n);\nconst NcRichText = __component__.exports;\nexport {\n NcRichText as N,\n NcReferenceList as a\n};\n//# sourceMappingURL=NcRichText-BfK6Ybyf.mjs.map\n","import '../assets/NcRichContenteditable-BjQ4qHUO.css';\nimport debounce from \"debounce\";\nimport stringLength from \"string-length\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../Composables/useIsDarkTheme.mjs\";\nimport { g as getAvatarUrl } from \"./getAvatarUrl-IhLacDEr.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-D_kxQky5.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { e as emojiSearch, a as emojiAddRecent } from \"./emoji-BY_D0V5K.mjs\";\nimport { r as register, w as t37, D as t34, a as t, E as n } from \"./_l10n-BmKQgz1z.mjs\";\nimport { r as richEditor } from \"./index-TmAR7I2T.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport \"./legacy-MK4GvP26.mjs\";\nimport \"./NcButton-DUZTtFhr.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-CHpUHrDL.mjs\";\nimport \"./customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit\";\nimport \"./NcRichText-BfK6Ybyf.mjs\";\nimport \"./createElementId-DhjFt1I9.mjs\";\nimport \"../Components/NcEmptyContent.mjs\";\nimport \"./NcSelect-DTniMiUS.mjs\";\nimport \"../Components/NcLoadingIcon.mjs\";\nimport \"./NcTextField-CfZknuqx.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"../Components/NcModal.mjs\";\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * @deprecated Use `label` instead\n */\n title: {\n type: String,\n required: false,\n default: null\n },\n label: {\n type: String,\n required: false,\n default: null\n },\n subline: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: null\n },\n icon: {\n type: String,\n required: true\n },\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n // For backwards compatibility\n labelWithFallback() {\n return this.label || this.title;\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"autocomplete-result\" }, [_c(\"div\", { staticClass: \"autocomplete-result__icon\", class: [_vm.icon, `autocomplete-result__icon--${_vm.avatarUrl ? \"with-avatar\" : \"\"}`], style: _vm.avatarUrl ? { backgroundImage: `url(${_vm.avatarUrl})` } : null }, [_vm.status.icon ? _c(\"span\", { staticClass: \"autocomplete-result__status autocomplete-result__status--icon\" }, [_vm._v(\" \" + _vm._s(_vm.status && _vm.status.icon || \"\") + \" \")]) : _vm.status.status && _vm.status.status !== \"offline\" ? _c(\"NcUserStatusIcon\", { staticClass: \"autocomplete-result__status\", attrs: { \"status\": _vm.status.status } }) : _vm._e()], 1), _c(\"span\", { staticClass: \"autocomplete-result__content\" }, [_c(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { \"title\": _vm.labelWithFallback } }, [_vm._v(\" \" + _vm._s(_vm.labelWithFallback) + \" \")]), _vm.subline ? _c(\"span\", { staticClass: \"autocomplete-result__subline\" }, [_vm._v(\" \" + _vm._s(_vm.subline) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n \"ef14f1ec\"\n);\nconst NcAutoCompleteResult = __component__$1.exports;\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_1sdgd_12\",\n \"tribute-container\": \"_tribute-container_1sdgd_20\",\n \"tribute-container__item\": \"_tribute-container__item_1sdgd_41\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_1sdgd_55\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_1sdgd_59\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_1sdgd_65\",\n \"tribute-container-link\": \"_tribute-container-link_1sdgd_66\",\n \"tribute-item\": \"_tribute-item_1sdgd_71\",\n \"tribute-item__title\": \"_tribute-item__title_1sdgd_86\",\n \"tribute-item__icon\": \"_tribute-item__icon_1sdgd_91\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => GenRandomId(7)\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element for the menu popover\n */\n menuContainer: {\n type: Element,\n default: () => document.body\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n emits: [\n \"submit\",\n \"paste\",\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"smart-picker-submit\"\n ],\n setup() {\n const uid = GenRandomId(5);\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n model,\n // Constants\n labelId: `nc-rich-contenteditable-${uid}-label`,\n tributeId: `nc-rich-contenteditable-${uid}-tribute`,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.model,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n return stringLength(this.localValue) > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditableis true and disabled is false\n *\n * @return {boolean}\n */\n canEdit() {\n return this.contenteditable && !this.disabled;\n },\n /**\n * Proxied native event handlers without custom event handlers\n *\n * @return {Record<string, Function>}\n */\n listeners() {\n const listeners = { ...this.$listeners };\n delete listeners.paste;\n return listeners;\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n model() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.model.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.model);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.model);\n this.$refs.contenteditable.contentEditable = this.canEdit;\n },\n beforeDestroy() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `<div id=\"nc-rich-contenteditable-tribute-item-${GenRandomId(5)}\" class=\"${this.$style[\"tribute-item\"]}\" role=\"option\">${content}</div>`;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '<span class=\"hidden\"></span>',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`<span class=\"${this.$style[\"tribute-item__emoji\"]}\">${item.original.native}</span> :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(`<img class=\"${this.$style[\"tribute-item__icon\"]}\" src=\"${item.original.icon_url}\"> <span class=\"${this.$style[\"tribute-item__title\"]}\">${item.original.title}</span>`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer: this.menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smart-picker-submit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"Smart picker promise rejected\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '<span id=\"tmp-smart-picker-result-node\"></span>';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.canEdit) {\n return;\n }\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.model = text;\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"rich-contenteditable\" }, [_c(\"div\", _vm._g(_vm._b({ ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n \"rich-contenteditable__input--empty\": _vm.isEmptyValue,\n \"rich-contenteditable__input--multiline\": _vm.multiline,\n \"rich-contenteditable__input--has-label\": _vm.label,\n \"rich-contenteditable__input--overflow\": _vm.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": _vm.disabled\n }, attrs: { \"id\": _vm.id, \"contenteditable\": _vm.canEdit, \"aria-labelledby\": _vm.label ? _vm.labelId : void 0, \"aria-placeholder\": _vm.placeholder, \"aria-multiline\": \"true\", \"role\": \"textbox\", \"aria-haspopup\": \"listbox\", \"aria-autocomplete\": \"inline\", \"aria-controls\": _vm.tributeId, \"aria-expanded\": _vm.isAutocompleteOpen ? \"true\" : \"false\", \"aria-activedescendant\": _vm.autocompleteActiveId, \"title\": _vm.tooltipString }, on: { \"focus\": _vm.moveCursorToEnd, \"input\": _vm.onInput, \"compositionstart\": function($event) {\n _vm.isComposing = true;\n }, \"compositionend\": function($event) {\n _vm.isComposing = false;\n }, \"!keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.onKeyEsc.apply(null, arguments);\n }, \"keydown\": [function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n return _vm.onEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) return null;\n if (!$event.ctrlKey) return null;\n if ($event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onCtrlEnter.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }, function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"down\", 40, $event.key, [\"Down\", \"ArrowDown\"])) return null;\n if ($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey) return null;\n $event.stopPropagation();\n return _vm.onTributeArrowKeyDown.apply(null, arguments);\n }], \"paste\": _vm.onPaste, \"!keyup\": function($event) {\n $event.stopPropagation();\n $event.preventDefault();\n return _vm.onKeyUp.apply(null, arguments);\n }, \"tribute-active-true\": function($event) {\n return _vm.onTributeActive(true);\n }, \"tribute-active-false\": function($event) {\n return _vm.onTributeActive(false);\n } } }, \"div\", _vm.$attrs, false), _vm.listeners)), _vm.label ? _c(\"div\", { staticClass: \"rich-contenteditable__label\", attrs: { \"id\": _vm.labelId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nconst __cssModules = {\n \"$style\": style1\n};\nfunction _sfc_injectStyles(ctx) {\n for (var key in __cssModules) {\n this[key] = __cssModules[key];\n }\n}\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n _sfc_injectStyles,\n \"c664150f\"\n);\nconst NcRichContenteditable = __component__.exports;\nexport {\n NcAutoCompleteResult as N,\n NcRichContenteditable as a\n};\n//# sourceMappingURL=NcRichContenteditable-BQNR-AeA.mjs.map\n","import { defineComponent } from \"vue\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = defineComponent({\n name: \"NcSavingIndicatorIcon\",\n props: {\n /**\n * Specify the size of the saving icon.\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * Specify what is saved.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Set to true when saving is in progress.\n */\n saving: {\n type: Boolean,\n default: false,\n required: false\n },\n /**\n * Set to true if an error occured while saving.\n */\n error: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n emits: [\"click\"],\n computed: {\n indicatorColor() {\n return this.error ? \"var(--color-text-error, var(--color-error))\" : this.saving ? \"var(--color-primary-element)\" : \"none\";\n }\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _c(\"span\", { staticClass: \"material-design-icon\", attrs: { \"aria-label\": _vm.name, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"fill\": _vm.indicatorColor, \"d\": \"m19 15a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4z\" } }), _c(\"path\", { attrs: { \"fill\": \"currentColor\", \"d\": \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" } }, [_vm.name ? _c(\"title\", [_vm._v(_vm._s(_vm.name))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSavingIndicatorIcon = __component__.exports;\nexport {\n NcSavingIndicatorIcon as N\n};\n//# sourceMappingURL=NcSavingIndicatorIcon-U7AIamCl.mjs.map\n","import { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, k as t0, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport NcEllipsisedOption from \"../Components/NcEllipsisedOption.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DTniMiUS.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: [Number, Array, Object],\n default: void 0\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n */\n \"input\",\n /**\n * Emitted on input events of the multiselect field\n *\n * @type {number|number[]}\n */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n const noop = () => {\n };\n return {\n model,\n noop\n };\n },\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.model.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.model);\n }\n },\n propsToForward() {\n const {\n // Props handled by this component\n fetchTags,\n optionsFilter,\n passthru,\n // Props to forward\n ...propsToForward\n } = this.$props;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"Loading systemtags failed\", { error });\n }\n },\n methods: {\n handleInput(value) {\n if (this.multiple) {\n this.model = value.map((element) => element.id);\n } else {\n if (value === null) {\n this.model = null;\n } else {\n this.model = value.id;\n }\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"NcSelect\", _vm._g(_vm._b({ attrs: { \"options\": _vm.availableOptions, \"close-on-select\": !_vm.multiple, \"value\": _vm.passthru ? _vm.model : _vm.localValue }, on: { \"search\": (searchString) => _vm.search = searchString }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(option), \"search\": _vm.search } })];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(\"NcEllipsisedOption\", { attrs: { \"name\": _vm.getOptionLabel(selectedOption), \"search\": _vm.search } })];\n } }, _vm._l(_vm.$scopedSlots, function(_, name) {\n return { key: name, fn: function(data) {\n return [_vm._t(name, null, null, data)];\n } };\n })], null, true) }, \"NcSelect\", _vm.propsToForward, false), {\n ..._vm.$listeners,\n input: _vm.passthru ? _vm.$listeners.input : _vm.noop,\n \"update:modelValue\": _vm.passthru ? _vm.$listeners[\"update:modelValue\"] : _vm.handleInput,\n \"update:model-value\": _vm.passthru ? _vm.$listeners[\"update:model-value\"] : _vm.noop\n }));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcSelectTags = __component__.exports;\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-CktuFsK3.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcSelectUsers-CfOSPgtz.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcSelectUsers-CfOSPgtz.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcSelectUsers-CfOSPgtz.css';\nimport { ref, watch } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DT7XMp5c.mjs\";\nimport { N as NcSelect } from \"./NcSelect-DTniMiUS.mjs\";\nimport { r as register, j as t46, g as t16, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t16, t46);\nconst __default__ = {\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n }\n};\nconst _sfc_main = /* @__PURE__ */ Object.assign(__default__, {\n __name: \"NcSelectUsers\",\n props: {\n /**\n * `aria-label` for the clear input button\n */\n ariaLabelClearSelected: {\n type: String,\n default: t(\"Clear selected\")\n },\n /**\n * `aria-label` for the listbox element\n */\n ariaLabelListbox: {\n type: String,\n default: t(\"Options\")\n },\n /**\n * Allows to customize the `aria-label` for the deselect-option button\n * The default is \"Deselect \" + optionLabel\n *\n * @type {(optionLabel: string) => string}\n */\n ariaLabelDeselectOption: {\n type: Function,\n default: (optionLabel) => t(\"Deselect {option}\", { option: optionLabel })\n },\n /**\n * Keep the dropdown open after selecting an entry.\n */\n keepOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the component\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Callback to determine if the provided option should match the current search text.\n * Used to determine if the option should be displayed.\n *\n * By default it filters by the `displayName` and `subname` properties of the user\n * option object unless this prop is set explicitly\n */\n filterBy: {\n type: Function,\n default: null\n },\n /**\n * Input element id\n */\n inputId: {\n type: String,\n default: () => GenRandomId()\n },\n /**\n * Visible label for the input element\n *\n * @default 'Select account'\n */\n inputLabel: {\n type: String,\n default: t(\"Select account\")\n },\n /**\n * Pass true if you are using an external label.\n * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Show a loading icon.\n *\n * @default false\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Allow selection of multiple options\n *\n * @default false\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Disable automatic wrapping when selected options overflow the width.\n *\n * @default false\n */\n noWrap: {\n type: Boolean,\n default: false\n },\n /**\n * Array of users.\n *\n * @type {{displayName: string, user: string, subname?: string, iconSvg?: string, iconName?: string, isGuest?: boolean, isNoUser?: boolean}[]}\n */\n options: {\n type: Array,\n default: () => []\n },\n /**\n * Placeholder text.\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * Enable if a value is required for native form validation\n */\n required: {\n type: Boolean,\n default: false\n },\n /**\n * Currently selected value\n *\n * The `v-model` directive may be used for two-way data binding\n */\n modelValue: {\n type: Object,\n default: null\n }\n },\n emits: [\"search\", \"update:modelValue\"],\n setup(__props, { emit }) {\n const props = __props;\n const search = ref(\"\");\n watch(search, () => {\n emit(\"search\", search.value);\n });\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function localFilterBy(option, label, search2) {\n if (props.filterBy) {\n return props.filterBy;\n }\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return { __sfc: true, props, emit, search, clickableArea, gridBaseLine, avatarSize, localFilterBy, NcListItemIcon, NcSelect };\n }\n});\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(_setup.NcSelect, _vm._b({ staticClass: \"nc-select-users\", attrs: { \"filter-by\": _setup.localFilterBy, \"label\": \"displayName\" }, on: { \"search\": function($event) {\n _setup.search = $event;\n }, \"update:model-value\": function($event) {\n return _vm.$emit(\"update:modelValue\", $event);\n } }, scopedSlots: _vm._u([{ key: \"option\", fn: function(option) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": 32, \"name\": option.displayName, \"search\": _setup.search } }, \"NcListItemIcon\", option, false))];\n } }, { key: \"selected-option\", fn: function(selectedOption) {\n return [_c(_setup.NcListItemIcon, _vm._b({ attrs: { \"avatar-size\": _setup.avatarSize, \"name\": selectedOption.displayName, \"no-margin\": \"\", \"search\": _setup.search } }, \"NcListItemIcon\", selectedOption, false))];\n } }]) }, \"NcSelect\", _vm.$props, false));\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"e5d43b0e\"\n);\nconst NcSelectUsers = __component__.exports;\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-RyUVUaWQ.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsInputText-18lfGViv.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsInputText-18lfGViv.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcSettingsInputText-18lfGViv.css';\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcSettingsInputText\",\n model: {\n prop: \"value\",\n event: \"update:value\"\n },\n props: {\n /**\n * label of the select group element\n */\n label: {\n type: String,\n required: true\n },\n /**\n * hint of the select group input\n */\n hint: {\n type: String,\n default: \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * value of the select group input\n */\n modelValue: {\n type: String,\n default: \"\"\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"settings-input-text-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n /**\n * Emitted when the inputs value changes\n *\n * @type {string}\n */\n \"update:modelValue\",\n /* Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"input\",\n \"submit\",\n \"change\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\");\n return {\n model\n };\n },\n data() {\n return {\n submitTranslated: t(\"Submit\")\n };\n },\n computed: {\n /**\n * @return {string}\n */\n idSubmit() {\n return this.id + \"-submit\";\n }\n },\n methods: {\n onInput(event) {\n this.$emit(\"input\", event);\n this.model = event.target.value;\n },\n onSubmit(event) {\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n }\n },\n onChange(event) {\n this.$emit(\"change\", event);\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"form\", { ref: \"form\", attrs: { \"disabled\": _vm.disabled }, on: { \"submit\": function($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.onSubmit.apply(null, arguments);\n } } }, [_c(\"div\", { staticClass: \"input-wrapper\" }, [_c(\"label\", { staticClass: \"action-input__label\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]), _c(\"input\", { attrs: { \"id\": _vm.id, \"type\": \"text\", \"disabled\": _vm.disabled }, domProps: { \"value\": _vm.model }, on: { \"input\": _vm.onInput, \"change\": _vm.onChange } }), _c(\"input\", { staticClass: \"action-input__submit\", attrs: { \"id\": _vm.idSubmit, \"type\": \"submit\" }, domProps: { \"value\": _vm.submitTranslated } }), _vm.hint ? _c(\"p\", { staticClass: \"hint\" }, [_vm._v(\" \" + _vm._s(_vm.hint) + \" \")]) : _vm._e()])]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9938ac79\"\n);\nconst NcSettingsInputText = __component__.exports;\nexport {\n NcSettingsInputText as N\n};\n//# sourceMappingURL=NcSettingsInputText-Dtr4Rn2b.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSection-D_qeKnRb.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSection-D_qeKnRb.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcSettingsSection-D_qeKnRb.css';\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { r as register, u as t25, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon help-circle-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst HelpCircle = __component__$1.exports;\nregister(t25);\nconst [major] = loadState(\"core\", \"config\", { version: \"30.0\" }).version.split(\".\", 2) ?? [];\nconst isLegacy = major && Number.parseInt(major) < 30;\nconst _sfc_main = {\n name: \"NcSettingsSection\",\n components: {\n HelpCircle\n },\n props: {\n /**\n * The name of the settings section.\n * This is used for the headline and needs to be set.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Further informational description of the section.\n */\n description: {\n type: String,\n default: \"\"\n },\n /**\n * The URL for the documentation about this section\n */\n docUrl: {\n type: String,\n default: \"\"\n },\n /**\n * Limit the width of the setting's content\n *\n * Setting this to false allows unrestricted (width) settings content.\n * Note that the name and description have always a width limit.\n *\n * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n */\n limitWidth: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n }\n },\n data() {\n return {\n docNameTranslated: t(\"External documentation for {name}\", {\n name: this.name\n })\n };\n },\n computed: {\n forceLimitWidth() {\n return this.limitWidth || !isLegacy;\n },\n hasDescription() {\n return this.description.length > 0;\n },\n hasDocUrl() {\n return this.docUrl.length > 0;\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"settings-section\", class: { \"settings-section--limit-width\": _vm.forceLimitWidth } }, [_c(\"h2\", { staticClass: \"settings-section__name\" }, [_vm._v(\" \" + _vm._s(_vm.name) + \" \"), _vm.hasDocUrl ? _c(\"a\", { staticClass: \"settings-section__info\", attrs: { \"href\": _vm.docUrl, \"title\": _vm.docNameTranslated, \"aria-label\": _vm.docNameTranslated, \"target\": \"_blank\", \"rel\": \"noreferrer nofollow\" } }, [_c(\"HelpCircle\", { attrs: { \"size\": 20 } })], 1) : _vm._e()]), _vm.hasDescription ? _c(\"p\", { staticClass: \"settings-section__desc\" }, [_vm._v(\" \" + _vm._s(_vm.description) + \" \")]) : _vm._e(), _vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"56b92b56\"\n);\nconst NcSettingsSection = __component__.exports;\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-BniKad1K.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSelectGroup-B9FlWQVH.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSelectGroup-B9FlWQVH.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcSettingsSelectGroup-B9FlWQVH.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-DTniMiUS.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { r as register, h as t51, a as t } from \"./_l10n-BmKQgz1z.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t51);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + GenRandomId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: Array,\n default: void 0\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"input\",\n /** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\",\n \"error\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"input\");\n return {\n model\n };\n },\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: GenRandomId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.model.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.model.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n value: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.model = value;\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm.label ? _c(\"label\", { staticClass: \"hidden-visually\", attrs: { \"for\": _vm.id } }, [_vm._v(_vm._s(_vm.label))]) : _vm._e(), _c(\"NcSelect\", { attrs: { \"value\": _vm.inputValue, \"options\": _vm.groupsArray, \"placeholder\": _vm.placeholder || _vm.label, \"filter-by\": _vm.filterGroups, \"input-id\": _vm.id, \"limit\": 5, \"label\": \"displayname\", \"multiple\": true, \"close-on-select\": false, \"disabled\": _vm.disabled }, on: { \"update:model-value\": _vm.update, \"search\": _vm.onSearch } }), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.hasError, expression: \"hasError\" }], staticClass: \"select-group-error\" }, [_vm._v(\" \" + _vm._s(_vm.errorMessage) + \" \")])], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"9d59765b\"\n);\nconst NcSettingsSelectGroup = __component__.exports;\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-D4_09H0F.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcTextArea-B6zS3CRN.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcTextArea-B6zS3CRN.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcTextArea-B6zS3CRN.css';\nimport { A as AlertCircle } from \"./AlertCircleOutline-DBxbepLy.mjs\";\nimport { C as Check } from \"./Check-BkThHPH7.mjs\";\nimport { u as useModelMigration } from \"./useModelMigration-EhAWvqDD.mjs\";\nimport { G as GenRandomId } from \"./GenRandomId-F5ebeBB_.mjs\";\nimport { i as isLegacy32 } from \"./legacy-MK4GvP26.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcTextArea\",\n components: {\n AlertCircle,\n Check\n },\n inheritAttrs: false,\n model: {\n prop: \"modelValue\",\n event: \"update:modelValue\"\n },\n props: {\n /**\n * Removed in v9 - use `modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n value: {\n type: String,\n default: void 0\n },\n /**\n * The value of the input field\n */\n modelValue: {\n type: String,\n default: void 0\n },\n /**\n * The input label, always provide one for accessibility purposes.\n * This will also be used as a placeholder unless the placeholder\n * prop is populated with a different string.\n */\n label: {\n type: String,\n default: void 0\n },\n /**\n * Pass in true if you want to use an external label. This is useful\n * if you need a label that looks different from the one provided by\n * this component\n */\n labelOutside: {\n type: Boolean,\n default: false\n },\n /**\n * The placeholder of the input. This defaults as the string that's\n * passed into the label prop. In order to remove the placeholder,\n * pass in an empty string.\n */\n placeholder: {\n type: String,\n default: void 0\n },\n /**\n * Toggles the success state of the component. Adds a checkmark icon.\n * this cannot be used together with canClear.\n */\n success: {\n type: Boolean,\n default: false\n },\n /**\n * Toggles the error state of the component. Adds an error icon.\n * this cannot be used together with canClear.\n */\n error: {\n type: Boolean,\n default: false\n },\n /**\n * Additional helper text message\n *\n * This will be displayed beneath the input field. In case the field is\n * also marked as having an error, the text will be displayed in red.\n */\n helperText: {\n type: String,\n default: \"\"\n },\n /**\n * Disable the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Class to add to the input field.\n * Necessary to use NcInputField in the NcActionInput component.\n */\n inputClass: {\n type: [Object, String],\n default: \"\"\n },\n /**\n * The resize CSS property sets whether an element is resizable, and if\n * so, in which directions.\n */\n resize: {\n type: String,\n default: \"both\",\n validator: (value) => [\"both\", \"vertical\", \"horizontal\", \"none\"].includes(value)\n }\n },\n emits: [\n /**\n * Removed in v9 - use `update:modelValue` (`v-model`) instead\n *\n * @deprecated\n */\n \"update:value\",\n \"update:modelValue\",\n /** Same as update:modelValue for Vue 2 compatibility */\n \"update:model-value\"\n ],\n setup() {\n const model = useModelMigration(\"value\", \"update:value\", true);\n return {\n isLegacy32,\n model\n };\n },\n computed: {\n computedId() {\n return this.$attrs.id && this.$attrs.id !== \"\" ? this.$attrs.id : this.inputName;\n },\n inputName() {\n return \"input\" + GenRandomId();\n },\n hasPlaceholder() {\n return this.placeholder !== \"\" && this.placeholder !== void 0;\n },\n computedPlaceholder() {\n if (this.hasPlaceholder) {\n return this.placeholder;\n }\n if (isLegacy32) {\n return this.label;\n }\n return void 0;\n },\n isValidLabel() {\n const isValidLabel = this.label || this.labelOutside;\n if (!isValidLabel) {\n logger.warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel;\n },\n ariaDescribedby() {\n const ariaDescribedby = [];\n if (this.helperText.length > 0) {\n ariaDescribedby.push(`${this.inputName}-helper-text`);\n }\n if (this.$attrs[\"aria-describedby\"]) {\n ariaDescribedby.push(this.$attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby.join(\" \") || null;\n }\n },\n methods: {\n /**\n * Focus the input element\n *\n * @public\n */\n focus() {\n this.$refs.input.focus();\n },\n /**\n * Select all the text in the input\n *\n * @public\n */\n select() {\n this.$refs.input.select();\n },\n handleInput(event) {\n this.model = event.target.value;\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", { staticClass: \"textarea\", class: {\n \"textarea--disabled\": _vm.disabled,\n \"textarea--legacy\": _vm.isLegacy32\n } }, [_c(\"div\", { staticClass: \"textarea__main-wrapper\" }, [_c(\"textarea\", _vm._g(_vm._b({ ref: \"input\", staticClass: \"textarea__input\", class: [\n _vm.inputClass,\n {\n \"textarea__input--label-outside\": _vm.labelOutside,\n \"textarea__input--legacy\": _vm.isLegacy,\n \"textarea__input--success\": _vm.success,\n \"textarea__input--error\": _vm.error\n }\n ], style: { resize: _vm.resize }, attrs: { \"id\": _vm.computedId, \"disabled\": _vm.disabled, \"placeholder\": _vm.computedPlaceholder, \"aria-describedby\": _vm.ariaDescribedby, \"aria-live\": \"polite\" }, domProps: { \"value\": _vm.model }, on: { \"input\": _vm.handleInput } }, \"textarea\", _vm.$attrs, false), _vm.$listeners)), _vm._v(\" \"), !_vm.labelOutside && _vm.isValidLabel ? _c(\"label\", { staticClass: \"textarea__label\", attrs: { \"for\": _vm.computedId } }, [_vm._v(\" \" + _vm._s(_vm.label) + \" \")]) : _vm._e()]), _vm.helperText.length > 0 ? _c(\"p\", { staticClass: \"textarea__helper-text-message\", class: {\n \"textarea__helper-text-message--error\": _vm.error,\n \"textarea__helper-text-message--success\": _vm.success\n }, attrs: { \"id\": `${_vm.inputName}-helper-text` } }, [_vm.success ? _c(\"Check\", { staticClass: \"textarea__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm.error ? _c(\"AlertCircle\", { staticClass: \"textarea__helper-text-message__icon\", attrs: { \"size\": 18 } }) : _vm._e(), _vm._v(\" \" + _vm._s(_vm.helperText) + \" \")], 1) : _vm._e()]);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"11ea0e4b\"\n);\nconst NcTextArea = __component__.exports;\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-DHmD6-6s.mjs.map\n","import { computed, provide } from \"vue\";\nimport { I as INJECTION_KEY_THEME } from \"./constants-Bls5liKo.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n __name: \"NcThemeProvider\",\n props: {\n /**\n * Enforce the dark theme for the content.\n */\n dark: {\n type: Boolean,\n default: false\n },\n /**\n * Enforce the light theme for the content\n */\n light: {\n type: Boolean,\n default: false\n }\n },\n setup(__props) {\n const props = __props;\n const theme = computed(() => {\n if (props.dark) {\n return \"dark\";\n } else if (props.light) {\n return \"light\";\n }\n return \"\";\n });\n provide(INJECTION_KEY_THEME, theme);\n return { __sfc: true, props, theme };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", _vm._b({}, \"div\", _vm._d({}, [`data-theme-${_setup.theme}`, _setup.theme])), [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n null\n);\nconst NcThemeProvider = __component__.exports;\nexport {\n NcThemeProvider as N\n};\n//# sourceMappingURL=NcThemeProvider-25ResoIv.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcUserBubble-uIpJvFoQ.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcUserBubble-uIpJvFoQ.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcUserBubble-uIpJvFoQ.css';\nimport Vue from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-D5nljVEA.mjs\";\nimport { N as NcPopover } from \"./NcPopover-gxcAqoEb.mjs\";\nconst _sfc_main$1 = {\n name: \"NcUserBubbleDiv\"\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm._t(\"trigger\")], 2);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcUserBubbleDiv = __component__$1.exports;\nconst _sfc_main = {\n name: \"NcUserBubble\",\n components: {\n NcAvatar,\n NcPopover,\n NcUserBubbleDiv\n },\n props: {\n /**\n * Override generated avatar, can be an url or an icon class\n */\n avatarImage: {\n type: String,\n default: void 0\n },\n /**\n * Provide the user id if this is a user\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Displayed label\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Whether or not to display the user-status\n */\n showUserStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Define the whole bubble as a link\n */\n url: {\n type: String,\n default: void 0,\n validator: (url) => {\n try {\n new URL(url, url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return true;\n } catch {\n return false;\n }\n }\n },\n /**\n * Use bubble as a router-link for in-app navigation\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Default popover state. Requires the UserBubble\n * to have some content to render inside the popover\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * Use the primary colour\n */\n primary: {\n type: Boolean,\n default: false\n },\n /**\n * This is the height of the component\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * This is the margin of the avatar (size - margin = avatar size)\n */\n margin: {\n type: Number,\n default: 2\n }\n },\n emits: [\n \"click\",\n \"update:open\"\n ],\n computed: {\n /**\n * If userbubble is empty, let's NOT\n * use the Popover component\n * We need a component instead of a simple div here,\n * because otherwise the trigger template will not be shown.\n *\n * @return {string} 'Popover' or 'UserBubbleDiv'\n */\n isPopoverComponent() {\n return !this.popoverEmpty ? \"NcPopover\" : \"NcUserBubbleDiv\";\n },\n /**\n * Is the provided avatar url valid or not\n *\n * @return {boolean}\n */\n isAvatarUrl() {\n if (!this.avatarImage) {\n return false;\n }\n try {\n const url = new URL(this.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n },\n /**\n * Do we have a custom avatar or not\n *\n * @return {boolean}\n */\n isCustomAvatar() {\n return !!this.avatarImage;\n },\n hasUrl() {\n return this.url && this.url.trim() !== \"\";\n },\n isLinkComponent() {\n if (this.hasUrl) {\n return \"a\";\n } else if (this.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n },\n popoverEmpty() {\n if (\"default\" in this.$slots) {\n return false;\n }\n return true;\n },\n styles() {\n return {\n content: {\n height: this.size + \"px\",\n lineHeight: this.size + \"px\",\n borderRadius: this.size / 2 + \"px\"\n },\n avatar: {\n marginInlineStart: this.margin + \"px\"\n }\n };\n }\n },\n mounted() {\n if (!this.displayName && !this.user) {\n Vue.util.warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n },\n methods: {\n onOpenChange(state) {\n this.$emit(\"update:open\", state);\n },\n /**\n * Catch and forward click event to parent\n *\n * @param {Event} event the click event\n */\n onClick(event) {\n this.$emit(\"click\", event);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.isPopoverComponent, { tag: \"component\", staticClass: \"user-bubble__wrapper\", attrs: { \"trigger\": \"hover focus\", \"shown\": _vm.open }, on: { \"update:open\": _vm.onOpenChange }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(_vm.isLinkComponent, _vm._b({ tag: \"component\", staticClass: \"user-bubble__content\", class: { \"user-bubble__content--primary\": _vm.primary }, style: _vm.styles.content, attrs: { \"to\": _vm.to, \"href\": _vm.hasUrl ? _vm.url : null }, on: { \"click\": _vm.onClick } }, \"component\", attrs, false), [_c(\"NcAvatar\", { staticClass: \"user-bubble__avatar\", style: _vm.styles.avatar, attrs: { \"url\": _vm.isCustomAvatar && _vm.isAvatarUrl ? _vm.avatarImage : void 0, \"icon-class\": _vm.isCustomAvatar && !_vm.isAvatarUrl ? _vm.avatarImage : void 0, \"user\": _vm.user, \"display-name\": _vm.displayName, \"size\": _vm.size - _vm.margin * 2, \"disable-tooltip\": true, \"disable-menu\": true, \"show-user-status\": _vm.showUserStatus } }), _c(\"span\", { staticClass: \"user-bubble__name\" }, [_vm._v(\" \" + _vm._s(_vm.displayName || _vm.user) + \" \")]), _vm.$slots.name ? _c(\"span\", { staticClass: \"user-bubble__secondary\" }, [_vm._t(\"name\")], 2) : _vm._e()], 1)];\n } }], null, true) }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"7942d6b6\"\n);\nconst NcUserBubble = __component__.exports;\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-VLY4hn5K.mjs.map\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./Tooltip-C-QZMStp.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./Tooltip-C-QZMStp.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/Tooltip-C-QZMStp.css';\nimport { options } from \"floating-vue\";\nimport { VTooltip, options as options2 } from \"floating-vue\";\noptions.themes.tooltip.html = false;\noptions.themes.tooltip.delay = { show: 500, hide: 200 };\noptions.themes.tooltip.distance = 10;\noptions.themes.tooltip[\"arrow-padding\"] = 3;\nexport {\n VTooltip as default,\n options2 as options\n};\n//# sourceMappingURL=Tooltip.mjs.map\n","import { N as NcActionButton } from \"./chunks/NcActionButton-DykQxmXJ.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-Uol_nwut.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-D9aQuEYw.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-pjhToEAw.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-BmVR-lhZ.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-CpdT2y6O.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-Bnt0-S7Y.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-CABHzKrx.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-BKgpMjQN.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-CcWZR8rN.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-BYWvtSRw.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-BHzvRlVc.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-DUNLtTs8.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-Ci8jz_C2.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-B29zrNPr.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-CF-oMoP_.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-Cq1VIzMR.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-C089rPL6.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-D5IUeKjd.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-lRXTGAwe.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-B9L1Ih5x.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-D5nljVEA.mjs\";\nimport { u } from \"./chunks/NcAvatar-D5nljVEA.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-DZmsBU0q.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-BC6tmZfd.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-BPfsSByZ.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-DUZTtFhr.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-DAPHFb0L.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-B9weMM0Q.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-DVkGUHxL.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BPmE93Mq.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-DpzjksBk.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-DZ13sBtT.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-DDuqQeT-.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-P7Ryycqk.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-CpU37Ozq.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DL435pbV.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-DN0-J4yN.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-Dwrfiovz.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-aOCNeI-K.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-BfsPo9aC.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-TgPjfPtk.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Hk8OTuma.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CzuMmIU9.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-Bm25Odp7.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-BreCg8pX.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DUtDY_1I.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-BommrKRB.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-DT7XMp5c.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-B91RnUSh.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-gxcAqoEb.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-D0rC63G8.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-3Pu4Iqdf.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-D9-wo_xr.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { r } from \"./chunks/index-TmAR7I2T.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BQNR-AeA.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-CHpUHrDL.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-BfK6Ybyf.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-DTniMiUS.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-CfZknuqx.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-CktuFsK3.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-RyUVUaWQ.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-Dtr4Rn2b.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-BniKad1K.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-D4_09H0F.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-DHmD6-6s.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-25ResoIv.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-DgoDpdHS.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-VLY4hn5K.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-D_kxQky5.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=3527b211\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div id=\"recommendations-setting-enabled\">\n\t\t<NcCheckboxRadioSwitch id=\"recommendationsEnabledToggle\" :checked.sync=\"enabled\">\n\t\t\t{{ t('recommendations', 'Show recommendations') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { NcCheckboxRadioSwitch } from '@nextcloud/vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tcomputed: {\n\t\tenabled: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.state.enabled\n\t\t\t},\n\t\t\tset(val) {\n\t\t\t\tthis.$store.dispatch('enabled', val)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\nimport { fetchRecommendedFiles } from '../service/RecommendationService.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tstate: {\n\t\tenabled: true,\n\t\tloadedRecommendations: false,\n\t\tloading: false,\n\t\trecommendedFiles: [],\n\t},\n\tmutations: {\n\t\tenabled(state, val) {\n\t\t\tstate.enabled = val\n\t\t},\n\t\tloadedRecommendations(state, val) {\n\t\t\tstate.loadedRecommendations = val\n\t\t},\n\t\tloading(state, val) {\n\t\t\tstate.loading = val\n\t\t},\n\t\trecommendedFiles(state, val) {\n\t\t\tstate.recommendedFiles = val\n\t\t},\n\t},\n\tactions: {\n\t\t/**\n\t\t * Toggle the recommendations and fetch recommended files if required\n\t\t *\n\t\t * @async\n\t\t * @param {object} context the store context\n\t\t * @param {boolean} enabled recommendations status\n\t\t */\n\t\tasync enabled(context, enabled) {\n\t\t\tcontext.commit('enabled', enabled)\n\t\t\tawait axios.put(generateUrl('apps/recommendations/settings/enabled'), {\n\t\t\t\tvalue: enabled.toString(),\n\t\t\t})\n\t\t\tif (enabled) {\n\t\t\t\tcontext.dispatch('fetchRecommendations')\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch recommendations and current enabled setting\n\t\t *\n\t\t * @async\n\t\t * @param {object} context the store context\n\t\t * @param {boolean} [always] set to true to always get recommendations regardless of enabled setting\n\t\t */\n\t\tasync fetchRecommendations(context, always) {\n\t\t\tif (context.state.loadedRecommendations || context.state.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.commit('loading', true)\n\t\t\tconst fetched = await fetchRecommendedFiles(always)\n\n\t\t\tcontext.commit('enabled', fetched.enabled)\n\t\t\tif (fetched.recommendations) {\n\t\t\t\tcontext.commit('recommendedFiles', fetched.recommendations)\n\t\t\t\tthis.commit('loadedRecommendations', true)\n\t\t\t}\n\t\t\tthis.commit('loading', false)\n\t\t},\n\t},\n})\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport const fetchRecommendedFiles = (always) => {\n\tconst url = generateOcsUrl('apps/recommendations/api/v1/recommendations' + (always ? '/always' : ''))\n\n\treturn Axios.get(url)\n\t\t.then(resp => resp.data.ocs.data)\n}\n","/*\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue'\nimport { Header, registerFileListHeaders } from '@nextcloud/files'\n\nimport FilesRecommendations from './components/FilesRecommendations.vue'\nimport Settings from './components/Settings.vue'\nimport store from './store/store.js'\n\nconst View = Vue.extend(FilesRecommendations)\n\nconst header = new Header({\n\tid: 'recommendations',\n\torder: 90,\n\n\tenabled(folder, view) {\n\t\treturn view.id === 'files' && folder.path === '/'\n\t},\n\n\trender(el, folder, view) {\n\t\t// Load recommendations\n\t\tstore.dispatch('fetchRecommendations')\n\n\t\tnew View({\n\t\t\tname: 'RecommendationsHeader',\n\t\t\tstore,\n\t\t}).$mount(el)\n\n\t\t// Create settings\n\t\tconst SettingsView = Vue.extend(Settings)\n\t\tconst settingsElement = new SettingsView({\n\t\t\tstore,\n\t\t}).$mount().$el\n\n\t\t// Register Files App Settings\n\t\tif (OCA.Files && OCA.Files.Settings) {\n\t\t\tOCA.Files.Settings.register(new OCA.Files.Settings.Setting('recommendations', {\n\t\t\t\tel: () => { return settingsElement },\n\t\t\t}))\n\t\t}\n\t},\n\tupdated(folder, view) {},\n})\n\nregisterFileListHeaders(header)\n"],"names":["inProgress","dataWebpackPrefix","visit","hasOwnProperty","Object","prototype","hastCssPropertyMap","align","valign","height","width","visitor","node","hastName","tagName","call","undefined","properties","appendStyle","property","value","prevStyle","style","trim","test","nextStyle","module","exports","convert","type","Boolean","typeFactory","ok","anyFactory","matchesFactory","Error","key","tests","checks","results","length","index","convertAll","apply","this","arguments","visitParents","CONTINUE","SKIP","EXIT","tree","reverse","is","one","parents","subresult","result","toResult","children","min","step","all","concat","parent","indexOf","self","e","Array","isArray","t","n","defineProperty","enumerable","configurable","writable","Symbol","iterator","toString","from","TypeError","o","i","s","constructor","__esModule","default","d","a","get","r","toStringTag","VueSelect","m","_","mixins","O","l","props","autoscroll","watch","typeAheadPointer","maybeAdjustScroll","open","$nextTick","methods","$refs","dropdownMenu","getDropdownViewport","getBoundingClientRect","top","bottom","scrollTop","offsetTop","c","data","filteredOptions","resetFocusOnOptionsChange","selectable","typeAheadToLastSelected","selectedValue","typeAheadUp","typeAheadDown","typeAheadSelect","select","u","loading","mutableLoading","search","$emit","toggleLoading","p","options","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","Deselect","$createElement","_self","_c","attrs","xmlns","OpenIndicator","h","inserted","context","appendToBody","document","body","appendChild","toggle","left","window","scrollX","pageXOffset","scrollY","pageYOffset","unbindPosition","calculatePosition","unbind","parentNode","removeChild","f","keys","sort","forEach","JSON","stringify","y","b","g","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","v","getOwnPropertyDescriptors","defineProperties","components","directives","limit","Number","disabled","clearable","deselectFromDropdown","searchable","multiple","placeholder","String","transition","clearSearchOnSelect","closeOnSelect","label","ariaLabelCombobox","ariaLabelListbox","ariaLabelClearSelected","ariaLabelDeselectOption","Function","autocomplete","reduce","getOptionLabel","console","warn","getOptionKey","id","onTab","selectOnTab","isComposing","taggable","tabindex","pushTags","filterable","filterBy","toLocaleLowerCase","createOption","optionList","resetOnOptionsChange","validator","includes","clearSearchOnBlur","noDrop","inputId","dir","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","dropdownShouldOpen","keyboardFocusBorder","uid","isKeyboardNavigation","pushedTags","_value","computed","isTrackingValues","propsData","$data","searchEl","$scopedSlots","selectedOptions","querySelector","scope","searching","attributes","searchPlaceholder","readonly","role","dropdownOpen","ref","events","compositionstart","compositionend","keydown","onSearchKeyDown","keypress","onSearchKeyPress","blur","onSearchBlur","focus","onSearchFocus","input","target","spinner","noOptions","openIndicator","class","listHeader","listFooter","header","deselect","footer","childComponents","stateClasses","isValueEmpty","slice","optionExists","unshift","showClearButton","clearSelection","setInternalValueFromOptions","immediate","handler","created","$on","pushTag","map","findOptionFromReducedValue","isOptionSelected","updateValue","onAfterSelect","optionComparator","keyboardDeselect","deselectButtons","toggleDropdown","preventDefault","clearButton","some","contains","isOptionDeselectable","hasKeyboardFocusBorder","find","closeSearchOptions","maybeDeleteValue","optionAriaSelected","normalizeOptionForSlot","onEscape","mousedown","onMousedown","onMouseUp","onMouseMove","keyCode","staticClass","_t","_v","on","_l","_s","refInFor","title","stopPropagation","_k","tag","_e","option","_g","_b","name","rawName","expression","click","mouseup","mousemove","staticStyle","display","visibility","ajax","pointer","pointerScroll","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","Uint8Array","code","start","end","num","output","base64","ieee754","customInspectSymbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","allocUnsafe","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","checked","numberIsNaN","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","Math","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","error","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","super","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","msg","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","_typeof","globalThis","_exports","_inherits","subClass","superClass","create","_setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","getPrototypeOf","_createForOfIteratorHelper","allowArrayLike","it","_unsupportedIterableToArray","F","done","err","normalCompletion","didErr","next","_e2","return","minLen","_arrayLikeToArray","arr2","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_defineProperty","_classPrivateFieldInitSpec","privateMap","_checkPrivateRedeclaration","privateCollection","has","_classPrivateFieldGet","receiver","_classApplyDescriptorGet","_classExtractFieldDescriptor","_classPrivateFieldSet","_classApplyDescriptorSet","action","CancelablePromise","cancelable","isCancelablePromise","_internals","WeakMap","_promise","CancelablePromiseInternal","_ref","_ref$executor","executor","_ref$internals","internals","defaultInternals","_ref$promise","promise","Promise","resolve","reject","onCancel","onCancelList","cancel","onfulfilled","onrejected","makeCancelable","then","createCallback","catch","onfinally","runWhenCanceled","_this","finally","callback","isCanceled","callbacks","_step","_iterator","_CancelablePromiseInt","_super","iterable","makeAllCancelable","allSettled","any","race","reason","_default","onResult","_step2","_iterator2","resolvable","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","decodeURIComponent","escape","base64map","crypt","rotl","rotr","endian","randomBytes","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","triplet","charAt","imod4","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","cssWithMappingToString","item","content","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","k","url","hash","needQuotes","cssMapping","btoa","sourceMapping","debounce","function_","wait","storedContext","storedArguments","timeoutId","timestamp","run","callContext","callArguments","later","Date","now","setTimeout","debounced","arguments_","callNow","clear","clearTimeout","flush","trigger","requestAnimationFrame","cancelAnimationFrame","getTime","Anchors","Category","X","Emoji","J","EmojiData","N","EmojiIndex","R","EmojiView","$","Picker","se","Preview","G","Search","Q","Skins","Z","frequently","w","sanitize","D","store","uncompress","localStorage","update","parse","setNamespace","setHandlers","getter","setter","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","emoticons","text","short_names","added_in","getOwnPropertyNames","freeze","compressed","emojis","sheet_x","sheet_y","toFixed","pop","activity","custom","flags","foods","nature","objects","smileys","people","places","recent","symbols","C","i18n","required","color","categories","activeCategory","emits","svgs","domProps","innerHTML","backgroundColor","S","P","fromCodePoint","A","M","I","z","L","T","q","emojisToShowFilter","include","exclude","recentLength","_data","_emojisFilter","_include","_exclude","_custom","_recent","_emojis","_nativeEmojis","_emoticons","_categories","_recentCategory","_customCategory","_searchIndex","buildIndex","isCategoryNeeded","addEmoji","addCustomEmoji","hasEmoji","emoji","match","aliases","getSkin","assign","isEmojiNeeded","native","_skins","skin_variations","skin_tone","_sanitized","short_name","_emoji","_native","_skin","_set","_fallback","canRender","_canRender","cssClass","_cssClass","cssStyle","_cssStyle","_content","ariaLabel","_isCustom","_isNative","_hasEmoji","_emojiType","backgroundImage","getEmoji","imageUrl","backgroundSize","backgroundPosition","getPosition","fontSize","round","colons","skin","B","H","tooltip","fallback","U","perLine","maxSearchResults","emojiSize","defaultSkin","emojiTooltip","autoFocus","showPreview","showSearch","showCategories","showSkinTones","infiniteScroll","pickerStyles","V","W","view","emojiObject","sanitizedData","findEmoji","onClick","onMouseEnter","onMouseLeave","mouseenter","mouseleave","emojiProps","activeClass","selectedEmoji","selectedEmojiCategory","isVisible","isSearch","hasResults","emojiObjects","emojiView","onEnter","onLeave","notfound","opened","idleEmoji","skinProps","onSkinChange","emojiData","emojiShortNames","emojiEmoticons","change","K","onSearch","onArrowLeft","onArrowRight","onArrowDown","onArrowUp","emojiIndex","mounted","$el","button","composing","Y","ee","_vm","_perLine","searchEmojis","previewEmoji","previewEmojiCategoryIdx","previewEmojiIdx","scroll","filteredCategories","getCategoryComponent","updatePreviewEmoji","emojisLength","offsetHeight","te","ie","ne","re","activeSkin","customStyles","calculateWidth","previewEmojiCategory","onEmojiEnter","onEmojiLeave","onEmojiClick","createElement","overflow","position","offsetWidth","clientWidth","mergedI18n","firstEmoji","isSearching","onScroll","waitingForPaint","onScrollPaint","onAnchorClick","onTextSelect","oe","allCategories","arrowLeft","arrowRight","arrowDown","arrowUp","enter","matchHtmlRegExp","exec","html","lastIndex","substring","prefix","Events","EE","once","addListener","emitter","event","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","names","listeners","handlers","listenerCount","emit","a1","a2","a3","a4","a5","args","removeListener","removeAllListeners","off","prefixed","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","extend","copyIsArray","clone","deep","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","__spreadValues","prop","__spreadProps","__objRest","source","to","config","distance","skidding","container","boundary","instantMove","disposeTimeout","popperTriggers","strategy","preventOverflow","flip","shift","overflowPadding","arrowPadding","arrowOverflow","themes","placement","triggers","hideTriggers","delay","show","hide","handleResize","loadingContent","dropdown","autoHide","menu","$extend","getDefaultConfig","theme","themeConfig","getAllParentThemes","supportsPassive","opts","addEventListener","isIOS","navigator","userAgent","MSStream","placements","acc","base","SHOW_EVENT_MAP","hover","touch","HIDE_EVENT_MAP","removeFromArray","splice","nextFrame","shownPoppers","hidingPopper","shownPoppersByTheme","getShownPoppersByTheme","Element","defaultPropFactory","$props","PROVIDE_KEY","PrivatePopper","targetNodes","referenceNode","popperNode","shown","showGroup","ariaId","positioningDisabled","showTriggers","popperShowTriggers","popperHideTriggers","eagerMount","popperClass","computeTransformOrigin","autoMinSize","autoSize","autoMaxSize","autoBoundaryMaxSize","shiftCrossAxis","noAutoFocus","provide","parentPopper","inject","isShown","isMounted","skipTransition","classes","showFrom","showTo","hideFrom","hideTo","arrow","centerOffset","transformOrigin","shownChildren","Set","lastAutoHide","popperId","randomId","shouldMountContent","slotData","onResize","_a","hasPopperShowTriggerHover","dispose","init","$_ensureTeleport","$_computePosition","$_isDisposed","$_detachPopperNode","activated","$_autoShowHide","deactivated","beforeDestroy","skipDelay","force","lockedChild","$_pendingHide","$_scheduleShow","$_showFrameLocked","skipAiming","$_hideInProgress","$_isAimingPopper","lockedChildTimer","$_scheduleHide","$_events","$_preventShow","$_referenceNode","$_targetNodes","nodeType","ELEMENT_NODE","$_popperNode","$_innerNode","$_arrowNode","$_swapTargetAttrs","$_addEventListeners","$_removeEventListeners","$_updateParentShownChildren","options2","middleware","mainAxis","crossAxis","isPlacementAuto","startsWith","alignment","padding","element","rects","middlewareData","reference","_a2","skip","reset","maxWidth","maxHeight","$_scheduleTimer","$_applyHide","$_applyShow","$_computeDelay","$_disposeTimer","$_applyShowEffect","$_registerEventListeners","bounds","popperWrapper","parentBounds","offsetLeft","$_applyAttrsToTarget","popover","classList","remove","disposeTime","handleShow","usedByTooltip","$_registerTriggerListeners","handleHide","eventType","passive","eventMap","commonTriggers","customTrigger","filterEventType","newList","removeEventListener","$_refreshListeners","$_handleGlobalClose","closePopover","attrFrom","attrTo","el","getAttribute","removeAttribute","setAttribute","delete","referenceBounds","mouseX","right","mouseY","popperBounds","vectorX","mousePreviousX","vectorY","mousePreviousY","newVectorLength","edgeX","edgeY","lineIntersectsLine","handleGlobalMousedown","popper","popperContent","$_mouseDownContains","handleGlobalClose","preventClose","$_containsGlobalTarget","isContainingEventTarget","shouldAutoHide","closeAllPopover","parent2","getAutoHideResult","capture","x1","y1","x2","y2","x3","y3","x4","y4","uA","uB","isIE","initCompat","ua","msie","rv","edge","getInternetExplorerVersion","normalizeComponent$1","template","script2","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","originalRender","existing","clientX","clientY","__vue_script__","emitOnMount","ignoreWidth","ignoreHeight","_w","_h","emitSize","object","_resizeObject","onload","addResizeHandlers","removeResizeHandlers","compareAndNotify","contentDocument","defaultView","__vue_render__","_withStripped","__vue_component__","plugin$1","version","install","Vue2","component","GlobalVue$1","Vue","use","PrivateThemeClass","themeClass","$resetCss","getThemeClasses","__vue2_script$5","ResizeObserver","toPx","isNaN","normalizeComponent","scriptExports","render2","staticRenderFns2","functionalTemplate","injectStyles","__cssModules$5","__component__$5","transform","$event","__vue2_injectStyles$5","PrivatePopperContent","PrivatePopperMethods","__vue2_script$4","Popper","PopperContent","inheritAttrs","vPopperTheme","getTargetNodes","__cssModules$4","__component__$4","scopedSlots","_u","$attrs","$listeners","__vue2_injectStyles$4","PrivatePopperWrapper","__vue2_script$3","__cssModules$3","__component__$3","__vue2_render$2","__vue2_staticRenderFns$2","__vue2_injectStyles$3","PrivateDropdown","__vue2_script$2","__cssModules$2","__component__$2","__vue2_render$1","__vue2_staticRenderFns$1","__vue2_injectStyles$2","PrivateMenu","__vue2_script$1","__cssModules$1","__component__$1","__vue2_render","__vue2_staticRenderFns","__vue2_injectStyles$1","PrivateTooltip","__vue2_script","asyncContent","isContentAsync","finalContent","fetchContent","$_fetchId","$_isShown","$_loading","fetchId","onShow","onHide","__cssModules","__component__","__vue2_injectStyles","PrivateTooltipDirective","TARGET_CLASS","getOptions","modifiers","getPlacement","destroyTooltip","$_popper","$destroy","$_popperOldShown","oldValue","tooltipApp","otherOptions","devtools","mountTarget","$mount","createTooltip","PrivateVTooltip","addListeners","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","$_vclosepopover_touch","$_closePopoverModifiers","changedTouches","$_vclosepopover_touchPoint","firstTouch","screenY","screenX","PrivateVClosePopper","VTooltip","Dropdown","plugin","app","$_vTooltipInstalled","directive","GlobalVue","_toPrimitive","_toPropertyKey","ownKeys","_objectSpread2","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","activeFocusTraps","trapStack","trap","activeTrap","_setPausedState","trapIndex","_isManuallyPaused","isTabEvent","isKeyForward","shiftKey","isKeyBackward","valueOrHandler","_len","params","_key","getActualTarget","composedPath","internalTrapStack","createFocusTrap","elements","userOptions","doc","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","state","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","active","paused","manuallyPaused","delayInitialFocusTimer","recentNavEvent","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","findIndex","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","getInitialFocusNode","tabbableOptions","activeElement","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","nextTabbableNode","forward","nodeIdx","group","_getActiveElement","_tryFocus","preventScroll","isSelectableInput","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","_destinationGroupIndex","_destinationGroup","checkPointerDown","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","checkFocusIn","targetContained","Document","nextNode","stopImmediatePropagation","navAcrossContainers","mruContainerIdx","mruTabIdx","checkTabKey","checkKeyNav","checkEscapeKey","isEscapeEvent","checkClick","mutationObserver","MutationObserver","mutations","mutation","removedNodes","updateObservedNodes","disconnect","observe","subtree","childList","activate","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","finishDeactivation","pause","pauseOptions","unpause","unpauseOptions","updateContainerElements","containerElements","elementsAsArray","onPause","onPostPause","onUnpause","onPostUnpause","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","log","LN2","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","column","updatePosition","lines","line","Position","whitespace","errorsList","filename","silent","comments","rules","comment","declaration","decl","decls","declarations","isSlowBuffer","md5","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","assertPath","path","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","posix","cwd","resolvedPath","resolvedAbsolute","process","normalize","isAbsolute","trailingSeparator","joined","relative","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","dirname","hasRoot","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","format","pathObject","sep","root","_format","delimiter","win32","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","prependListener","prependOnceListener","binding","chdir","umask","copyProps","SafeBuffer","debug","MAX_LENGTH","MAX_SAFE_INTEGER","safeRe","parseOptions","compareIdentifiers","SemVer","loose","includePrerelease","LOOSE","FULL","raw","major","minor","patch","prerelease","build","other","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","throwErrors","er","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","NODE_DEBUG","numeric","anum","bnum","rcompareIdentifiers","looseOption","emptyOpts","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","token","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","total","utf8CheckIncomplete","global","nonNative","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","allowable_tags","tag_replacement","striptags_internal","init_context","tag_set","parse_allowable_tags","tag_buffer","depth","in_quote_char","idx","char","normalize_tag","init_streaming_mode","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","stylesInDOM","getIndexByIdentifier","modulesToDom","idCountMap","identifiers","count","indexByIdentifier","css","sourceMap","references","updater","addElementStyle","byIndex","api","newObj","lastIdentifiers","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","head","getTarget","styleElement","nonce","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","StyleToObject","hasIterator","candidateSelectors","candidateSelector","NoElement","matches","msMatchesSelector","webkitMatchesSelector","getRootNode","_element$getRootNode","ownerDocument","_isInert","lookUp","_node$getAttribute","inertAtt","getCandidates","includeContainer","candidates","querySelectorAll","_getCandidatesIteratively","elementsToCheck","assigned","assignedElements","nestedCandidates","flatten","scopeParent","getShadowRoot","validShadowRoot","shadowRootFilter","_nestedCandidates","hasTabIndex","getTabIndex","tabIndex","_node$getAttribute2","attValue","isContentEditable","sortOrderedTabbables","documentOrder","isInput","isNonTabbableRadio","isRadio","radioSet","radioScope","form","queryRadios","CSS","nodes","getCheckedRadio","isTabbableRadio","isZeroArea","_node$getBoundingClie","isHidden","displayCheck","checkVisibility","checkOpacity","opacityProperty","contentVisibilityAuto","visibilityProperty","checkVisibilityCSS","getComputedStyle","nodeUnderDetails","parentElement","originalNode","rootNode","assignedSlot","host","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","nodeRoot","nodeRootHost","attached","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isNodeAttached","getClientRects","isNodeMatchingSelectorFocusable","isHiddenInput","child","isDetailsWithSummary","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isShadowRootTabbable","shadowHostNode","_sortByOrder","regularTabbables","orderedTabbables","isScope","candidateTabindex","getSortOrderTabIndex","sortable","tabbable","focusable","isTabbable","focusableCandidateSelector","isFocusable","sources","sourceRoot","refs","childNodes","insertBefore","ssrId","DEBUG","getElementsByTagName","esModule","hsl","hsv","rgba","rgb","setAlpha","toHsl","toHsv","toHexString","toUpperCase","hex8","toHex8String","toRgb","oldHue","getAlpha","colors","colorChange","isValidHex","isValid","simpleCheckForValidColor","paletteUpperCase","isTransparent","__g","__file","__e","ceil","mode","copyright","palette","pick","handlerClick","labelText","desc","arrowOffset","labelId","labelSpanText","handleChange","handleKeyDown","onChange","swatches","hue","normalizedSwatches","isActive","hueChange","handleSwClick","entries","values","virtual","contentWindow","close","direction","pullDirection","directionClass","pointerTop","pointerLeft","clientHeight","pageX","touches","pageY","handleMouseDown","handleMouseUp","unbindEventListeners","equal","disableFields","hasResetButton","acceptLabel","cancelLabel","resetLabel","newLabel","currentLabel","saturation","alpha","currentColor","childChange","inputChange","clickCurrentColor","handleAccept","handleCancel","handleReset","bgColor","throttle","leading","trailing","checkboard","gradientColor","getContext","fillStyle","fillRect","translate","toDataURL","white","grey","bgStyle","presetColors","disableAlpha","activeColor","handlePreset","fieldsIndex","highlight","hasAlpha","toggleViews","showHighlight","hideHighlight","editableInput","defaultColors","triangle","Compact","Grayscale","Twitter","Material","Slider","Swatches","Photoshop","Sketch","Chrome","Alpha","Checkboard","EditableInput","Hue","Saturation","ColorMixin","_originalInput","_r","_roundA","_gradientType","gradientType","_ok","_tc_id","desaturate","parseFloat","CSS_UNIT","hsla","hsva","hex6","hex4","hex3","level","isDark","getBrightness","isLight","getOriginalInput","getFormat","getLuminance","toHsvString","toHslString","toHex","toHex8","toRgbString","toPercentageRgb","toPercentageRgbString","toName","toFilter","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","mix","readability","isReadable","mostReadable","includeFallbackColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","hexNames","for","background","borderColor","model","$set","documentElement","Arguments","KEY","QObject","findChild","keyFor","useSetter","useSimple","ae","isExtensible","preventExtensions","NEED","fastKey","getWeak","onFreeze","touchmove","touchstart","a100","a200","a400","a700","primary","secondary","dividers","inactive","deepPurple","lightBlue","lightGreen","amber","deepOrange","blueGrey","darkText","lightText","darkIcons","lightIcons","viewBox","maxWait","mouseover","mouseout","boxShadow","emptyObject","isUndef","isDef","isTrue","isPrimitive","isFunction","isObject","_toString","isRegExp","isValidArrayIndex","isPromise","replacer","__v_isRef","toNumber","makeMap","expectsLowerCase","isReservedAttribute","remove$2","cached","cache","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","toArray","_from","toObject","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","keysA","keysB","looseIndexOf","called","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","hasProto","inBrowser","UA","isIE9","isEdge","_isServer","isFF","nativeWatch","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","currentInstance","getCurrentInstance","proxy","setCurrentInstance","vm","_scope","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","SuppressedError","uid$2","pendingCleanupDeps","cleanupDeps","dep","subs","_pending","Dep","addSub","removeSub","depend","info","addDep","notify","targetStack","pushTarget","popTarget","arrayProto","arrayMethods","method","original","ob","__ob__","observeArray","arrayKeys","NO_INITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","vmCount","defineReactive","ssrMockReactivity","__v_skip","isRef","customSetter","observeEvenIfShallow","childOb","dependArray","newVal","isReadonly","_isVue","del","reactive","makeReactive","shallowReactive","isReactive","isShallow","__v_isShallow","__v_isReadonly","toRaw","observed","RefFlag","ref$1","createRef","shallowRef","rawValue","unref","proxyWithRefUnwrap","customRef","factory","toRefs","toRef","defaultValue","rawToReadonlyFlag","rawToShallowReadonlyFlag","createReadonly","existingFlag","existingProxy","defineReadonlyProperty","getterOrOptions","debugOptions","onlyGetter","watcher","Watcher","lazy","effect","dirty","evaluate","WATCHER","WATCHER_CB","WATCHER_GETTER","WATCHER_CLEANUP","watchEffect","doWatch","activeEffectScope","INITIAL_WATCHER_VALUE","cb","onTrack","onTrigger","cleanup","invokeWithErrorHandling","forceTrigger","isMultiSource","traverse","_isDestroyed","onCleanup","baseGetter_1","onStop","noRecurse","post","queueWatcher","_isMounted","_preWatchers","$once","teardown","EffectScope","detached","effects","cleanups","scopes","currentEffectScope","stop","fromParent","effectScope","getCurrentScope","onScopeDispose","resolveProvided","_provided","parentProvides","$parent","treatDefaultAsFactory","provides","normalizeEvent","createFnInvoker","fns","invoker","updateListeners","oldOn","createOnceHandler","cur","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","$slots","slot","resolveFilter","resolveAsset","isKeyNotMatch","expect","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","_loop_1","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","markStatic","_renderProxy","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","$key","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_q","_m","_f","_d","_p","resolveSlots","slots","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","normalSlots","prevScopedSlots","hasNormalSlots","isStable","_normalized","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","normalized","createSetupContext","_attrsProxy","syncSetupProxy","_listenersProxy","_slotsProxy","syncSetupSlots","initSlotsProxy","expose","exposed","prev","changed","defineProxyAttr","useSlots","_setupContext","currentRenderingInstance","ensureCtor","comp","getFirstComponentChild","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","createElement$1","normalizationType","alwaysNormalize","simpleNormalizeChildren","pre","createComponent","applyNS","registerDeepBindings","_createElement","handleError","hooks","errorCaptured","globalHandleError","_handled","logError","timerFunc","isUsingMicroTask","pending","flushCallbacks","copies","p_1","setImmediate","counter_1","observer","textNode_1","characterData","_resolve","useCssModule","mod","useCssVars","vars","_setupProxy","defineAsyncComponent","loader","loadingComponent","errorComponent","userOnError","suspensible","onError","pendingRequest","retries","load","thisRequest","createLifeCycle","hookName","mergeLifecycleHook","injectHook","onMounted","onBeforeUnmount","onUnmounted","defineComponent","seenObjects","_traverse","seen","isA","isFrozen","depId","target$1","uid$1","expOrFn","isRenderWatcher","_watcher","user","sync","before","deps","newDeps","depIds","newDepIds","segments","parsePath","_isBeingDestroyed","add$1","remove$1","$off","createOnceHandler$1","_target","onceHandler","updateComponentListeners","oldListeners","activeInstance","setActiveInstance","prevActiveInstance","isInInactiveTree","_inactive","activateChildComponent","direct","_directInactive","$children","callHook$1","deactivateChildComponent","setContext","prevInst","prevScope","_hasHookEvent","activatedChildren","waiting","flushing","currentFlushTimestamp","getNow","performance_1","createEvent","timeStamp","sortCompareFn","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","resolveInject","provideKey","provideDefault","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","injections","cloneAndMarkFunctionalResult","renderContext","mergeProps","getComponentName","__name","_componentTag","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","prevVNode","_vnode","prevListeners","_parentListeners","_props","propKeys","_propKeys","propOptions","validateProp","$forceUpdate","updateChildComponent","destroy","hooksToMerge","baseCtor","_base","cid","errorComp","resolved","owner","owners","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","res_1","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","extractPropsFromVNodeData","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook","installComponentHooks","f1","f2","strats","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","parent_1","defaultStrat","mergeOptions","normalizeProps","normalizeInject","dirs","normalizeDirectives$1","extends","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","sharedPropertyDefinition","sourceKey","initState","propsOptions","isRoot","initProps$1","setup","setupResult","_setupState","__sfc","initSetup","initMethods","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed$1","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","_init","initExtend","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps","initComputed","mixin","_getComponentName","pattern","pruneCache","keepAliveInstance","entry","pruneCacheEntry","current","_uid","vnodeComponentOptions","initInternalComponent","initLifecycle","initEvents","parentData","initRender","initInjections","provideOption","provided","initProvide","initMixin$1","dataDef","propsDef","$delete","stateMixin","hookRE","i_1","cbs","eventsMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","wrapper","lifecycleMixin","_render","prevRenderInst","renderMixin","patternTypes","builtInComponents","KeepAlive","cacheVNode","vnodeToCache","keyToCache","destroyed","updated","configDef","util","observable","installedPlugins","_installedPlugins","initUse","initMixin","definition","initAssetRegisters","initGlobalAPI","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","createElementNS","namespace","createComment","newNode","nextSibling","setTextContent","textContent","setStyleScope","registerRef","isRemoval","refValue","$refsValue","isFor","_isString","_isRef","setSetupRef","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","callInsert","emptyModifiers","getRawDirName","setupDef","baseModules","updateAttrs","oldAttrs","_v_attr_proxy","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker_1","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","updateDOMListeners","event_1","normalizeEvents","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","notInFocus","isNotInFocusAndDirty","_vModifiers","number","isDirtyWithModifiers","parseStyleText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","normalizedName","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_leaveCb","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","i_3","childElm","createRmCb","findIdxInOld","oldCh","i_5","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","i_6","isRenderedModule","inVPre","hasChildNodes","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i_8","i_9","insert_1","i_10","createPatchFunction","vmodel","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","selectedIndex","initEvent","dispatchEvent","locateNode","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave_1","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","moved","el_1","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","dy","platformComponents","attr","HTMLUnknownElement","HTMLElement","updateComponent","preWatchers","mountComponent","query","observers","getRequestToken","dataset","requesttoken","onRequestTokenUpdate","persist","currentUser","attribute","getCurrentUser","displayName","isAdmin","_oc_isadmin","client","headers","defaults","cancelableClient","CancelToken","isCancel","RETRY_KEY","RETRY_DELAY_KEY","axios","interceptors","response","request","responseURL","status","retryDelay","retryIfMaintenanceMode","onMaintenanceModeError","reloadExpiredSession","location","reload","Axios","AxiosError","CanceledError","VERSION","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","knownAdapters","http","xhr","fetch","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","globalFetchAPI","Request","Response","ReadableStream","TextEncoder","merge","skipUndefined","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","encoder","encode","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","origin","duplex","supportsResponseStream","isReadableStream","resolvers","stream","ERR_NOT_SUPPORT","resolveBodyLength","toFiniteNumber","getContentLength","isBlob","isSpecCompliantForm","_request","isArrayBufferView","isArrayBuffer","isURLSearchParams","isString","getBodyLength","signal","cancelToken","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","_fetch","composedSignal","toAbortSignal","unsubscribe","requestContentLength","contentTypeHeader","isFormData","setContentType","onProgress","isCredentialsSupported","resolvedOptions","credentials","isStreamResponse","responseContentLength","responseData","findKey","statusText","ERR_NETWORK","cause","seedCache","Map","getFetch","seeds","seed","XMLHttpRequest","_config","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","responseHeaders","getAllResponseHeaders","responseText","onreadystatechange","readyState","onabort","ECONNABORTED","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","setRequestHeader","isUndefined","upload","abort","subscribe","aborted","protocol","protocols","ERR_BAD_REQUEST","send","createInstance","defaultConfig","allOwnKeys","instanceConfig","promises","thing","isHTMLForm","FormData","resolvePromise","_listeners","throwIfRequested","controller","AbortController","ERR_CANCELED","inherits","__CANCEL__","validators","configOrUrl","dummy","captureStackTrace","endsWith","paramsSerializer","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","serialize","function","allowAbsoluteUrls","baseUrl","spelling","withXsrfToken","contextHeaders","common","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","fullPath","baseURL","generateHTTPMethod","isForm","description","fileName","lineNumber","columnNumber","toJSONObject","descriptors","customProps","axiosError","toFlatObject","errCode","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","isIterable","dest","parser","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","formatHeader","targets","asStrings","getSetCookie","accessor","accessors","defineAccessor","accessorName","toCamelCase","methodName","arg1","arg2","arg3","buildAccessors","reduceDescriptors","mapped","headerValue","freezeMethods","eject","buildFullPath","requestedURL","isRelativeUrl","throwIfCancellationRequested","dispatchRequest","transformRequest","transformResponse","headersToObject","config1","config2","getMergedValue","caseless","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","withXSRFToken","xsrfCookieName","xsrfHeaderName","decompress","maxContentLength","maxBodyLength","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","validateStatus","configValue","settle","ERR_BAD_RESPONSE","transformData","contentType","getContentType","hasJSONContentType","isObjectPayload","isStream","isFile","isFileList","formSerializer","_FormData","stringifySafely","JSONRequested","isResponse","strictJSONParsing","parseReviver","Blob","charMap","AxiosURLSearchParams","_pairs","append","_encode","pair","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","thisArg","buildURL","serializeFn","serializedParams","hashmarkIndex","combineURLs","relativeURL","signals","timer","asap","hasStandardBrowserEnv","expires","domain","secure","sameSite","cookie","isNumber","toUTCString","formData","buildPath","isNumericKey","isLast","hasOwnProp","arrayToObject","forEachEntry","matchAll","parsePropPath","isAbsoluteURL","payload","isMSIE","port","ignoreDuplicateOf","toObjectSet","rawHeaders","parseProtocol","progressEventReducer","isDownloadStream","freq","bytesNotified","_speedometer","loaded","lengthComputable","progressBytes","rate","progress","estimated","progressEventDecorator","throttled","asyncDecorator","auth","username","password","hasStandardBrowserWebWorkerEnv","getHeaders","formHeaders","allowedHeaders","xsrfValue","samplesCount","timestamps","firstSampleTS","tail","chunkLength","startedAt","bytesCount","passed","lastArgs","threshold","invoke","isVisitable","removeBrackets","renderKey","predicates","metaTokens","indexes","defaultVisitor","useBlob","convertValue","isDate","toISOString","isBoolean","isTypedArray","isFlatArray","exposedHelpers","toURLEncodedForm","URLSearchParams","helpers","isNode","streamChunk","chunk","chunkSize","readStream","asyncIterator","reader","getReader","trackStream","onFinish","readBytes","_onFinish","pull","loadedBytes","enqueue","highWaterMark","deprecatedWarnings","formatMessage","opt","ERR_DEPRECATED","correctSpelling","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","isBrowser","hasBrowserEnv","_navigator","product","WorkerGlobalScope","importScripts","href","kindOf","kindOfTest","typeOfTest","isRequest","isHeaders","_global","isContextDefined","TypedArray","reducer","reducedDescriptors","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","postMessage","queueMicrotask","kind","isEmptyObject","pipe","assignValue","targetKey","stripBOM","superConstructor","sourceObj","destObj","propFilter","searchString","regExp","arrayOrString","define","p1","p2","reducedValue","isThenable","ScopedStorage","static","wrapped","persistent","GLOBAL_SCOPE_PERSISTENT","GLOBAL_SCOPE_VOLATILE","scopeKey","setItem","getItem","removeItem","StorageBuilder","appId","persisted","clearedOnLogout","clearOnLogout","sessionStorage","getBuilder","_oc_capabilities","ProxyBus","bus","bus2","getVersion","SimpleBus","getBus","OC","_eventBus","_nc_event_bus","loadState","elem","atob","getCanonicalLocale","_nc_l10n_locale","replaceAll","getLanguage","_nc_l10n_language","isRTL","language","languageCode","getAppTranslations","translations","_oc_l10n_registry_translations","pluralFunction","_oc_l10n_registry_plural_functions","placeholdersOrNumber","optionsOrNumber","allOptions","optSanitize","optEscape","isValidReplacement","translation","bundle","vars2","number2","replacement","translatePlural","textSingular","textPlural","getPlural","locale","Intl","DateTimeFormat","lang","GettextWrapper","addTranslations","dict","msgid","msgid_plural","msgidPlural","msgstr","fromEntries","gettext","placeholders","ngettext","singular","plural","GettextBuilder","setLanguage","detectLocale","detectLanguage","addTranslation","enableDebugMode","getGettextBuilder","getFirstDay","firstDay","intl","Locale","weekInfo","getWeekInfo","getDayNames","dayNames","toLocaleDateString","weekday","getDayNamesShort","dayNamesShort","getDayNamesMin","dayNamesMin","getMonthNames","monthNames","month","getMonthNamesShort","monthNamesShort","formatRelativeTime","ignoreSeconds","relativeTime","date","formatter","RelativeTimeFormat","seconds","minutes","hours","days","weeks","months","day","year","LogLevel","LogLevel2","__defProp$1","__publicField$1","__defNormalProp$1","ConsoleLogger","Debug","Info","Warn","Fatal","fatal","buildConsoleLogger","__publicField","LoggerBuilder","setApp","setLogLevel","setUid","detectUser","detectLogLevel","onLoaded","_oc_config","loglevel","_oc_debug","getLoggerBuilder","ocsVersion","noRewrite","modRewriteWorking","coreApps","encodeURI","_oc_appswebroots","at","_oc_webroot","pathname","_sfc_main","isInSemanticMenu","download","ariaHidden","_sfc_render","isIconUrl","icon","isLongText","_sfc_staticRenderFns","NcActionLink","exact","NcActionRouter","NcActionText","toDate","startOfWeek","firstDayOfWeek","diff","getDay","setDate","getDate","setHours","startOfWeekYear","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","getFullYear","firstDateOfFirstWeek","setFullYear","getWeek","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","monthsShort","weekdays","weekdaysShort","weekdaysMin","REGEX_FORMAT","pad","sign","getOffset","getTimezoneOffset","formatTimezone","delimeter","absOffset","meridiem","isLowercase","word","formatFlags","YY","YYYY","getMonth","MM","MMM","MMMM","DD","getHours","hh","getMinutes","mm","getSeconds","ss","getMilliseconds","SS","SSS","ddd","dddd","ZZ","ww","formatStr","iter","enumerableOnly","_objectSpread","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","formattingTokens","match1","match2","match1to2","matchSigned","YEAR","MONTH","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","regex","func","escapeStringRegExp","matchWordRegExp","localeKey","matchWordCallback","createDate","ms","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","_options$locale","_locale","_options$backupDate","backupDate","parseResult","dateString","mark","parseTo","makeParser","hour","minute","second","millisecond","isPM","week","parsedDate","inputArray","to24hour","firstDate","backupArr","useBackup","getFullInputArray","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_extends$1","cent","meridiemParse","defaultIsPM","_ref9","normalMerge","toArrayMerge","functionalMerge","mergeFn","helper","isValidRangeDate","getValidDate","backup","startOfYear","setMonth","startOfMonth","startOfDay","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","assignTime","time","mergeDeep","formatLocale","yearFormat","monthFormat","monthBeforeYear","defaultLocale","locales","isLocal","getLocale","getScrollParent","until","getPropertyValue","script","prefixClass","visible","displayPopup","_this2","_clickoutEvent","handleClickOutside","relativeElement","_displayPopup","isRunning","rafThrottle","_scrollParent","popup","_popupRect","originalVisibility","marginLeft","marginRight","marginTop","marginBottom","getPopupElementSize","_this$_popupRect","_getRelativePosition","targetWidth","targetHeight","fixed","offsetX","offsetY","relativeRect","dw","dh","getRelativePosition","scrollBarWidth","__vue_component__$1","__vue_component__$2","__vue_component__$3","__vue_component__$4","script$2","IconButton","onDateMouseEnter","onDateMouseLeave","disabledCalendarChanger","calendar","showWeekNumber","titleFormat","getRowClasses","getCellClasses","yearMonth","_this$getLocale","_this$getLocale$month","yearLabel","panel","formatDate","monthLabel","dates","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","nextMonthLength","_i2","getCalendar","isDisabledArrows","handleIconLeftClick","handleIconRightClick","handleIconDoubleLeftClick","handleIconDoubleRightClick","handlePanelChange","handleMouseEnter","cell","handleMouseLeave","handleCellClick","_index$split$map2","row","col","fmt","getCellTitle","getWeekNumber","__vue_component__$5","script$3","calendarYear","handleClick","__vue_component__$6","__vue_component__$7","firstYear","lastYear","years","getYearPanel","getYears","CalendarPanel","dispatchDatePicker","defaultPanel","disabledDate","getClasses","partialUpdate","panels","innerCalendar","innerValue","calendarMonth","initCalendar","calendarDate","isDisabled","emitDate","handleCalendarChange","oldCalendar","handelPanelChange","oldPanel","handleSelectYear","getYearCellDate","_date","handleSelectMonth","getMonthCellDate","_date2","handleSelectDate","getDateClasses","cellDate","notCurrentMonth","getStateClass","getMonthClasses","_cellDate","getYearClasses","_cellDate2","getWeekState","CalendarRange","calendars","hoveredValue","calendarMinDiff","calendarMaxDiff","defaultValues","updateCalendars","handleSelect","_this$innerValue","startValue","endValue","updateStartCalendar","updateEndCalendar","adjustIndex","gap","getCalendarGap","_calendars","calendarLeft","calendarRight","getRangeClasses","currentDates","classnames","inRange","_range$map2","calendarRange","__vue_component__$8","scrollbarWidth","handleScroll","thumbHeight","thumbTop","handleDragstart","outer","inner","getScrollbarWidth","handleDragend","getThumbSize","wrap","heightPercentage","scrollHeight","_draggable","thumb","_prevY","handleDraging","padNumber","generateOptions","scrollTo","tick","__vue_component__$9","columns","ScrollbarVertical","scrollDuration","hourOptions","minuteOptions","secondOptions","showHour","showMinute","showSecond","hourStep","minuteStep","secondStep","use12h","cols","getHoursList","getMinutesList","getSecondsList","getAMPMList","scrollToSelected","_this3","setMinutes","_this4","setSeconds","_this5","scrollElement","colIndex","cellIndex","parseOption","script$7","startMinutes","endMinutes","stepMinutes","timeMinutes","scrollTo$1","__vue_component__$a","__vue_component__$b","showTimeHeader","handleClickTitle","timePickerOptions","innerForamt","ShowHourMinuteSecondAMPM","ListColumns","ListOptions","timeTitleFormat","disabledTime","defaultProps","isDisabledTime","isDisabledHour","isDisabledMinute","isDisabledAMPM","minHour","maxHour","TimeRange","_this$value","emitChange","handleSelectStart","handleSelectEnd","disabledStartTime","disabledEndTime","DatetimePanel","showTimePanel","defaultTimeVisible","currentValue","timeVisible","closeTimePanel","openTimePanel","datetime","calendarProps","timeProps","clicktitle","DatetimeRange","datetimes","componentMap","componentRangeMap","DatePicker","valueType","rangeSeparator","editable","inputClass","inputAttr","popupClass","popupStyle","inline","confirm","confirmText","renderInputText","shortcuts","userInput","defaultOpen","mouseInInput","popupVisible","innerRangeSeparator","innerFormat","validMultipleType","value2date","isValidValue","showClearIcon","handleClickOutSide","closePopup","getFormatter","parseDate","date2value","emitValue","isValidValueAndNotDisabled","handleMultipleDates","nextDates","handleClear","handleConfirmDate","handleSelectShortcut","openPopup","handleInputChange","handleInputInput","handleInputKeydown","handleInputBlur","handleInputFocus","hasSlot","slotFn","renderInput","className","calendarIcon","renderContent","Component","renderSidebar","renderHeader","renderFooter","_class","sidedar","TimePanel","_sfc_main$2","fillColor","_sfc_render$2","_sfc_staticRenderFns$2","CalendarBlank","_sfc_main$1","_sfc_render$1","_sfc_staticRenderFns$1","Web","formatMap","NcPopover","NcTimezonePicker","modelValue","timezoneId","showTimezoneSelect","highlightTimezone","timezoneDialogHeaderId","showTimezonePopover","tzVal","realType","defaultLang","defaultPlaceholder","internalRange","internalFormat","internalFormatter","firstThursday","setUTCDate","getUTCDate","getUTCDay","yearStart","datepicker","selectDate","toggleTimezonePopover","$$v","NcDateTimePicker","NcHighlight","needsTruncate","part1","part2","highlight1","highlight2","NcEllipsisedOption","appearance","NcLoadingIcon","useInternalIsDarkTheme","isDarkTheme","isDarkSystemTheme","updateIsDarkTheme","useIsDarkThemeElement","useIsDarkTheme","enforcedTheme","isFullscreen","checkIfIsFullscreen","outerHeight","screen","isFullscreenState","MOBILE_BREAKPOINT","isLessThanBreakpoint","breakpoint","isMobile","isSmallMobile","useIsMobile","useIsSmallMobile","isMobileState","getEnabledContactsMenuActions","_nc_contacts_menu_hooks","enabled","checkIfDarkTheme","backgroundInvertIfDark","usernameToColor","hash2","maximum","finalInt","hashToInt","steps","ChevronDown","Close","GenRandomId","NcIconSvgWrapper","isMenu","behavior","mdiCheck","mdiChevronRight","isChecked","nativeType","buttonAttributes","NcActionButton","DotsHorizontalIcon","NcButton","actionsMenuSemanticType","manualOpen","forceMenu","forceName","menuName","forceSemanticType","defaultIcon","boundariesElement","variant","triggerRandomId","focusIndex","triggerButtonVariant","popupRole","withArrowNavigation","withTabNavigation","withFocusTrap","triggerA11yAttr","popoverContainerA11yAttrs","popoverUlA11yAttrs","expanded","dialog","unknown","handleEscapePressed","getActionName","isValidSingleAction","openMenu","closeMenu","clearFocusTrap","triggerButton","onClosed","onOpened","focusFirstAction","resizePopover","closest","maxMenuHeight","getMaxMenuHeight","currentHeight","actionHeight","menuList","boundaryTop","boundaryBottom","innerHeight","getCurrentActiveMenuItemElement","getFocusableMenuItemElements","onKeydown","focusList","newFocusIndex","focusAction","focusPreviousAction","focusNextAction","focusLastAction","onTriggerKeydown","removeCurrentActive","currentActiveElement","focusElement","liMenuParent","preventIfEvent","indexLength","firstCheckedIndex","onFocus","onBlur","actions","validInlineActions","inlineActions","menuActions","textInputActions","menuItemsActions","linkActions","hasTextInputAction","hasMenuItemAction","hasLinkAction","renderInlineAction","iconProp","alt","clickListener","buttonText","propsToForward","pressed","renderActionsPopover","actions2","triggerIcon","popoverBaseClass","noAutoReturnFocus","focusTrap","NcActions","userStatus","hasStatus","fetchUserStatus","userId","capabilities","user_status","ocs","browserStorage","setUserHasAvatar","flag","ClickOutside","IconDotsHorizontal","NcUserStatusIcon","iconClass","hideStatus","showUserStatus","verboseStatus","showUserStatusCompact","preloadedUserStatus","isGuest","noPlaceholder","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","menuContainer","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuLoading","contactsMenuData","contactsMenuActions","contactsMenuOpenState","avatarAriaLabel","hasMenu","canDisplayUserStatus","showUserStatusIconOnAvatar","userIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","showInitials","avatarStyle","lineHeight","initialsWrapperStyle","initialsStyle","initials","filteredChars","filtered","codePointAt","toLocaleUpperCase","route","$router","hyperlink","ncActionComponent","ncActionComponentProps","ncActionComponentHandlers","iconSvg","emojiIcon","loadAvatarUrl","handleUserStatusUpdated","toggleMenu","fetchContactsMenu","topAction","updateImageIfValid","avatarUrl","avatarUrlGenerator","srcset","oc_userconfig","avatar","userHasAvatar","getUserHasAvatar","img","Image","NcAvatar","getNcPopoverTriggerAttrs","wide","realVariant","isTertiary","flexAlignment","isReverseAligned","ncPopoverTriggerAttrs","hasText","hasIcon","isLink","hasPressed","renderButton","navigate","isExactActive","rel","advancedFields","paletteOnly","__props","modelOpen","eventName","HEX_REGEX","advanced","normalizedPalette","calculateLuma","hexToRGB","handleConfirm","hideCallback","toggleColor","pickCustomColor","getContrastColor","mdiArrowLeft","_setup","slotProps","mdiCloseCircleOutline","mdiDotsHorizontal","NcColorPicker","__default__","directional","iconSize","cleanSvg","svgDocument","DOMParser","parseFromString","outerHTML","__injectCSSVars__","__setup__","subname","iconName","avatarSize","noMargin","margin","defaultSize","hasIconSvg","isValidSubname","isSizeBigEnough","cssVars","margin2","searchParts","NcListItemIcon","triggerAttrs","NcPopoverTriggerProvider","style0","ncPopover","THEME","structuredClone","noFocusTrap","setReturnFocus","SVGElement","internalShown","checkTriggerA11y","clearEscapeStopPropagation","getPopoverTriggerButtonElement","hasAttributes","removeFloatingVueAriaDescribedBy","triggerElements","getPopoverTriggerElement","getPopoverContentElement","triggerContainer","useFocusTrap","$focusTrap","fallBackFocus","addEscapeStopPropagation","stopKeydownEscapeHandler","afterShow","afterHide","$style","_sfc_injectStyles","createCoords","oppositeSideMap","oppositeAlignmentMap","param","getOppositeAxis","axis","yAxisSides","lrPlacement","rlPlacement","tbPlacement","btPlacement","getOppositeAxisPlacements","flipAlignment","rtl","side","isStart","getSideList","getOppositePlacement","rect","computeCoordsFromPlacement","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","rootBoundary","elementContext","altBoundary","paddingObject","expandPaddingObject","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","originSides","hasWindow","getNodeName","nodeName","getWindow","Node","isHTMLElement","isShadowRoot","ShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","containerType","backdropFilter","willChange","contain","lastTraversableNodeNames","isLastTraversableNode","getNodeScroll","scrollLeft","getParentNode","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getCssDimensions","hasOffset","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","htmlRect","SCROLLBAR_MAX","absoluteOrFixed","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","windowScrollbarX","bodyStyles","bodyMarginInline","compatMode","clippingStableScrollbarWidth","getViewportRect","scrollWidth","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","setLeftRTLScrollbarOffset","offsetRect","htmlOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","currentNode","getContainingBlock","topLayer","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","rectsAreEqual","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","cleanupIo","onMove","io","_io","refresh","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","_middlewareData$offse","_middlewareData$arrow","diffCoords","mainAxisMulti","crossAxisMulti","convertValueToCoords","alignmentOffset","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","overflows","overflowsData","sides","mainAlignmentSide","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","mergedOptions","platformWithCache","validMiddleware","statefulPlacement","resetCount","nextX","nextY","computePosition","allProps","optionLabel","keepOpen","cursor","inputLabel","labelOutside","noWrap","userSelect","inputRequired","localCalculatePosition","togglePlacementClass","localFilterBy","EMAIL_NOTATION","localLabel","vueSelectKeys","flatMap","listenersToForward","selectedOption","NcSelect","Binary","aString","aValue","icaltype","decodeValue","_b64_decode","setEncodedValue","_b64_encode","o1","o2","o3","h1","h2","h3","h4","bits","ac","tmp_arr","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","fromSeconds","aSeconds","isValueString","aStr","chunks","parseDurationChunk","fromData","aData","wrappedJSObject","isNegative","icalclass","toSeconds","secs","trunc","aOther","thisSeconds","otherSeconds","hasWeeks","toICALString","letter","isStrictlyNaN","Period","Time","fromDateTimeString","fromJSON","aProp","aLenient","fromDateOrDateTimeString","dateProp","getDuration","subtractDate","getEnd","addDuration","dt","isLeapYear","fromDayOfYear","aDayOfYear","aYear","doy","tt","auto_normalize","is_leap","daysInYearPassedMonth","fromStringv2","fromDateString","strictParseInt","zone","zoneId","Timezone","utcTimezone","getParameter","localTimezone","getTimeZoneByID","timeData","timezone","aProperty","fromJSDate","aDate","useUTC","aZone","weekOneStarts","aWeekStart","dow","dayOfWeek","wkst","DEFAULT_WEEK_START","THURSDAY","getDominicalLetter","yr","LTRS","dom","epochTime","_cmp_attr","_time","_cachedUnixTime","_pendingNormalization","_getTimeAttr","_setTimeAttr","_normalize","adjust","resetTo","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","TimezoneService","firstDow","SUNDAY","dowCacheKey","_dowCache","dayOfYear","endOfWeek","endOfMonth","endOfYear","startDoyWeek","aFirstDayOfWeek","delta","nthWeekDay","aDayOfWeek","aPos","otherDay","isNthWeekDay","weekNumber","week1","wnCacheKey","_wnCache","isoyear","answer","aDuration","mult","unixTime","toUnixTime","utcOffset","subtractDateTz","compareDateOnlyTz","tz","convertToZone","rc","zone_equals","tzid","convert_time","design","icalendar","toICAL","pad2","toJSDate","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","fromUnixTime","CHAR","VALUE_DELIMITER","RFC6868_REPLACE_MAP$1","_eachLine","_handleContentLine","ParserError","designSet","defaultSet","lastParamIndex","lastValuePos","parsedParams","valuePos","paramPos","_parseParameters","parsedParamLength","accumulator","newComponent","getDesignSet","propertyDetails","splitName","ungroupedName","multiValue","structuredValue","propertyGroups","detectType","defaultType","_parseMultiValue","_parseValue","fromICAL","lcname","mvdelim","lastParam","multiValueSeparateDQuote","_rfc6868Escape","extendedValue","propValuePos","nextPos","length_before","delim","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","_compare_change_fn","from_zone","to_zone","adjust_change","tznames","latitude","longitude","expandedUntilYear","changes","jCal","getFirstPropertyValue","_ensureCoverage","tt_change","change_num","_findNearbyChange","change_num_to_use","prevUtcOffset","zone_change","tmp_change","prev_zone_change","want_daylight","is_daylight","binsearchInsert","_minimumExpansionYear","today","changesEndYear","EXTRA_COVERAGE","subcomps","getAllSubcomponents","compLen","compIdx","_expandComponent","aComponent","hasProperty","dtstart","getFirstProperty","getFirstValue","convert_tzoffset","factor","init_changes","changebase","getAllProperties","rdate","rrule","occ","zones","utc","GMT","_hard_reset","register","formatClassType","seekVal","cmpfunc","mid","cmpval","low","high","aSrc","aDeep","foldline","aLine","line_length","cp","ICALmodule","foldLength","newLineChar","descr","updateTimezones","vcal","allsubs","vtimezones","reqTzid","removeSubcomponent","addSubcomponent","UtcOffset","VCardTime","fromDateAndOrTimeString","aIcalType","part","tmz","splitzone","vcard","_splitZone","tm","dtlen","tmlen","hasDashDate","hasDashTime","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","completed","rule","occurrence_number","by_indices","initialized","by_data","days_index","Recur","InvalidRecurrenceRuleError","sort_byday_rules","BYDAY","setup_defaults","ruleDayOfWeek","wkdy","dayName","numericDayToIcalDay","untilYear","expand_year_days","increment_year","interval","_nextByYearDay","has_by_data","tempLast","initLast","bydow","dayOfMonth","increment_month","_byDayAndMonthDay","normalizeByMonthDayRules","BYMONTHDAY","next_month","again","valid","next_second","next_minute","next_hour","next_day","next_week","next_year","check_contracting_rules","next_generic","increment_second","increment_generic","increment_minute","increment_hour","this_freq","increment_monthday","end_of_data","next_weekday_by_week","BYWEEKNO","week_no","newRules","ruleIdx","isInit","byMonthDay","dateLen","byDay","dateIdx","dayLen","dataIsValid","lastDay","initMonth","nextMonth","monthsCounter","dayIdx","data_valid","setpos","setpos_total","last_day","is_day_in_byday","check_set_position","coded_day","icalDayToNumericDay","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","BYMONTH","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","expand_by_day","first_dow","doy_offset","last_dow","by_month_day","spIndex","month_day","bydayParts","first_matching_day","last_matching_day","expandedDays","weekno","BYYEARDAY","daysInYear","days_list","start_dow","end_dow","end_year_day","this_dow","BYSETPOS","aRules","check_contract_restriction","indexMapValue","_indexMap","ruleMapValue","_expandMap","pass","CONTRACT","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","SU","MO","MONDAY","TU","TUESDAY","WE","WEDNESDAY","TH","FR","FRIDAY","SA","SATURDAY","REVERSE_DOW_MAP","ALLOWED_FREQ","_stringToData","fmtIcal","ucname","partDesign","partArr","partSet","optionDesign","aStart","isByCount","addComponent","aType","setComponent","aValues","getComponent","getNextOccurrence","aStartTime","aRecurrenceId","uckey","INTERVAL","kparts","parseNumericValue","FREQ","COUNT","UNTIL","WKST","BYSECOND","BYMINUTE","BYHOUR","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","newline","replaceNewlineReplace","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","allowedTypes","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","commonProperties","commonValues","float","integer","decorate","undecorate","icalValues","uri","aBinary","strict","period","recur","aRecur","icalProperties","vcardValues","isFromIcal","signChar","vcardProperties","vcard3Values","binary","vcard3Properties","nickname","photo","bday","adr","tel","email","mailer","geo","logo","agent","org","note","prodid","rev","sound","icalSet","allowXName","allowIanaToken","vcardSet","vcard3Set","vcard3","vevent","vtodo","vjournal","valarm","vtimezone","daylight","standard","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","propIdx","propLen","designSetName","comps","noFold","jsName","groupName","paramName","paramDesign","_rfc6868Unescape","paramPropertyValue","propDetails","isDefault","Property","_parent","getDefaultType","_updateType","designSetChanged","_designSet","isDecorated","isMultiValue","isStructuredValue","_hydrateValue","_values","_decorate","_undecorate","_setDecoratedValue","getFirstParameter","parameters","setParameter","removeParameter","details","resetType","removeAllValues","getValues","setValues","setValue","_timezoneCache","_hydratedPropertyCount","_hydratedComponentCount","_components","_properties","parentDesign","versionProp","_hydrateComponent","_hydrateProperty","getFirstSubcomponent","jCalLen","_removeObjectByIndex","jCalIndex","_removeObject","nameOrObject","_removeAllObjects","nameOrComp","removeAllSubcomponents","addProperty","removeProperty","addPropertyWithValue","updatePropertyWithValue","nameOrProp","removeAllProperties","hydratedZone","RecurExpansion","ruleDates","exDates","complete","ruleIterators","ruleDateInc","exDateInc","exDate","ruleDate","_compare_special","currentTry","_nextRecurrenceIter","_nextRuleDay","_nextExDay","_extractDates","iters","iterTime","chosenIter","iterIdx","Event","_rangeExceptionCache","exceptions","rangeExceptions","strictExceptions","relateException","isRecurrenceException","recurrenceId","modifiesFuture","compareRangeException","THISANDFUTURE","findRangeException","rangeItem","getOccurrenceDetails","occurrence","utcId","startDate","endDate","rangeExceptionId","exception","startDiff","newStart","startTime","isRecurring","getRecurrenceTypes","_firstProp","_setProp","_setTime","attendees","summary","organizer","sequence","propName","ComponentParser","parseEvent","parseTimezone","oncomplete","ontimezone","onevent","ical","_timezoneId","_ics","_timezone","_initialized","ics","offsetForArray","timestampToArray","local","toICALTimezone","toICALJs","iCalComponent","tzData","aliasTo","GMT0","Greenwich","UCT","Universal","Zulu","timezoneManager","_aliases","_timezones","_pendingAliases","getTimezoneForId","hasTimezoneForId","isAlias","listAllTimezones","includeAliases","timezones","registerTimezone","aliasName","registerDefaultTimezones","registerTimezoneFromICS","registerAlias","resolvedTimezone","unregisterTimezones","unregisterAlias","pendingAliasName","clearAllTimezones","additionalTimezones","selectedTimezone","additionalTimezone","timezoneList","sortedByContinent","sortedList","continent","regions","cities","timezonesGrouped","isSelectable","terms","region","matchTimezoneId","term","awayLegacySvg","invisibleLegacySvg","invisibleSvg","getUserStatusText","matchSvg","online","away","busy","dnd","invisible","offline","fetchedUserStatus","activeStatus","activeSvg","ScopeComponent","registered","decompressed","t0","t4","t5","t6","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t22","t23","t24","t25","t26","t27","t28","t29","t30","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","t45","t46","t47","t48","t50","t51","t52","t53","ActionGlobalMixin","beforeUpdate","getText","ActionTextMixin","closeAfterClick","GetParent","URL_PATTERN","URL_PATTERN_AUTOLINK","NcLink","remarkAutolink","autolink","useMarkdown","useExtendedMarkdown","parseUrl","flat","textAfter","textBefore","getRoute","router","removePrefixes","prefixes","removePrefix","isNonHttpLink","relativeUrl","relativeRouterBase","history","potentialRouterPath","matched","Color","int","mixPalette","color1","color2","increment","calculateStepIncrement","COLOR_RED","COLOR_YELLOW","COLOR_BLUE","COLOR_BLACK","COLOR_WHITE","defaultPalette","generatePalette","palette1","palette2","palette3","INJECTION_KEY_THEME","createElementId","_nc_vue_element_id","getTrapStack","_nc_focus_trap","createTrapStackController","pausedStack","getAvatarUrl","guestUrl","themeUrl","FindRanges","ranges","currentIndex","validRanges","mergedRanges","currentRange","isLegacy32","logger","mdiArrowRight","mdiArrowTopRight","mdiChevronLeft","mdiClose","mdiCog","mdiCogOutline","mdiContentCopy","mdiCreation","mdiOpenInNew","mdiToggleSwitch","mdiToggleSwitchOff","mdiUndo","useModelMigration","oldModelName","oldModelEvent","useTrapStackControl","shouldPause","trapStackController","defaultWindow","unrefElement","elRef","plain","useEventListener","stopWatch","optionsClone","_iOSWorkaround","onClickOutside","ignore","detectIframe","shouldListen","shouldIgnore","target2","isProcessingClick","detail","vOnClickOutside","bubble","__onClickOutside_stop","unmounted","onKeyStroke","predicate","keyFilter","repeat","onLongPress","elementRef","posStart","startTimestamp","hasLongPressed","listenerOptions","ev","_b2","prevent","distanceThreshold","sqrt","_startTimestamp","_posStart","_hasLongPressed","useSupported","useMounted","useElementHover","delayEnter","isHovered","entering","useResizeObserver","observerOptions","isSupported","_targets","els","_el","useIntersectionObserver","targets2","root2","resume","useElementVisibility","scrollTarget","elementIsVisible","intersectionObserverEntries","isIntersecting","latestTime","resolveElement","Window","ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","idle","eventListenerOptions","internalX","internalY","_x","_y","_element","scrollContainer","isScrolling","arrivedState","directions","onScrollEnd","onScrollEndDebounced","setArrivedState","flexDirection","onScrollHandler","eventTarget","measure","useInfiniteScroll","onLoadMore","canLoadMore","isLoading","observedElement","isElementVisible","checkAndLoad","isNarrower","useCssVar","initialValue","variable","updateCssVar","mutationOptions","items","useMutationObserver","attributeFilter","raw_prop","topVarName","rightVarName","bottomVarName","leftVarName","checkOverflowScroll","ele","rawEvent","elInitialOverflow","useScrollLock","initialState","isLocked","stopTouchMoveListener","initialOverflow","unlock","lock","onScrollLock","isVue2","defaultDocument","defaultNavigator","takeRecords","useActiveElement","triggerOnRemoval","getDeepActiveElement","relatedTarget","useRafFn","fpsLimit","intervalLimit","previousFrameTimestamp","rafId","loop","useBattery","getBattery","charging","chargingTime","dischargingTime","battery","updateBatteryInfo","_battery","useMediaQuery","matchMedia","mediaQuery","WRITABLE_PROPERTIES","useBrowserLocation","ref2","buildState","state2","usePermission","permissionDesc","controls","permissionStatus","permissions","useClipboard","copiedDuring","legacy","isClipboardApiSupported","permissionRead","permissionWrite","copied","isAllowed","clipboard","readText","getSelection","writeText","ta","opacity","execCommand","legacyCopy","cloneFnJSON","globalKey","getHandlers","getSSRHandler","usePreferredDark","guessSerializerType","rawInit","StorageSerializers","customStorageEventName","useStorage","storage","listenToStorageChanges","writeDefaults","mergeDefaults","eventFilter","initOnMounted","serializer","pauseWatch","resumeWatch","dispatchWriteEvent","serialized","storageArea","Storage","StorageEvent","CustomEvent","updateFromCustomEvent","CSS_DISABLE_TRANS","useDark","valueDark","valueLight","storageKey","storageRef","emitAuto","disableTransition","modes","auto","light","dark","preferredDark","system","updateHTMLAttrs","selector2","attribute2","classesToAdd","classesToRemove","attributeToChange","defaultOnChanged","onChanged","useColorMode","mode2","defaultHandler","modeVal","useDeviceMotion","acceleration","rotationRate","beta","gamma","accelerationIncludingGravity","useDeviceOrientation","absolute","useDevicePixelRatio","pixelRatio","observe2","devicePixelRatio","cleanup2","useDevicesList","requestPermissions","constraints","audio","video","onUpdated","devices","videoInputs","audioInputs","audioOutputs","mediaDevices","enumerateDevices","permissionGranted","getTracks","ensurePermissions","getUserMedia","useDocumentVisibility","visibilityState","useDraggable","pointerTypes","onStart","draggingElement","containerElement","handle","draggingHandle","buttons","pressedDelta","filterEvent","pointerType","handleEvent","containerRect","targetRect","move","isDragging","useElementBounding","windowResize","windowScroll","updateTiming","recalculate","useElementSize","initialSize","box","namespaceURI","stop1","boxSize","borderBoxSize","contentBoxSize","devicePixelContentBoxSize","$elem","formatBoxSize","inlineSize","blockSize","contentRect","stop2","useEyeDropper","sRGBHex","openOptions","eyeDropper","EyeDropper","EVENT_FOCUS_IN","EVENT_FOCUS_OUT","useFocusWithin","targetElement","_focused","focused","eventHandlers","useFullscreen","autoExit","targetRef","requestMethod","exitMethod","fullscreenEnabled","fullscreenElementMethod","isElementFullScreen","exit","handlerCallback","isElementFullScreenValue","useGeolocation","enableHighAccuracy","maximumAge","locatedAt","accuracy","POSITIVE_INFINITY","altitude","altitudeAccuracy","heading","speed","geolocation","watchPosition","clearWatch","defaultEvents$1","oneMinute","useIdle","listenForVisibilityChange","lastActive","onEvent","hidden","UseMouseBuiltinExtractors","page","movement","Touch","movementX","movementY","useMouse","resetOnTouchEnds","_prevMouseEvent","sourceType","extractor","mouseHandler","touchHandler","scrollHandler","MouseEvent","mouseHandlerWrapper","touchHandlerWrapper","scrollHandlerWrapper","useMouseInElement","handleOutside","elementX","elementY","elementPositionX","elementPositionY","elementHeight","elementWidth","isOutside","elX","elY","useMousePressed","drag","onPressed","srcType","onReleased","useNetwork","isOnline","saveData","offlineAt","onlineAt","downlink","downlinkMax","rtt","effectiveType","connection","updateNetworkInformation","onLine","useNow","exposeControls","useObjectUrl","revokeObjectURL","newObject","createObjectURL","useClamp","value2","useOffsetPagination","pageSize","onPageChange","onPageSizeChange","onPageCountChange","currentPageSize","pageCount","currentPage","isFirstPage","isLastPage","returnValue","useOnline","usePageLeave","isLeft","toElement","defaultState","pointerId","pressure","tiltX","tiltY","twist","usePointer","isInside","usePointerLock","triggerElement","currentElement","pointerLockElement","requestPointerLock","toBe","exitPointerLock","toBeNull","usePreferredColorScheme","usePreferredContrast","isMore","isLess","isCustom","usePreferredLanguages","languages","usePreferredReducedMotion","isReduced","useSwipe","onSwipe","onSwipeEnd","onSwipeStart","coordsStart","coordsEnd","diffX","diffY","isThresholdExceeded","isSwiping","getTouchEventCoords","updateCoordsEnd","isPassiveEventSupported","optionsBlock","checkPassiveEventSupport","stops","updateCoordsStart","lengthX","lengthY","DEFAULT_UNITS","DEFAULT_MESSAGES","justNow","past","future","invalid","DEFAULT_FORMATTER","useTimeAgo","updateInterval","timeAgo","messages","fullDateFormatter","rounding","roundFn","absDiff","diff2","unit","applyFormat","isPast","unitMax","formatTimeAgo","useTimestamp","ts","_TransitionPresets","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","useVModel","shouldEmit","_emit","modelOptions","cloneFn","triggerEmit","isUpdating","useVirtualList","containerStyle","wrapperProps","calculateRange","currentList","containerRef","resources","useVirtualListResources","itemHeight","overscan","getViewCapacity","createGetViewCapacity","createGetOffset","createCalculateRange","getDistanceTop","createGetDistance","totalHeight","createComputedTotalSize","useWatchForSizes","createScrollTo","useVerticalVirtualList","itemWidth","getDistanceLeft","totalWidth","useHorizontalVirtualList","containerProps","itemSize","containerSize","sum","capacity","scrollDirection","viewCapacity","scrollToDictionaryForElementScrollKey","horizontal","vertical","getDistance","useWindowFocus","hasFocus","useWindowSize","initialWidth","initialHeight","listenOrientation","includeScrollbar","outerWidth","innerWidth","tryOnScopeDispose","createSharedComposable","composable","subscribers","toValue","directiveHooks","isClient","notNullish","clamp","getIsIOS","maxTouchPoints","createFilterWrapper","bypassFilter","debounceFilter","maxTimer","lastRejector","_clearTimeout","timer2","maxDuration","rejectOnCancel","throttleFilter","lastValue","lastExec","isLeading","_invoke","elapsed","cacheStringFunction","promiseTimeout","throwOnTimeout","createSingletonPromise","_prev","objectPick","omitUndefined","objectEntries","getLifeCycleTarget","useDebounceFn","useThrottleFn","watchWithFilter","watchOptions","watchPausable","extendFilter","pausableFilter","syncRef","transformLTR","ltr","transformRTL","objectRef","replaceRef","tryOnMounted","tryOnUnmounted","createUntil","isNot","toMatch","condition","v1","v2","changedTimes","toContains","not","toBeTruthy","toBeNaN","toBeUndefined","useIntervalFn","immediateCallback","clean","clearInterval","intervalValue","setInterval","useTimeoutFn","isPending","useToggle","truthyValue","falsyValue","valueIsRef","truthy","whenever","ov","onInvalidate","isVue3","seal","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","_len4","_key4","_len3","_key3","addToSet","transformCaseFunc","lcElement","cleanArray","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","purify","createDOMPurify","DOMPurify","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","trustedTypes","ElementPrototype","getNextSibling","getChildNodes","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","suffix","ATTR_NAME","policyName","scriptUrl","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","createDocument","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","_isNode","_executeHooks","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","getAttributeType","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","getBasePlacement","getAlignment","getMainAxisFromPlacement","getLengthFromAxis","getSideObjectFromPadding","rectToClientRect","middlewareArguments","getClippingClientRect","within","min$1","max$1","arrowDimensions","minProp","maxProp","endDiff","arrowOffsetParent","clientSize","centerToReference","center","hash$1","getAlignmentSides","main","cross","getOppositeAlignmentPlacement","basePlacements","allPlacements","basePlacement","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_middlewareData$autoP3","_middlewareData$autoP4","_middlewareData$autoP5","_placementsSortedByLe","allowedPlacements","autoAlignment","getPlacementList","currentPlacement","currentOverflows","allOverflows","placementsSortedByLeastOverflow","placementThatFitsOnAllSides","_middlewareData$flip$","_middlewareData$flip3","_overflowsData$slice$","multiplier","getCrossAxis","_middlewareData$size","isEnd","heightSide","widthSide","xMin","xMax","yMin","yMax","dimensions","isWindow","getComputedStyle$1","isScrollParent","isFirefox","perspective","scaleX","scaleY","isScaled","getScrollParents","scrollParent","updatedList","getClientRectFromClippingParent","clippingParent","_element$ownerDocumen","getClippingParents","clippingParents","clipperElement","firstClippingParent","convertElement","check","castFactory","tagNameFactory","testFunction","looksLikeAnElement","checkAsRecord","nodeAsRecord","propsFactory","looksLikeANode","empty","grandparents","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","chunkId","needAttach","scripts","charset","nc","onScriptComplete","doneFns","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","nmd","decode","XMLParser","XMLValidator","XMLBuilder","isExist","isName","getAllMatches","startIndex","nameRegexp","allowBooleanAttributes","unpairedTags","validate","tagClosed","tagStartPos","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","processEntities","stopNodes","oneListGroup","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","regx","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","lastEntities","resolveNameSpace","saveTextToParentTag","tagsNodeStack","tagExp","attrExpPresent","buildAttributesMap","addChild","closeIndex","docTypeEntities","parseTextData","tagname","rawTagName","isItStopNode","readStopNodeData","tagContent","ampEntity","trimStart","apos","gt","lt","quot","space","pound","yen","euro","reg","inr","num_dec","num_hex","addExternalEntities","parseXml","prettify","externalEntities","addEntity","own","isIn","validPath","ObjectPrototypeMutationError","decimalPoint","skipLike","slashes","slashesCount","rest","hostname","extractProtocol","trimLeft","qs","paths","hT","O4","Kd","YK","UU","en","Gu","ky","hq","Xt","i5","shortMessage","_info","constructorOpt","_cause","fullStack","qop","algorithm","realm","cnonce","ha1","opaque","Headers","Auto","Digest","None","Password","Token","DataTypeNoLength","InvalidAuthType","InvalidOutputFormat","LinkUnsupportedAuthType","InvalidUpdateRange","NotSupported","authType","Authorization","digest","hasDigestAuth","token_type","access_token","final","_configuration","registry","getEmptyAction","__type__","configuration","control","execute","isPatched","patchInline","restore","setFinal","_digest","et","nt","ot","st","ut","windowsPathsNoEscape","ct","ht","pt","ft","mt","yt","vt","hasMagic","copyIn","noext","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","_src","_glob","dot","bt","nocomment","Gt","wt","xt","Nt","At","Pt","Ot","Et","Tt","jt","St","$t","Ct","It","kt","Rt","Ut","Lt","Ft","Mt","Dt","__MINIMATCH_TESTING_PLATFORM__","Bt","GLOBSTAR","Vt","Minimatch","AST","makeRe","braceExpand","Wt","nobrace","nonull","zt","nonegate","negate","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","slashSplit","preprocess","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","levelTwoFileOptimize","partsMatch","matchOne","file","matchBase","flipNegate","qt","Ht","Zt","Yt","remoteURL","Destination","Overwrite","overwrite","Depth","Kt","Jt","Qt","Original","multistatus","getlastmodified","getcontentlength","resourcetype","getcontenttype","getetag","collection","lastmod","etag","mime","displayname","propstat","Accept","ue","ce","le","fe","me","de","ge","pe","ye","he","ve","be","we","Range","xe","Ne","Ae","Pe","Oe","Ee","remoteBasePath","remotePath","includeSelf","glob","Te","je","Ie","Se","$e","Ce","ke","Re","lockinfo","lockscope","exclusive","locktype","Le","Me","Ue","refreshToken","Fe","Timeout","If","contactHref","serverTimeout","De","Be","used","available","Ve","We","truncated","ze","Ge","qe","contentLength","He","compliance","server","Xe","Ze","Je","Ye","Ke","Qe","tn","copyFile","createDirectory","createReadStream","PassThrough","createWriteStream","maxRedirects","customRequest","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getQuota","moveFile","putFileContents","partialUpdateFileContents","getDAVCompliance","stat","joinPaths","nonEmptyArgs","lastArg","leadingSlash","trailingSlash","sections","section","getRemoteURL","EventTarget","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","requireConstants","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","requireRe","re2","requireSemver","requireParseOptions","b2","requireIdentifiers","m2","i2","requireParse","requireValid","major_1","hasRequiredMajor","requireMajor","hasRequiredSax","sax$1","sax2","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","Stream","buffers","l2","clearBuffers","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","noscript","BEGIN","strictEntities","ENTITIES","XML_ENTITIES","attribList","rootNS","unquotedAttributeValues","trackPosition","emit2","EVENTS","F2","c2","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","textNode","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","CLOSE_TAG","SGML_DECL","sgmlDecl","isMatch","nameStart","OPEN_TAG","PROC_INST","procInstName","procInstBody","COMMENT","DOCTYPE_DTD","CDATA","emitNode","cdata","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","parsedEntity","parseEntity","unparsedEntities","entity","entityBody","entityStart","maxAllowed","maxActual","closeText","checkBufferLength","require","ex","streamWraps","_parser","readable","onend","_decoder","SD","XML_NAMESPACE","XMLNS_NAMESPACE","stringFromCharCode","s2","STATE","COMMENT_STARTING","e2","s3","qname","qualName","qn","selfClosing","nv","isSelfClosing","closeTo","n2","entityLC","numStr","highSurrogate","lowSurrogate","codeUnits","FolderIcon","extension","mimeType","directory","hasPreview","previewUrl","MimeType","getIconUrl","nameWithoutExtension","isFolder","generateUrl","fileId","_window$OCA","_window$OCP","OCA","Viewer","mimetypes","OCP","Files","Router","fileid","goToRoute","RecommendedFile","$store","recommendedFiles","NcActionButtonGroup","NcActionCaption","ariaChecked","checkInput","checkbox","ctrlKey","metaKey","NcActionCheckbox","inputDateTypes","hideLabel","formattedValue","formatValue","formattedMin","formattedMax","valueAsNumber","yyyy","getReadableDate","padStart","timezoneOffsetSeconds","inputDateWithTimezone","daysSinceBeginningOfYear","NcDateTimePickerNative","AlertCircle","Check","showTrailingButton","trailingButtonLabel","success","helperText","pill","computedId","inputName","hasTrailingIcon","computedPlaceholder","isValidLabel","ariaDescribedby","handleInput","handleTrailingButtonClick","NcInputField","IconEye","IconEyeOff","passwordPolicy","password_policy","NcInputFieldProps","checkPasswordStrength","minlength","maxlength","asText","internalHelpMessage","computedError","computedSuccess","computedHelperText","minLength","trailingButtonLabelPassword","propsAndAttrsToForward","checkPassword","inputField","toggleVisibility","NcPasswordField","trailingButtonIcon","isArrow","predefinedLabels","arrowEnd","undo","NcTextField","idNativeDateTimePicker","isNativePicker","isMultiselectType","nativeDatePickerType","datePickerType","datetimepicker","onInput","onSubmit","requestSubmit","NcActionInput","toggleInput","NcActionRadio","NcActionSeparator","NcActionTextEditable","pushOtherPanes","dblClickSplitter","firstSplitter","requestUpdate","onPaneAdd","onPaneRemove","onPaneClick","ready","panes","mouseDown","dragging","activeSplitter","splitterTaps","splitter","panesCount","indexedPanes","pane2","updatePaneComponents","bindEvents","unbindEvents","onMouseDown","splitterIndex","calculatePanesSize","getCurrentMouseDrag","onSplitterClick","onSplitterDblClick","totalMinSizes","paneId","getCurrentDragPercentage","sums","prevPanesSize","sumPrevPanesSize","nextPanesSize","sumNextPanesSize","prevReachedMinPanes","nextReachedMinPanes","minDrag","maxDrag","dragPercentage","panesToResize","paneBefore","paneAfter","paneBeforeMaxReached","paneAfterMaxReached","doPushOtherPanes","findPrevExpandedPane","findNextExpandedPane","checkSplitpanesNodes","isPane","isSplitter","addSplitter","paneIndex","nextPaneNode","isVeryFirst","onmousedown","ontouchstart","onclick","ondblclick","removeSplitter","redoSplitters","minSize","maxSize","givenSize","resetPaneSizes","addedPane","pane3","removedPane","changedPanes","equalizeAfterAddOrRemove","equalize","initialPanesSizing","equalSpace","leftToAllocate","ungrowable","unshrinkable","readjustSizes","definedSizes","leftToAllocate2","equalSpaceToAllocate","newPaneSize","allocated","enable","splitpanes","sizeNumber","minSizeNumber","maxSizeNumber","pane","ArrowLeft","ArrowRight","isRtl","toggleAppNavigationButton","appNavigationToggle","NcAppContentDetailsToggle","instanceName","theming","activeApp","localizedAppNameState","localizedAppName","Pane","Splitpanes","allowSwipeNavigation","disableSwipe","listSize","listMinWidth","listMaxWidth","paneConfigKey","showDetails","layout","pageHeading","pageTitle","contentHeight","swiping","listPaneSize","restorePaneConfig","paneConfigID","detailsPaneSize","paneDefaults","realPageTitle","handleSwipe","touchZone","handlePaneResize","hideDetails","NcAppContent","NcAppContentDetails","selection","showdetails","NcAppContentList","isMac","disableKeyboardShortcuts","Accessibility","derivedKeysRegex","nonAsciiPrintableRegex","eventHandler","ctrl","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","getElementsByClassName","shouldIgnoreEvent","NcAppNavigationList","MenuIcon","MenuOpenIcon","shortcut","toggleNavigation","NcAppNavigationToggle","setHasAppNavigation","ariaLabelledby","toggleFocusTrap","toggleNavigationByEventBus","appNavigationContainer","fallbackFocus","keysOrFilter","validateKeyEvent","caseSensitive","stopKeyDown","stopKeyUp","useHotKey","onKeyDown","animationLength","focusFirstElement","handleEsc","isFocusWithinNavigation","NcAppNavigation","headingId","isHeading","headingLevel","wrapperTag","captionTag","hasActions","NcAppNavigationCaption","formattedColor","NcAppNavigationIconBullet","ChevronUp","labelConfirm","labelCancel","valueModel","focusInput","NcInputConfirmCancel","NcVNodes","_sfc_main$3","_sfc_render$3","_sfc_staticRenderFns$3","Pencil","Undo","labelButton","NcAppNavigationIconCollapsible","allowCollapse","editLabel","editPlaceholder","pinned","menuOpen","menuIcon","menuPlacement","ariaDescription","forceDisplayActions","editingValue","editingActive","menuOpenLocalValue","actionsBoundariesElement","isRouterLink","canHaveChildren","hasUtils","counter","editButtonAriaLabel","undoButtonAriaLabel","onMenuToggle","toggleCollapse","routerLinkHref","handleEdit","editingInput","cancelEditing","handleEditingDone","handleUndo","isCollapsible","handleFocus","handleBlur","handleTab","isExternal","NcAppNavigationItem","buttonId","NcAppNavigationNew","newItemValue","newItemActive","handleNewItem","newItemInput","cancelNewItem","handleNewItemDone","NcAppNavigationNewItem","inputElement","inputHasFocus","actionsContainer","showActions","hideActions","onCloseSearch","IconClose","NcAppNavigationSearch","clickOutsideOptions","excludeClickOutsideSelectors","contentId","clickOutsideConfig","NcAppNavigationSettings","NcAppNavigationSpacer","NcDialogButton","Pause","Play","started","running","getTimeLeft","getStateRunning","hasPrevious","hasNext","outTransition","enableSlideshow","slideshowDelay","slideshowPaused","enableSwipe","spreadNavigation","noClose","canClose","closeOnClickOutside","lightBackdrop","closeButtonOutside","closeButtonContained","additionalTrapElements","mc","playing","slideshowTimeout","randId","internalShow","cssSlideshowDelay","forceDarkBackdrop","modalName","modalLabelId","showModal","modalTransitionName","playPauseName","closeButtonAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","contentContainer","mask","handleKeydown","lastChild","previous","resetSlideshow","handleClickModalWrapper","arrowHandlers","togglePlayPause","handleSlideshow","clearSlideshowTimeout","NcModal","navigationClasses","navigationAriaLabel","navigationAriaLabelledby","contentClasses","dialogClasses","dialogWidth","isNavigationCollapsed","hasNavigation","navigation","navigationId","navigationAriaLabelAttr","navigationAriaLabelledbyAttr","dialogElement","dialogTagName","dialogListeners","submit","handleClosing","handleClosed","modalProps","handleButtonClose","reportValidity","NcDialog","APP_SETTINGS_REGISTRATION_KEY","APP_SETTINGS_LEGACY_DESIGN_KEY","showNavigation","registerSection","unregisterSection","settingsScroller","selectedSection","linkClicked","registeredSections","hasNavigationIcons","unfocusNavigationItem","sectionsOrderMap","order","otherId","otherName","orderA","orderB","handleSettingsNavigationClick","getElementById","scrollIntoView","handleCloseModal","isOpen","isCollapsed","NcAppSettingsDialog","htmlId","newId","newName","newOrder","oldId","NcAppSettingsSection","appSettingsSectionShortcuts","NcAppSettingsShortcutsSection","nanoid","TargetContainer","updatedNodes","Portal","prepend","getTargetEl","insertTargetEl","unmount","mount","targetEl","_Vue","defaultSelector","INSIDE_RADIO_GROUP_KEY","useInsideRadioGroup","_sfc_main$8","_sfc_render$8","_sfc_staticRenderFns$8","CheckboxBlankOutline","_sfc_main$7","_sfc_render$7","_sfc_staticRenderFns$7","CheckboxMarked","_sfc_main$6","_sfc_render$6","_sfc_staticRenderFns$6","MinusBox","_sfc_main$5","_sfc_render$5","_sfc_staticRenderFns$5","RadioboxBlank","_sfc_main$4","_sfc_render$4","_sfc_staticRenderFns$4","RadioboxMarked","ToggleSwitch","ToggleSwitchOff","TYPE_CHECKBOX","TYPE_RADIO","TYPE_SWITCH","TYPE_BUTTON","textClass","buttonVariant","indeterminate","descriptionId","isButtonType","checkboxRadioIconElement","NcCheckboxContent","wrapperId","buttonVariantGrouped","wrapperElement","radioGroup","internalType","internalModelValue","onUpdate","dataAttrs","nonDataAttrs","computedWrapperElement","onToggle","cssIconSize","cssIconHeight","inputType","hasIndeterminate","getInputsSet","getElementsByName","NcCheckboxRadioSwitch","encodedTlds","encodedUtlds","ascii","asciinumeric","alphanumeric","scheme","slashscheme","registerGroup","groups","addToGroups","State","jr","jd","accepts","go","nextState","exactOnly","inputs","tr","templateState","allFlags","flagsForToken","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","EMOJI","ASCII_LETTER","LETTER","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","run$1","stringToArray","charCount","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","fastts","defaultt","decodeTlds","encoded","popDigitCount","popCount","defaultProtocol","formatHref","nl2br","truncate","ignoreTags","Options","defaultRender","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","getObj","MultiToken","createTokenClass","toHref","toFormattedString","formatted","toFormattedHref","endIndex","toFormattedObject","formattedHref","eventListeners","Email","Text","Nl","Url","hasProtocol","makeState","initMultiToken","Multi","INIT","scanner","tokenQueue","pluginQueue","customSchemes","Start","Num","Asciinumeric","Alphanumeric","Word","UWord","Cr","Ws","EmojiJoiner","wordjr","uwordjr","tld","utld","sch","init$2","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","init$1","tokenize","multis","textTokens","secondState","multiLength","subtokens","escapeText","attributesToString","linkifyStr","scan","linkify","headerRef","vLinkify","NcAppSidebarHeader","nameId","hasName","hasDescription","NcEmptyContent","IconDockRight","Star","StarOutline","registerTab","unregisterTab","getActiveTab","activeTab","isTablistShown","hasMultipleTabs","forceTabs","tabs","showForSingleTab","currentTabIndex","tab","updateActive","setActive","focusPreviousTab","focusActiveTab","focusNextTab","focusFirstTab","focusLastTab","focusActiveTabContent","Util","naturalSortCompare","renderIcon","NcAppSidebarTabs","Teleport","ncContentSelector","nameEditable","namePlaceholder","subtitle","starred","starLoading","compact","linkifyName","toggleClasses","toggleAttrs","noToggle","changeNameTranslated","closeTranslated","favoriteTranslated","isStarred","elementToReturnFocus","canStar","hasFigure","hasFigureClickListener","checkToggleButtonContainerAvailability","preserveElementToReturnFocus","menuTrigger","initFocusTrap","sidebar","closeButton","onKeydownEsc","closeSidebar","onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave","focusVisible","onFigureClick","toggleStarred","editName","nameInput","onNameInput","onSubmitName","onDismissEditing","onUpdateActive","NcAppSidebar","NcAppSidebarTab","sizePx","gradientId","assistantIcon","assistantIcon_inline","assistantIcon__svg","NcAssistantIcon","assistantButton_disabled","assistantButton_primary","assistantButton","assistantButton__button","assistantButton__icon","assistantButton__text","NcAssistantButton","assistantContent","assistantContent__inner","NcAssistantContent","Uint8ClampedArray","cos","PI","TimeoutError","AbortError","getDOMException","errorMessage","DOMException","getAbortedReason","PriorityQueue","priority","comparator","lowerBound","setPriority","dequeue","carryoverConcurrencyCount","intervalCap","concurrency","autoStart","queueClass","canInitializeInterval","job","newConcurrency","throwIfAborted","operation","milliseconds","customTimers","abortHandler","cancelablePromise","timeoutError","pTimeout","addAll","functions","onEmpty","onSizeLessThan","onIdle","sizeBy","isPaused","canvas","imageLoaded","drawBlurHash","pixels","imageData","createImageData","putImageData","withResolvers","image","preloadImage","fadeTransition","fadeTransitionActive","NcBlurHash","ChevronRight","forceIconText","disableDrop","crumbId","hovering","linkAttributes","onOpenChange","dropped","dragEnter","dragLeave","crumb","NcBreadcrumb","$placeholder","$fakeParent","$nextSiblingPatched","$childNodesPatched","isFrag","parentNodeDescriptor","patchParentNode","fakeParent","nextSiblingDescriptor","patchNextSibling","getChildNodesWithFragments","_childNodesDescriptor","realChildNodes","getTopFragment","childNodesDescriptor","frag","firstChildDescriptor","patchChildNodes","_this$frag$","getFragmentLeafNodes","_Array$prototype","hasChildInFragment","removedNode","insertBeforeNode","addPlaceholder","insertNode","insertNodes","_frag","_lastNode","after","removePlaceholder","lastNode","innerHTMLDescriptor","htmlString","domify","previousSibling","replaceWith","IconFolder","ValidateSlot","allowed","isHtmlElement","isVueComponent","isForbiddenComponent","crumbClass","rootIcon","hiddenIndices","menuBreadcrumbProps","breadcrumbsRefs","handleWindowResize","delayedResize","hideCrumbs","closeActions","actionsBreadcrumb","breadcrumbs","nrCrumbs","availableWidth","getTotalWidth","breadcrumb__actions","getWidth","arraysEqual","minWidth","dragStart","dragOver","isBreadcrumb","crumbs","dragstart","dragenter","dragleave","folderIcon","draggable","drop","dragover","crumbs2","NcBreadcrumbs","detailsOpen","getIcon","resource","typeClass","link","iconUrl","mimetype","toggleDetails","removeResource","collectionId","resourceType","resourceId","openRename","renameCollection","NcCollectionListItem","extractOcsData","useCollections","storedCollections","addCollection","updateCollection","addResourceToCollection","addResourceService","fetchCollectionsByResource","collections","getCollectionsByResourceService","addCollections","createCollection","baseResourceType","baseResourceId","createCollectionService","collectionName","put","renameCollectionService","removeResourceFromCollection","removeResourceService","removeCollection","searchCollections","searchService","selectIsOpen","generatingCodes","codes","collectionsError","isSelectOpen","Collaboration","getTypes","getLabel","resourceIdentifier","setError","showSelect","renameCollectionFromItem","NcCollectionList","setAppNavigation","appName","hasAppNavigation","currentFocus","currentImage","openAppNavigation","NcContent","counterClassObject","humanizedCount","humanizeCount","NumberFormat","notation","compactDisplay","getHumanizedCount","humanized","slotContent","NcCounterBubble","targetUrl","avatarUsername","avatarIsNoUser","overlayIconUrl","mainText","subText","itemMenu","hovered","gotMenu","gotOverlayIcon","onLinkClick","menuItemId","NcDashboardWidgetItem","showMoreUrl","showMoreLabel","showItemsAndEmptyContent","emptyContentMessage","halfEmptyContentMessage","evName","displayedItems","nbItems","maxItemNumber","showHalfEmptyContentArea","halfEmptyContentString","showMore","NcDashboardWidget","FEW_SECONDS_AGO","long","short","narrow","useFormatRelativeTime","relativeTime2","updateRelativeTime","useFormatTime","dateStyle","timeStyle","timeOptions","relativeTimeOptions","formattedTime","NcDateTime","getCurrentSkinTone","skinTone","IconCircle","skinTonePalette","activeSet","allowUnselect","previewFallbackEmoji","previewFallbackName","currentSkinTone","clearSearch","onChangeSkinTone","tone","unselect","picker","handleTabNavigationSkippingEmojis","prevNode","findLast","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","callPickerArrowHandlerWithScrollFix","originalHandlerName","block","NcEmojiPicker","NC_FORM_BOX_CONTEXT_KEY","useNcFormBox","isInFormBox","formBoxItemClass","ncFormBox__item","ncFormBox","ncFormBox_row","ncFormBox_col","NcFormBox","invertedAccent","itemClasses","formBoxItem","formBoxItem_inverted","formBoxItem_legacy","formBoxItem__content","formBoxItem__element","formBoxItem__description","formBoxItem__icon","NcFormBoxItem","hasVueRouterContext","isHyperLink","isButton","additionalAttrs","useButtonLink","formBoxButton","NcFormBoxButton","isCopied","prompt","useCopy","NcFormBoxCopyButton","formBoxSwitch__input","$$a","$$el","$$c","$$i","formBoxSwitch__icon","NcFormBoxSwitch","hideDescription","noGap","getDescriptionId","hasContentOnly","formGroup","formGroup_noGap","formGroup__label","formGroup__description","formGroup__content","formGroup__content_only","NcFormGroup","NcGuestContent","NcHeaderButton","isNav","shortcutsDisabled","triggerId","focusout","onFocusOut","headerMenu","NcHeaderMenu","mac","labels","ArrowUp","ArrowDown","Control","Alt","Shift","Enter","Tab","Delete","Escape","Space","kbd","NcKbd","hotkey","NO_LABEL_WARNING","hotkey__keys","hotkey__label","NcHotkey","hotkeyList","hotkeyList__heading","NcHotkeyList","isLegacy","anchorId","bold","linkAriaLabel","actionsAriaLabel","counterNumber","counterType","oneLine","hasSubname","displayActionsOnHoverFocus","hasIndicator","hasDetails","showAdditionalElements","checkSlots","handleMouseleave","handleMouseover","handleActionsUpdateOpen","indicator","extra","NcListItem","Alert","AlertDecagram","CheckboxMarkedCircle","Information","showAlert","shouldShowAlert","NcNoteCard","stroke","radius","radiusNormalized","circumference","NcProgressBar","labelHidden","radioGroup_checkboxRadioContainer","NcRadioGroup","radioGroupButton_active","radioGroupButton","radioGroupButton__icon","radioGroupButton__label","NcRadioGroupButton","labelTranslated","resourceName","NcResource","AccountGroup","OpenInNew","teamResourceProviders","circles","providerId","itemId","appEnabled","appswebroots","teamResources","teamOpen","teamProviders","teamId","team","provider","fetchTeamResources","teams","toggleOpen","iconEmoji","iconURL","NcTeamResources","fileInfo","related_resources","subline","hasResourceInfo","isFiles","fetchRelatedResources","NcRelatedResourcesPanel","mentionText","labelWithFallback","NcMentionBubble","MENTION_START","MENTION_COMPLEX","USERID_REGEX","USERID_REGEX_WITH_SPACE","richEditor","userData","genSelectTemplate","parseContent","autocompleteTribute","renderComponentHtml","renderedHtml","stripAnsi","onlyFirst","ansiRegex","stringLength","countAnsiEscapeCodes","astralRange","teluguConsonants","teluguConsonantsRare","telugu","astral","combo","fitz","nonAstral","regional","surrogatePair","optModifier","optVar","seq","charRegex","CustomEvent$1","bubbles","initCustomEvent","TributeEvents","tribute","boundKeydown","boundKeyup","keyup","boundInput","shouldDeactivate","hideMenu","commandEvent","inputEvent","li","selectItemAtIndex","externalTrigger","updateSelection","allowSpaces","hasTrailingSpace","autocompleteMode","triggerChar","getKeyCode","menuShowMinLength","showMenuFor","eventKeyPressed","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","filteredItems","menuSelected","spaceSelectsMatch","up","setActiveLi","down","lis","selectClass","liClientRect","menuClientRect","scrollDistance","getFullHeight","includeMargin","currentStyle","TributeMenuEvents","menuEvents","menuClickEvent","menuContainerScrollEvent","windowResizeEvent","positionMenuAtCaret","getDocument","TributeRange","iframe","coordinates","positionMenu","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","menuDimensions","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","menuIsOffScreenVertically","menuContainerIsBody","selectElement","sel","getWindowSelection","createRange","setStart","setEnd","collapse","removeAllRanges","addRange","replaceTriggerText","requireLeadingSpace","originalEvent","replaceEvent","replaceTextSuffix","endPos","pasteHtml","myField","textSuffix","startPos","selectionStart","selectionEnd","anchorNode","deleteContents","cloneRange","setStartAfter","getNodePositionInParent","getContentEditableSelectedPath","contentEditable","getRangeAt","startOffset","getTextPrecedingCurrentSelection","selectedElem","workingNodeContent","selectStartOffset","textComponent","getLastWordInText","wordsArray","menuAlreadyActive","isAutocomplete","selectionInfo","effectiveRange","lastWordOfEffectiveRange","mentionSelectedElement","mostRecentTriggerCharPos","lastIndexWithLeadingSpace","currentTriggerSnippet","firstSnippetChar","leadingSpace","reversedStr","cidx","triggerIdx","windowWidth","windowHeight","windowLeft","windowTop","menuTop","menuRight","menuBottom","menuLeft","getMenuDimensions","flipped","mozInnerScreenX","div","whiteSpace","wordWrap","span","borderTopWidth","borderLeftWidth","parentHeight","scrollStillAvailable","selectedNodePosition","elemTop","elemBottom","maxY","targetY","TributeSearch","simpleFilter","compareString","rendered","score","patternCache","patternIndex","calculateScore","best","temp","indices","extract","Tribute","containerClass","itemClass","selectTemplate","menuItemTemplate","fillAttr","noMatchTemplate","searchOpts","menuItemLimit","defaultSelectTemplate","defaultMenuItemTemplate","_isActive","noMatchEvent","matchItem","inputTypes","attach","jQuery","NodeList","HTMLCollection","_attach","ensureEditable","createMenu","ul","currentMentionTextSnapshot","tributeMenu","processValues","_findLiTarget","showMenuForCollection","collectionIndex","placeCaretAtEnd","insertTextAtCursor","insertAtCaret","selectNodeContents","createTextRange","textRange","moveToElementText","textarea","scrollPos","caretPos","front","back","replaceText","_append","newValues","appendCurrent","detach","_detach","isWidgetRegistered","_vue_richtext_widgets","_registerWidget","onDestroy","propsWithDefaults","hasInteractiveView","fullWidth","registerWidget","_vue_richtext_custom_picker_elements","_registerCustomPickerElement","isCustomPickerElementRegistered","encodeReserveRE","encodeReserveReplacer","commaRE","castQueryParamValue","parseQuery","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","meta","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","enteredCbs","i$1","routerView","$route","_routerViewCache","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","propsToPass","resolveProps","resolvePath","segment","cleanPath","isarray","pathToRegexp_1","pathToRegexp","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","modifier","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","pretty","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","compile","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","parsedPath","hashIndex","queryIndex","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","Link","exactPath","exactActiveClass","ariaCurrentValue","this$1$1","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","findAnchor","handler$1","event$1","aAttrs","defaultPrevented","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","compileRouteRegex","alias","redirect","childMatchAs","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","replaceState","handlePopState","isPop","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","isValidPosition","normalizePosition","hashStartsWithNumberRE","docRect","elRect","getElementPosition","supportsPushState","pushState","NavigationFailureType","redirected","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","createNavigationCancelledError","_isRouter","isError","isNavigationFailure","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","History","baseEl","normalizeBase","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","guard","extractGuard","bindGuard","listen","onReady","errorCb","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","createNavigationAbortedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","prototypeAccessors","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","getMatchedComponents","createHref","normalizedTo","installed","registerInstance","callVal","_router","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","interactive","interactiveOptIn","widgetRoot","showInteractive","idleTimeout","isInteractive","hasFullWidth","richObjectType","hasCustomWidget","noAccess","accessible","descriptionStyle","numberOfLines","lineClamp","webkitLineClamp","compactLink","openGraphObject","referenceWidgetLinkComponent","referenceWidgetLinkProps","renderWidget","destroyWidget","enableInteractive","customWidget","widget","richObject","NcReferenceWidget","isRegistered","renderResult","renderElement","renderFunctionResult","renderCustomPickerElement","NcCustomPickerElement","LinkVariantIcon","anyLinkProviderId","anyLinkProvider","icon_url","getProviders","_vue_richtext_reference_providers","keep","search_providers_ids","searchProvider","providers","escapedQuery","sortedProviders","providerList","_vue_richtext_reference_provider_timestamps","tb","sortProviders","filteredSortedProviders","searchResult","mytimer","isUrl","selectedProvider","multiselectPlaceholder","providerIconAlt","onProviderSelected","NcProviderList","inputValue","abortController","inputPlaceholder","isLinkValid","onClear","updateReference","NcRawLinkInput","rounded","thumbnailUrl","NcSearchResult","showEmptyContent","searchQuery","selectedResult","resultsBySearchProvider","searchingMoreOf","noOptionsText","mySearchPlaceholder","searchProviderIds","rawLinkEntry","formattedSearchResults","resourceUrl","isRawLink","pid","isCustomGroupTitle","providerEntriesWithId","isPaginated","resetResults","cancelSearchRequests","onSearchInput","updateSearch","onSelectResultSelected","searchMoreOf","searchProviderId","searchProviders","searchPromises","searchOneProvider","isOneCanceled","NcSearch","MODES","standardLinkInput","searchInput","customElement","initialProvider","focusOnCreate","pickerWrapperStyle","onEscapePressed","deselectProvider","cancelProviderSelection","cancelCustomElement","cancelSearch","cancelRawLinkInput","submitLink","touchProvider","NcReferencePicker","ArrowLeftIcon","CloseIcon","isInsideViewer","backButtonTitle","closeButtonTitle","closeButtonLabel","isProviderSelected","showBackButton","modalSize","getCustomPickerElementSize","showModalName","modal_content","onProviderSelect","onBackClicked","referencePicker","NcReferencePickerModal","getLinkWithPicker","modalElement","getProvider","deserialize","as","unpair","deserializer","EMPTY","typeOf","shouldSkip","TYPE","json","lossy","ABSOLUTE_URL_REGEX","WINDOWS_PATH_REGEX","defaultProtocols","defaultRel","emptyOptions","rehypeExternalLinks","settings","isAbsoluteUrl","contentRaw","createIfNeeded","relRaw","contentProperties","Schema","normal","definitions","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","defined","powers","DefinedInfo","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","colSpan","controlsList","crossOrigin","dateTime","decoding","defer","dirName","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemProp","itemRef","itemScope","itemType","manifest","maxLength","muted","noModule","noValidate","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onCanPlay","onCanPlayThrough","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFormData","onHashChange","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPlay","onPlaying","onPopState","onRateChange","onRejectionHandled","onReset","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","reversed","rows","rowSpan","sandbox","scoped","seamless","shadowRootDelegatesFocus","shadowRootMode","shape","sizes","spellCheck","srcDoc","srcLang","srcSet","typeMustMatch","useMap","aLink","archive","border","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","profile","rightMargin","scrolling","standby","topMargin","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onBegin","onFocusIn","onMouseWheel","onRepeat","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cx","cy","defaultAction","descent","diffuseConstant","dur","divisor","edgeMode","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","textLength","transformBehavior","u1","u2","unicode","viewTarget","widths","xChannelSelector","yChannelSelector","zoomAndPan","dash","cap","kebab","$0","camelcase","hastToReact","webNamespaces","mathml","toH","react","vue","vd","vdom","hyperscript","parentSchema","addAttribute","Type","dashes","subprop","padRight","padLeft","$1","error_","parseStyle","rehypeReact","fixTableCellAlign","passNode","Compiler","Fragment","findAndReplace","ignored","pairs","tupleOrList","tuple","toExpression","toFunction","toPairs","pairIndex","grandparent","siblings","matchObject","remarkBreaks","newlineToBreak","includeImageAlt","includeHtml","chunkStart","SpliceBuffer","setCursor","deleteCount","chunkedPush","pushMany","unshiftMany","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_tokenizer","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","_contentTypeTextTrailing","childEvents","gaps","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","syntaxExtension","constructs","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","factorySpace","consume","contentStart","attempt","contentInitial","lineStart","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","point","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","flowContinue","writeToChild","endOfFile","nok","disable","null","blankLine","chunkInside","contentEnd","continuationConstruct","contentContinue","sliceSerialize","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","resolveAllLineSuffixes","notText","atBreak","extraResolver","bufferIndex","_bufferIndex","thematicBreak","onBlank","notBlank","furtherBlankLines","initialBlankLine","notInCurrentItem","indentConstruct","atMarker","inside","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","resolveTo","paragraph","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","character","characterEscape","lineEnding","labelEnd","newEvents","_balanced","insideSpan","labelStart","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","openingSequence","closingSequence","nextEvents","_close","_open","movePoint","attentionMarkers","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","between","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","constructFactory","addResult","onsuccessfulcheck","accountForPotentialSkip","fields","expandTabs","atTab","serializeChunks","expectedCode","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","extensions","combineExtensions","decodeNumericCharacterReference","characterEscapeOrReference","$2","stringifyPosition","fromMarkdown","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","tokenStack","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","onExitError","expectingFirstListItemValue","flowCodeInside","setextHeadingSlurpLineEnding","atHardBreak","inReference","referenceType","decodeString","characterReferenceType","ordered","compiler","postprocess","atCarriageReturn","endPosition","TextDecoder","combined","remarkParse","normalizeUri","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","pointEnd","pointStart","revert","subtype","contents","listItemLoose","trimLines","trimLine","blockquote","applyData","break","footnoteReference","clobberPrefix","safeId","footnoteOrder","reuseCounter","footnoteCounts","dataFootnoteRef","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","listLoose","firstRow","tableContent","tableCell","tableRow","cells","alignValue","toml","yaml","footnoteDefinition","hName","hChildren","hProperties","defaultUnknownHandler","trimMarkdownSpaceStart","toHast","footnoteById","passThrough","unknownHandler","createState","foot","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","dataFootnoteBackref","tailTail","dataFootnotes","remarkRehype","destination","hastTree","remarkUnlinkProtocols","except","squeezeParagraphs","bail","trough","pipeline","middlewareIndex","fnExpectsCallback","middelware","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","place","ruleId","expected","seenNonSlash","extIndex","unmatchedSlash","normalizeString","proc","fileUrlOrPath","urlToPath","third","getPathFromURLPosix","VFile","isUint8Array","stored","assertNonEmpty","assertPart","stem","fail","CallableInstance","Processor","Parser","attachers","freezeIndex","frozen","transformers","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","parseTree","realDone","compileTree","compileResult","processSync","assertDone","assertNode","outputTree","resultingTree","runSync","addPlugin","addList","addPreset","plugins","entryIndex","currentPrimary","asyncName","looksLikeAVFile","_nc_initial_state","parsedValue","referenceData","displayFallback","displayedReferences","fallbackReference","firstReference","isPublic","sharingToken","NcReferenceList","ccount","code2","index2","all2","node2","visit2","list2","replace2","inConstruct","notInConstruct","enterLiteralAutolink","enterLiteralAutolinkValue","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","exitLiteralAutolinkEmail","exitLiteralAutolink","transformGfmAutolinkLiterals","findUrl","findEmail","domain2","path2","isCorrectDomain","trailExec","trail2","closingParenIndex","openingParens","closingParens","splitUrl","atext","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","tracker","createTracker","exit2","subexit","associationId","indentLines","containerFlow","map$2","blank","peek","constructsWithoutStrikethrough","enterStrikethrough","exitStrikethrough","handleDelete","containerPhrasing","defaultStringLength","toAlignment","map$1","listInScope","none","_1","unsafe","checkQuote","quote","checkEmphasis","emptyOptions$1","compilePattern","formatLinkAsAutolink","resourceLink","text2","checkBullet","bullet","checkRule","phrasing","checkStrong","fence","checkFence","fences","formatCodeAsIndented","exit3","longestStreak","rank","literalWithBreak","node3","setext","formatHeadingAsSetext","subexit2","closeAtx","bulletCurrent","bulletOrdered","checkBulletOrdered","bulletOther","checkBulletOther","useDifferentMarker","bulletLastUsed","firstListItem","indexStack","listItemIndent","checkListItemIndent","incrementListMarker","hasPhrasing","ruleSpaces","repetition","ruleRepetition","checkRuleRepetition","enterTable","_align","inTable","exitTable","enterRow","enterCell","exitCodeText","gfmTableToMarkdown","tableCellPadding","alignDelimiters","tablePipeAlign","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","row2","sizes2","columnIndex2","columnIndex","delimiterStart","delimiterEnd","markdownTable","exitCheck","exitParagraphWithTaskListItem","firstParaghraph","sibling","listItemWithTaskListItem","checkable","wwwPrefix","ok2","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","trail","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","gfmAtext","previousEmail","emailDomain","emailDomainAfter","emailDomainDot","_gfmAutolinkLiteralWalkedInto","constructs2","indent","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","previous2","strikethrough","EditMap","editMap","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","tokenizeTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","resolveTable","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","map2","flushTableEnd","flushCell","rowEnd","previousCell","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","gfm","remarkGfm","micromarkExtensions","fromMarkdownExtensions","toMarkdownExtensions","literalAutolink","literalAutolinkEmail","literalAutolinkHttp","literalAutolinkWww","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","tableData","tableHeader","taskListCheckValueChecked","taskListCheckValueUnchecked","gfmToMarkdown","remarkPlaceholder","ast","remarkUnescape","LINK_PROTOCOLS","rehypeHighlight","referenceLimit","referenceInteractive","referenceInteractiveOptIn","parentId","renderPlaintext","componentClass","prepareTextNode","argumentId","argument","renderMarkdown","renderedMarkdown","importRehypeHighlightLibrary","nestedNode","inputNode","labelParts","nestedNodeIndex","inputComponent","NcRichText","NcAutoCompleteResult","textSmiles","multiline","contenteditable","emojiAutocomplete","linkAutocomplete","tributeId","tributeStyleMutationObserver","localValue","isAutocompleteOpen","autocompleteActiveId","isTributeIntegrationDone","isEmptyValue","isOverMaxlength","tooltipString","canEdit","paste","debouncedAutoComplete","updateContent","initializeTribute","renderMenuItem","tributesCollection","emojiResults","maxResults","emojiSearch","getLink","tmpElem","eventData","insertText","newElem","setCursorAfter","setEndAfter","moveCursorToEnd","rangeCount","commonAncestorContainer","clipboardData","files","htmlOrText","renderedContent","onCtrlEnter","onKeyEsc","getTributeContainer","getTributeSelectedItem","onTributeActive","setupTributeIntegration","hideTribute","setTributeFocusVisible","onTributeArrowKeyDown","onTributeSelectedItemWillChange","tributeContainer","withFocusVisible","showTribute","NcRichContenteditable","saving","indicatorColor","NcSavingIndicatorIcon","xmlToJson","nodeValue","xmlToTagList","canAssign","userAssignable","userVisible","fetchTags","optionsFilter","passthru","availableTags","availableOptions","tag2","NextcloudVueDocs","searchTags","NcSelectTags","clickableArea","gridBaseLine","search2","NcSelectUsers","hint","submitTranslated","idSubmit","NcSettingsInputText","HelpCircle","docUrl","limitWidth","docNameTranslated","forceLimitWidth","hasDocUrl","NcSettingsSection","hasError","filteredValue","groupsArray","loadedGroupIds","groupId","loadGroup","storageName","savedGroups","updatedValue","newGroups","filterGroups","NcSettingsSelectGroup","resize","hasPlaceholder","NcTextArea","NcThemeProvider","NcUserBubbleDiv","avatarImage","isPopoverComponent","popoverEmpty","isAvatarUrl","isCustomAvatar","hasUrl","isLinkComponent","borderRadius","marginInlineStart","NcUserBubble","dispatch","devtoolHook","deepCopy","hit","forEachValue","Module","rawModule","_children","_rawModule","rawState","namespaced","getChild","hasChild","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","this$1","rawChildModule","unregister","Store","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","commit","installModule","resetStoreVM","_devtoolHook","targetState","subscribeAction","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","vuexInit","applyMixin","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","startMessage","collapsed","groupCollapsed","endMessage","groupEnd","getFormattedTime","times","createNamespacedHelpers","createLogger","stateBefore","stateAfter","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","formattedMutation","formattedAction","Vuex","loadedRecommendations","fetchRecommendations","always","fetched","generateOcsUrl","resp","fetchRecommendedFiles","recommendations","View","FilesRecommendations","_nc_filelistheader","registerFileListHeaders","validateHeader","folder","settingsElement","Settings","Setting"],"sourceRoot":""} \ No newline at end of file diff --git a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js index a6eb7122..c01011e0 100644 --- a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js +++ b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js @@ -1 +1 @@ -"use strict";(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs"],{56798:(e,o,s)=>{s.r(o),s.d(o,{default:()=>n.N});var n=s(27885)}}]); \ No newline at end of file +"use strict";(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs"],{6798:(e,o,s)=>{s.r(o),s.d(o,{default:()=>n.N});var n=s(7885)}}]); \ No newline at end of file diff --git a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js.license b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js.license index 798ebb17..d6117969 100644 --- a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js.license +++ b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcColorPicker_mjs.js.license @@ -5,6 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0) SPDX-FileCopyrightText: xiaokai <kexiaokai@gmail.com> SPDX-FileCopyrightText: escape-html developers +SPDX-FileCopyrightText: atomiks SPDX-FileCopyrightText: Tobias Koppers @sokra SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com> SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors @@ -15,6 +16,7 @@ SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (http SPDX-FileCopyrightText: David Clark SPDX-FileCopyrightText: Christoph Wurst SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu> +SPDX-FileCopyrightText: Anthony Fu <anthonyfu117@hotmail.com> This file is generated from multiple sources. Included packages: @@ -39,9 +41,15 @@ This file is generated from multiple sources. Included packages: - @nextcloud/vue - version: 8.34.0 - license: AGPL-3.0-or-later +- vue-demi + - version: 0.14.10 + - license: MIT - @vueuse/core - version: 11.1.0 - license: MIT +- vue-demi + - version: 0.14.10 + - license: MIT - @vueuse/shared - version: 11.1.0 - license: MIT @@ -54,6 +62,12 @@ This file is generated from multiple sources. Included packages: - escape-html - version: 1.0.3 - license: MIT +- @floating-ui/core + - version: 0.3.1 + - license: MIT +- @floating-ui/dom + - version: 0.1.10 + - license: MIT - floating-vue - version: 1.0.0-beta.19 - license: MIT diff --git a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js index 92864ba0..0cffdedb 100644 --- a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js +++ b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js @@ -1 +1 @@ -"use strict";(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["node_modules_nextcloud_vue_dist_Components_NcSelect_mjs"],{67607:(e,s,n)=>{n.r(s),n.d(s,{default:()=>o.N});var o=n(78813)}}]); \ No newline at end of file +"use strict";(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["node_modules_nextcloud_vue_dist_Components_NcSelect_mjs"],{7607:(e,s,n)=>{n.r(s),n.d(s,{default:()=>o.N});var o=n(8813)}}]); \ No newline at end of file diff --git a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js.license b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js.license index 08259ecf..6fa85ff7 100644 --- a/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js.license +++ b/js/recommendations-node_modules_nextcloud_vue_dist_Components_NcSelect_mjs.js.license @@ -5,6 +5,7 @@ SPDX-License-Identifier: BSD-3-Clause SPDX-License-Identifier: AGPL-3.0-or-later SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0) SPDX-FileCopyrightText: escape-html developers +SPDX-FileCopyrightText: atomiks SPDX-FileCopyrightText: Tobias Koppers @sokra SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com) SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com> @@ -26,6 +27,7 @@ SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (http SPDX-FileCopyrightText: David Clark SPDX-FileCopyrightText: Christoph Wurst SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu> +SPDX-FileCopyrightText: Anthony Fu <anthonyfu117@hotmail.com> This file is generated from multiple sources. Included packages: @@ -33,7 +35,7 @@ This file is generated from multiple sources. Included packages: - version: 2.5.3 - license: GPL-3.0-or-later - axios - - version: 1.12.2 + - version: 1.13.2 - license: MIT - @nextcloud/axios - version: 2.5.2 @@ -65,12 +67,21 @@ This file is generated from multiple sources. Included packages: - @nextcloud/vue - version: 8.34.0 - license: AGPL-3.0-or-later +- vue-demi + - version: 0.14.10 + - license: MIT - @vueuse/components - version: 11.1.0 - license: MIT +- vue-demi + - version: 0.14.10 + - license: MIT - @vueuse/core - version: 11.1.0 - license: MIT +- vue-demi + - version: 0.14.10 + - license: MIT - @vueuse/shared - version: 11.1.0 - license: MIT @@ -95,6 +106,12 @@ This file is generated from multiple sources. Included packages: - escape-html - version: 1.0.3 - license: MIT +- @floating-ui/core + - version: 0.3.1 + - license: MIT +- @floating-ui/dom + - version: 0.1.10 + - license: MIT - floating-vue - version: 1.0.0-beta.19 - license: MIT diff --git a/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js b/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js index 1a6ecdd4..7bdd7d79 100644 --- a/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js +++ b/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js @@ -1,2 +1,2 @@ -(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["vendors-node_modules_rehype-highlight_index_js"],{38416:e=>{function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{const a=e[t],i=typeof a;"object"!==i&&"function"!==i||Object.isFrozen(a)||n(a)})),e}class t{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}const r=e=>!!e.scope;class s{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!r(e))return;const n=((e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const t=e.split(".");return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ")}return`${n}${e}`})(e.scope,{prefix:this.classPrefix});this.span(n)}closeNode(e){r(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const n={children:[]};return Object.assign(n,e),n};class l{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 n=o({scope:e});this.add(n),this.stack.push(n)}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,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),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=>{l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,n){const t=e.root;n&&(t.scope=`language:${n}`),this.add(t)}toHTML(){return new s(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function d(e){return e?"string"==typeof e?e:e.source:null}function g(e){return p("(?=",e,")")}function u(e){return p("(?:",e,")*")}function b(e){return p("(?:",e,")?")}function p(...e){return e.map((e=>d(e))).join("")}function m(...e){const n=function(e){const n=e[e.length-1];return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"}function h(e){return new RegExp(e.toString()+"|").exec("").length-1}const f=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function _(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t;let a=d(e),i="";for(;a.length>0;){const e=f.exec(a);if(!e){i+=a;break}i+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+String(Number(e[1])+n):(i+=e[0],"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)}const y="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",v="\\b\\d+(\\.\\d+)?",E="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",k="\\b(0b[01]+)",N={begin:"\\\\[\\s\\S]",relevance:0},x={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[N]},A={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[N]},S=function(e,n,t={}){const a=i({scope:"comment",begin:e,end:n,contains:[]},t);a.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 r=m("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 a.contains.push({begin:p(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},O=S("//","$"),M=S("/\\*","\\*/"),C=S("#","$"),T={scope:"number",begin:v,relevance:0},R={scope:"number",begin:E,relevance:0},I={scope:"number",begin:k,relevance:0},D={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[N,{begin:/\[/,end:/\]/,relevance:0,contains:[N]}]},L={scope:"title",begin:y,relevance:0},B={scope:"title",begin:w,relevance:0},z={begin:"\\.\\s*"+w,relevance:0};var F=Object.freeze({__proto__:null,APOS_STRING_MODE:x,BACKSLASH_ESCAPE:N,BINARY_NUMBER_MODE:I,BINARY_NUMBER_RE:k,COMMENT:S,C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:O,C_NUMBER_MODE:R,C_NUMBER_RE:E,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})},HASH_COMMENT_MODE:C,IDENT_RE:y,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:z,NUMBER_MODE:T,NUMBER_RE:v,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:A,REGEXP_MODE:D,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=p(n,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},TITLE_MODE:L,UNDERSCORE_IDENT_RE:w,UNDERSCORE_TITLE_MODE:B});function $(e,n){"."===e.input[e.index-1]&&n.ignoreMatch()}function P(e,n){void 0!==e.className&&(e.scope=e.className,delete e.className)}function U(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=$,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function j(e,n){Array.isArray(e.illegal)&&(e.illegal=m(...e.illegal))}function q(e,n){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 K(e,n){void 0===e.relevance&&(e.relevance=1)}const H=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n]})),e.keywords=t.keywords,e.begin=p(t.beforeMatch,g(t.begin)),e.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},e.relevance=0,delete t.beforeMatch},G=["of","and","for","in","not","or","if","then","parent","list","value"],Z="keyword";function W(e,n,t=Z){const a=Object.create(null);return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((function(t){Object.assign(a,W(e[t],n,t))})),a;function i(e,t){n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((function(n){const t=n.split("|");a[t[0]]=[e,X(t[0],t[1])]}))}}function X(e,n){return n?Number(n):function(e){return G.includes(e.toLowerCase())}(e)?0:1}const Q={},V=e=>{console.error(e)},J=(e,...n)=>{console.log(`WARN: ${e}`,...n)},Y=(e,n)=>{Q[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),Q[`${e}/${n}`]=!0)},ee=new Error;function ne(e,n,{key:t}){let a=0;const i=e[t],r={},s={};for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=h(n[e-1]);e[t]=s,e[t]._emit=r,e[t]._multi=!0}function te(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 V("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ee;if("object"!=typeof e.beginScope||null===e.beginScope)throw V("beginScope must be object"),ee;ne(e,e.begin,{key:"beginScope"}),e.begin=_(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw V("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ee;if("object"!=typeof e.endScope||null===e.endScope)throw V("endScope must be object"),ee;ne(e,e.end,{key:"endScope"}),e.end=_(e.end,{joinWith:""})}}(e)}function ae(e){function n(n,t){return new RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=h(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=n(_(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,a)}}class a{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 n=new t;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))),n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&this.considerAll()),t}}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=i(e.classNameAliases||{}),function t(r,s){const o=r;if(r.isCompiled)return o;[P,q,te,H].forEach((e=>e(r,s))),e.compilerExtensions.forEach((e=>e(r,s))),r.__beforeBegin=null,[U,j,K].forEach((e=>e(r,s))),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=W(r.keywords,e.case_insensitive)),o.keywordPatternRe=n(l,!0),s&&(r.begin||(r.begin=/\B|\b/),o.beginRe=n(o.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(o.endRe=n(o.end)),o.terminatorEnd=d(o.end)||"",r.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(o.illegalRe=n(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(n){return i(e,{variants:null},n)})));if(e.cachedVariants)return e.cachedVariants;if(ie(e))return i(e,{starts:e.starts?i(e.starts):null});if(Object.isFrozen(e))return i(e);return e}("self"===e?r:e)}))),r.contains.forEach((function(e){t(e,o)})),r.starts&&t(r.starts,s),o.matcher=function(e){const n=new a;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(o),o}(e)}function ie(e){return!!e&&(e.endsWithParent||ie(e.starts))}class re extends Error{constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}}const se=a,oe=i,le=Symbol("nomatch"),ce=function(e){const a=Object.create(null),i=Object.create(null),r=[];let s=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:c};function h(e){return d.noHighlightRe.test(e)}function f(e,n,t){let a="",i="";"object"==typeof n?(a=e,t=n.ignoreIllegals,i=n.language):(Y("10.7.0","highlight(lang, code, ...args) has been deprecated."),Y("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};A("before:highlight",r);const s=r.result?r.result:_(r.language,r.code,t);return s.code=r.code,A("after:highlight",s),s}function _(e,n,i,r){const l=Object.create(null);function c(){if(!A.keywords)return void O.addText(M);let e=0;A.keywordPatternRe.lastIndex=0;let n=A.keywordPatternRe.exec(M),t="";for(;n;){t+=M.substring(e,n.index);const i=E.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,A.keywords[a]);if(r){const[e,a]=r;if(O.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(C+=a),e.startsWith("_"))t+=n[0];else{const t=E.classNameAliases[e]||e;u(n[0],t)}}else t+=n[0];e=A.keywordPatternRe.lastIndex,n=A.keywordPatternRe.exec(M)}var a;t+=M.substring(e),O.addText(t)}function g(){null!=A.subLanguage?function(){if(""===M)return;let e=null;if("string"==typeof A.subLanguage){if(!a[A.subLanguage])return void O.addText(M);e=_(A.subLanguage,M,!0,S[A.subLanguage]),S[A.subLanguage]=e._top}else e=y(M,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(C+=e.relevance),O.__addSublanguage(e._emitter,e.language)}():c(),M=""}function u(e,n){""!==e&&(O.startScope(n),O.addText(e),O.endScope())}function b(e,n){let t=1;const a=n.length-1;for(;t<=a;){if(!e._emit[t]){t++;continue}const a=E.classNameAliases[e[t]]||e[t],i=n[t];a?u(i,a):(M=i,c(),M=""),t++}}function p(e,n){return e.scope&&"string"==typeof e.scope&&O.openNode(E.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(u(M,E.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),M=""):e.beginScope._multi&&(b(e.beginScope,n),M="")),A=Object.create(e,{parent:{value:A}}),A}function m(e,n,a){let i=function(e,n){const t=e&&e.exec(n);return t&&0===t.index}(e.endRe,a);if(i){if(e["on:end"]){const a=new t(e);e["on:end"](n,a),a.isMatchIgnored&&(i=!1)}if(i){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return m(e.parent,n,a)}function h(e){return 0===A.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function f(e){const t=e[0],a=n.substring(e.index),i=m(A,e,a);if(!i)return le;const r=A;A.endScope&&A.endScope._wrap?(g(),u(t,A.endScope._wrap)):A.endScope&&A.endScope._multi?(g(),b(A.endScope,e)):r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),g(),r.excludeEnd&&(M=t));do{A.scope&&O.closeNode(),A.skip||A.subLanguage||(C+=A.relevance),A=A.parent}while(A!==i.parent);return i.starts&&p(i.starts,e),r.returnEnd?0:t.length}let w={};function v(a,r){const o=r&&r[0];if(M+=a,null==o)return g(),0;if("begin"===w.type&&"end"===r.type&&w.index===r.index&&""===o){if(M+=n.slice(r.index,r.index+1),!s){const n=new Error(`0 width match regex (${e})`);throw n.languageName=e,n.badRule=w.rule,n}return 1}if(w=r,"begin"===r.type)return function(e){const n=e[0],a=e.rule,i=new t(a),r=[a.__beforeBegin,a["on:begin"]];for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return h(n);return a.skip?M+=n:(a.excludeBegin&&(M+=n),g(),a.returnBegin||a.excludeBegin||(M=n)),p(a,e),a.returnBegin?0:n.length}(r);if("illegal"===r.type&&!i){const e=new Error('Illegal lexeme "'+o+'" for mode "'+(A.scope||"<unnamed>")+'"');throw e.mode=A,e}if("end"===r.type){const e=f(r);if(e!==le)return e}if("illegal"===r.type&&""===o)return M+="\n",1;if(R>1e5&&R>3*r.index){throw new Error("potential infinite loop, way more iterations than matches")}return M+=o,o.length}const E=k(e);if(!E)throw V(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const N=ae(E);let x="",A=r||N;const S={},O=new d.__emitter(d);!function(){const e=[];for(let n=A;n!==E;n=n.parent)n.scope&&e.unshift(n.scope);e.forEach((e=>O.openNode(e)))}();let M="",C=0,T=0,R=0,I=!1;try{if(E.__emitTokens)E.__emitTokens(n,O);else{for(A.matcher.considerAll();;){R++,I?I=!1:A.matcher.considerAll(),A.matcher.lastIndex=T;const e=A.matcher.exec(n);if(!e)break;const t=v(n.substring(T,e.index),e);T=e.index+t}v(n.substring(T))}return O.finalize(),x=O.toHTML(),{language:e,value:x,relevance:C,illegal:!1,_emitter:O,_top:A}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:se(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:T,context:n.slice(T-100,T+100),mode:t.mode,resultSoFar:x},_emitter:O};if(s)return{language:e,value:se(n),illegal:!1,relevance:0,errorRaised:t,_emitter:O,_top:A};throw t}}function y(e,n){n=n||d.languages||Object.keys(a);const t=function(e){const n={value:se(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)};return n._emitter.addText(e),n}(e),i=n.filter(k).filter(x).map((n=>_(n,e,!1)));i.unshift(t);const r=i.sort(((e,n)=>{if(e.relevance!==n.relevance)return n.relevance-e.relevance;if(e.language&&n.language){if(k(e.language).supersetOf===n.language)return 1;if(k(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s;return c.secondBest=o,c}function w(e){let n=null;const t=function(e){let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=d.languageDetectRe.exec(n);if(t){const n=k(t[1]);return n||(J(o.replace("{}",t[1])),J("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"}return n.split(/\s+/).find((e=>h(e)||k(e)))}(e);if(h(t))return;if(A("before:highlightElement",{el:e,language:t}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.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)),d.throwUnescapedHTML)){throw new re("One of your code blocks includes unescaped HTML.",e.innerHTML)}n=e;const a=n.textContent,r=t?f(a,{language:t,ignoreIllegals:!0}):y(a);e.innerHTML=r.value,e.dataset.highlighted="yes",function(e,n,t){const a=n&&i[n]||t;e.classList.add("hljs"),e.classList.add(`language-${a}`)}(e,t,r.language),e.result={language:r.language,re:r.relevance,relevance:r.relevance},r.secondBest&&(e.secondBest={language:r.secondBest.language,relevance:r.secondBest.relevance}),A("after:highlightElement",{el:e,result:r,text:a})}let v=!1;function E(){if("loading"===document.readyState)return v||window.addEventListener("DOMContentLoaded",(function(){E()}),!1),void(v=!0);document.querySelectorAll(d.cssSelector).forEach(w)}function k(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function N(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{i[e.toLowerCase()]=n}))}function x(e){const n=k(e);return n&&!n.disableAutodetect}function A(e,n){const t=e;r.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(e,{highlight:f,highlightAuto:y,highlightAll:E,highlightElement:w,highlightBlock:function(e){return Y("10.7.0","highlightBlock will be removed entirely in v12.0"),Y("10.7.0","Please use highlightElement now."),w(e)},configure:function(e){d=oe(d,e)},initHighlighting:()=>{E(),Y("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){E(),Y("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(n,t){let i=null;try{i=t(e)}catch(e){if(V("Language definition for '{}' could not be registered.".replace("{}",n)),!s)throw e;V(e),i=l}i.name||(i.name=n),a[n]=i,i.rawDefinition=t.bind(null,e),i.aliases&&N(i.aliases,{languageName:n})},unregisterLanguage:function(e){delete a[e];for(const n of Object.keys(i))i[n]===e&&delete i[n]},listLanguages:function(){return Object.keys(a)},getLanguage:k,registerAliases:N,autoDetection:x,inherit:oe,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{e["before:highlightBlock"](Object.assign({block:n.el},n))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{e["after:highlightBlock"](Object.assign({block:n.el},n))})}(e),r.push(e)},removePlugin:function(e){const n=r.indexOf(e);-1!==n&&r.splice(n,1)}}),e.debugMode=function(){s=!1},e.safeMode=function(){s=!0},e.versionString="11.11.1",e.regex={concat:p,lookahead:g,either:m,optional:b,anyNumberOfTimes:u};for(const e in F)"object"==typeof F[e]&&n(F[e]);return Object.assign(e,F),e},de=ce({});de.newInstance=()=>ce({}),e.exports=de,de.HighlightJS=de,de.default=de},75862:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>Le});var a=t(69143);const i=function(e,n,t){const i=(0,a.C)(t);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if("number"==typeof n){if(n<0||n===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if((n=e.children.indexOf(n))<0)throw new Error("Expected child node or index");for(;++n<e.children.length;)if(i(e.children[n],n,e))return e.children[n]};var r=t(29747);const s=/\n/g,o=/[\t ]+/g,l=(0,r.a)("br"),c=(0,r.a)((function(e){return"td"===e.tagName||"th"===e.tagName})),d=(0,r.a)("p"),g=(0,r.a)("tr"),u=(0,r.a)(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",function(e){return Boolean((e.properties||{}).hidden)},function(e){return"dialog"===e.tagName&&!(e.properties||{}).open}]),b=(0,r.a)(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function p(e,n,t){return"element"===e.type?function(e,n,t){const a=f(e,t),r=e.children||[];let s,o,m=-1,h=[];if(u(e))return h;l(e)||g(e)&&i(n,e,g)?o="\n":d(e)?(s=2,o=2):b(e)&&(s=1,o=1);for(;++m<r.length;)h=h.concat(p(r[m],e,{whitespace:a,breakBefore:m?void 0:s,breakAfter:m<r.length-1?l(r[m+1]):o}));c(e)&&i(n,e,c)&&h.push("\t");s&&h.unshift(s);o&&h.push(o);return h}(e,n,t):"text"===e.type?"normal"===t.whitespace?m(e,t):function(e){return[String(e.value)]}(e):[]}function m(e,n){const t=String(e.value),a=[],i=[];let r=0;for(;r<=t.length;){s.lastIndex=r;const e=s.exec(t),i=e&&"index"in e?e.index:t.length;a.push(h(t.slice(r,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,""),0!==r||n.breakBefore,i!==t.length||n.breakAfter)),r=i+1}let o,l=-1;for(;++l<a.length;)8203===a[l].charCodeAt(a[l].length-1)||l<a.length-1&&8203===a[l+1].charCodeAt(0)?(i.push(a[l]),o=void 0):a[l]?("number"==typeof o&&i.push(o),i.push(a[l]),o=0):0!==l&&l!==a.length-1||i.push(0);return i}function h(e,n,t){const a=[];let i,r=0;for(;r<e.length;){o.lastIndex=r;const t=o.exec(e);i=t?t.index:e.length,r||i||!t||n||a.push(""),r!==i&&a.push(e.slice(r,i)),r=t?i+t[0].length:i}return r===i||t||a.push(""),a.join(" ")}function f(e,n){if("element"===e.type){const t=e.properties||{};switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return t.wrap?"pre-wrap":"pre";case"td":case"th":return t.noWrap?"nowrap":n.whitespace;case"textarea":return"pre-wrap"}}return n.whitespace}const _=["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"],y=["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(),w=["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(),v=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),E=["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();var k="[0-9](_*[0-9])*",N=`\\.(${k})`,x="[0-9a-fA-F](_*[0-9a-fA-F])*",A={className:"number",variants:[{begin:`(\\b(${k})((${N})|\\.)?|(${N}))[eE][+-]?(${k})[fFdD]?\\b`},{begin:`\\b(${k})((${N})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${N})[fFdD]?\\b`},{begin:`\\b(${k})[fFdD]\\b`},{begin:`\\b0[xX]((${x})\\.?|(${x})?\\.(${x}))[pP][+-]?(${k})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${x})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function S(e,n,t){return-1===t?"":e.replace(n,(a=>S(e,n,t-1)))}const O="[A-Za-z$_][0-9A-Za-z$_]*",M=["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"],C=["true","false","null","undefined","NaN","Infinity"],T=["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"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],I=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],D=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],L=[].concat(I,T,R);var B="[0-9](_*[0-9])*",z=`\\.(${B})`,F="[0-9a-fA-F](_*[0-9a-fA-F])*",$={className:"number",variants:[{begin:`(\\b(${B})((${z})|\\.)?|(${z}))[eE][+-]?(${B})[fFdD]?\\b`},{begin:`\\b(${B})((${z})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${z})[fFdD]?\\b`},{begin:`\\b(${B})[fFdD]\\b`},{begin:`\\b0[xX]((${F})\\.?|(${F})?\\.(${F}))[pP][+-]?(${B})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${F})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};const P=["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"],U=["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(),j=["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(),q=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),K=["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(),H=j.concat(q).sort().reverse();const G=["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"],Z=["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(),W=["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(),X=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Q=["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 V(e){return e?"string"==typeof e?e:e.source:null}function J(e){return Y("(?=",e,")")}function Y(...e){return e.map((e=>V(e))).join("")}function ee(...e){const n=function(e){const n=e[e.length-1];return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}(e);return"("+(n.capture?"":"?:")+e.map((e=>V(e))).join("|")+")"}const ne=e=>Y(/\b/,e,/\w$/.test(e)?/\b/:/\B/),te=["Protocol","Type"].map(ne),ae=["init","self"].map(ne),ie=["Any","Self"],re=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],se=["false","nil","true"],oe=["assignment","associativity","higherThan","left","lowerThan","none","right"],le=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],de=ee(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),ge=ee(de,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),ue=Y(de,ge,"*"),be=ee(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),pe=ee(be,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),me=Y(be,pe,"*"),he=Y(/[A-Z]/,pe,"*"),fe=["attached","autoclosure",Y(/convention\(/,ee("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",Y(/objc\(/,me,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],_e=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];const ye="[A-Za-z$_][0-9A-Za-z$_]*",we=["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"],ve=["true","false","null","undefined","NaN","Infinity"],Ee=["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"],ke=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ne=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],xe=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ae=[].concat(Ne,Ee,ke);const Se={arduino:function(e){const n={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},t=function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="(?!struct)("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},b={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},p=[b,c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:p.concat([{begin:/\(/,end:/\)/,keywords:u,contains:p.concat(["self"]),relevance:0}]),relevance:0},h={className:"function",begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[o,l]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(m,h,b,p,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:u,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:u},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}(e),a=t.keywords;return a.type=[...a.type,...n.type],a.literal=[...a.literal,...n.literal],a.built_in=[...a.built_in,...n.built_in],a._hints=n._hints,t.name="Arduino",t.aliases=["ino"],t.supersetOf="cpp",t},bash:function(e){const n=e.regex,t={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r=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"})]}},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(o);const l={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},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,r,s,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}},c:function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],p={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:b.concat([{begin:/\(/,end:/\)/,keywords:u,contains:b.concat(["self"]),relevance:0}]),relevance:0},m={begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u,disableAutodetect:!0,illegal:"</",contains:[].concat(p,m,b,[c,{begin:e.IDENT_RE+"::",keywords:u},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c,strings:o,keywords:u}}},cpp:function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="(?!struct)("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},b={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},p=[b,c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:p.concat([{begin:/\(/,end:/\)/,keywords:u,contains:p.concat(["self"]),relevance:0}]),relevance:0},h={className:"function",begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[o,l]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(m,h,b,p,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:u,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:u},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}},csharp:function(e){const n={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/,keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]});s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const g={variants:[{className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t]},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",p={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{beginKeywords:["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"].join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[g,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},p]}},css:function(e){const n=e.regex,t=(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),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},t.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},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+w.join("|")+")"},{begin:":(:)?("+v.join("|")+")"}]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+E.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.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:y.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+_.join("|")+")\\b"}]}},diff:function(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}},go:function(e){const n={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:n,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:n,illegal:/["']/}]}]}},graphql:function(e){const n=e.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:n.concat(/[_A-Za-z][_0-9A-Za-z]*/,n.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}},ini:function(e){const n=e.regex,t={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},java:function(e){const n=e.regex,t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=t+S("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},r={className:"meta",begin:"@"+t,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},s={className:"params",begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword",3:"title.class"},contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,A,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},A,r]}},javascript:function(e){const n=e.regex,t=O,a="<>",i="</>",r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const t=e[0].length+e.index,a=e.input[t];if("<"===a||","===a)return void n.ignoreMatch();let i;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1);return-1!==e.input.indexOf(t,n)})(e,{after:t})||n.ignoreMatch());const r=e.input.substring(t);((i=r.match(/^\s*=/))||(i=r.match(/^\s+extends\s+/))&&0===i.index)&&n.ignoreMatch()}},s={$pattern:O,keyword:M,literal:C,built_in:L,"variable.language":D},o="[0-9](_?[0-9])*",l=`\\.(${o})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${o})\\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},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},u={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},b={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},p={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},h={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:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},f=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,b,p,m,{match:/\$\d+/},d];g.contains=f.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(f)});const _=[].concat(h,g.contains),y=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(_)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:y},v={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},E={relevance:0,match:n.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:{_:[...T,...R]}},k={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/},N={match:n.concat(/\b/,(x=[...I,"super","import"].map((e=>`${e}\\s*\\(`)),n.concat("(?!",x.join("|"),")")),t,n.lookahead(/\s*\(/)),className:"title.function",relevance:0};var x;const A={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},S={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",z={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:E},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,u,b,p,m,h,{match:/\$\d+/},d,E,{scope:"attr",match:t+n.lookahead(":"),relevance:0},z,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,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:s,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a,end:i},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},k,{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:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},A,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},N,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,S,{match:/\$[(.]/}]}},json:function(e){const n=["true","false","null"],t={scope:"literal",beginKeywords:n.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:n},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,t,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}},kotlin:function(e){const n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(r,{className:"string"}),"self"]}]},l=$,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g],{name:"Kotlin",aliases:["kt","kts"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}},less:function(e){const 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),t=H,a="[\\w-]+",i="("+a+"|@\\{"+a+"\\})",r=[],s=[],o=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},l=function(e,n,t){return{className:e,begin:n,relevance:t}},c={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:U.join(" ")},d={begin:"\\(",end:"\\)",contains:s,keywords:c,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o("'"),o('"'),n.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},n.HEXCOLOR,d,l("variable","@@?"+a,10),l("variable","@\\{"+a+"\\}"),l("built_in","~?`[^`]*?`"),{className:"attribute",begin:a+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},n.IMPORTANT,{beginKeywords:"and not"},n.FUNCTION_DISPATCH);const g=s.concat({begin:/\{/,end:/\}/,contains:r}),u={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},b={begin:i+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+K.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},p={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:c,returnEnd:!0,contains:s,relevance:0}},m={className:"variable",variants:[{begin:"@"+a+"\\s*:",relevance:15},{begin:"@"+a}],starts:{end:"[;}]",returnEnd:!0,contains:g}},h={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:i,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,u,l("keyword","all\\b"),l("variable","@\\{"+a+"\\}"),{begin:"\\b("+P.join("|")+")\\b",className:"selector-tag"},n.CSS_NUMBER_MODE,l("selector-tag",i,0),l("selector-id","#"+i),l("selector-class","\\."+i,0),l("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+j.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+q.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:g},{begin:"!important"},n.FUNCTION_DISPATCH]},f={begin:a+":(:)?"+`(${t.join("|")})`,returnBegin:!0,contains:[h]};return r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,p,m,f,b,h,u,n.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:r}},lua:function(e){const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"]},i=[e.COMMENT("--(?!"+n+")","$"),e.COMMENT("--"+n,t,{contains:[a],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:i}].concat(i)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:n,end:t,contains:[a],relevance:5}])}},makefile:function(e){const n={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},t={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n]},a={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[n,t]},i={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,n,t,a,i,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}},markdown:function(e){const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},r=e.inherit(a,{contains:[]}),s=e.inherit(i,{contains:[]});a.contains.push(s),i.contains.push(r);let o=[n,t];return[a,i,r,s].forEach((e=>{e.contains=e.contains.concat(o)})),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:o,end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}},objectivec:function(e){const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:n,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}},perl:function(e){const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={$pattern:/[\w.]+/,keyword:["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"].join(" ")},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/,end:/\}/},s={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},o={scope:"variable",variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[s]},l={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},c=[e.BACKSLASH_ESCAPE,i,o],d=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,a,i="\\1")=>{const r="\\1"===i?i:n.concat(i,a);return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t)},u=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),b=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),r,{className:"string",contains:c,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},l,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:g("s|tr|y",n.either(...d,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:u("(?:m|qr)?",/\//,/\//)},{begin:u("m|qr",n.either(...d,{capture:!0}),/\1/)},{begin:u("m|qr",/\(/,/\)/)},{begin:u("m|qr",/\[/,/\]/)},{begin:u("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,s]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,s,l]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return i.contains=b,r.contains=b,{name:"Perl",aliases:["pl","pm"],keywords:a,contains:b}},php:function(e){const n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,a=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),i=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),r=n.concat(/[A-Z]+/,t),s={scope:"variable",match:"\\$+"+a},o={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),c="[ \t\n]",d={scope:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(o)}),l,{begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(o),"on:begin":(e,n)=>{n.data._beginMatch=e[1]||e[2]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}},e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/})]},g={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},u=["false","null","true"],b=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],p=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],m={keyword:b,literal:(e=>{const n=[];return e.forEach((e=>{n.push(e),e.toLowerCase()===e?n.push(e.toUpperCase()):n.push(e.toLowerCase())})),n})(u),built_in:p},h=e=>e.map((e=>e.replace(/\|\d+$/,""))),f={variants:[{match:[/new/,n.concat(c,"+"),n.concat("(?!",h(p).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},_=n.concat(a,"\\b(?!\\()"),y={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),_],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,n.concat(/::/,n.lookahead(/(?!class\b)/)),_],scope:{1:"title.class",3:"variable.constant"}},{match:[i,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},w={scope:"attr",match:n.concat(a,n.lookahead(":"),n.lookahead(/(?!::)/))},v={relevance:0,begin:/\(/,end:/\)/,keywords:m,contains:[w,s,y,e.C_BLOCK_COMMENT_MODE,d,g,f]},E={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",h(b).join("\\b|"),"|",h(p).join("\\b|"),"\\b)"),a,n.concat(c,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[v]};v.contains.push(E);const k=[w,y,e.C_BLOCK_COMMENT_MODE,d,g,f],N={begin:n.concat(/#\[\s*\\?/,n.either(i,r)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:u,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:u,keyword:["new","array"]},contains:["self",...k]},...k,{scope:"meta",variants:[{match:i},{match:r}]}]};return{case_insensitive:!1,keywords:m,contains:[N,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},s,E,y,{match:[/const/,/\s/,a],scope:{1:"keyword",3:"variable.constant"}},f,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:m,contains:["self",N,s,y,e.C_BLOCK_COMMENT_MODE,d,g]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},d,g]}},"php-template":function(e){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}},plaintext:function(e){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}},python:function(e){const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a=["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"],i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:a,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"]},r={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/,end:/\}/,keywords:i,illegal:/#/},o={begin:/\{\{/,relevance:0},l={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r,o,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,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,o,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},c="[0-9](_?[0-9])*",d=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,g=`\\b|${a.join("|")}`,u={className:"number",relevance:0,variants:[{begin:`(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${g})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${c})[jJ](?=${g})`}]},b={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},p={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,u,l,e.HASH_COMMENT_MODE]}]};return s.contains=[l,u,r],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[r,u,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},l,b,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[p]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[u,p,l]}]}},"python-repl":function(e){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}},r:function(e){const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:t,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"},match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}},ruby:function(e){const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),r={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},o={begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/,end:/\}/,keywords:r},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",u={className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:r}]},p=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,i],scope:{2:"title.class"},keywords:r},{relevance:0,match:[i,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:t}],relevance:0},u,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o,l),relevance:0}].concat(o,l);c.contains=p,b.contains=p;const m=[{begin:/^\s*=>/,starts:{end:"$",contains:p}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:r,contains:p}}];return l.unshift(o),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(m).concat(l).concat(p)}},rust:function(e){const n=e.regex,t=/(r#)?/,a=n.concat(t,e.UNDERSCORE_IDENT_RE),i=n.concat(t,e.IDENT_RE),r={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,i,n.lookahead(/\s*\(/))},s="([ui](8|16|32|64|128|size)|f(32|64))?",o=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],l=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:l,keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],literal:["true","false","Some","None","Ok","Err"],built_in:o},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+s},{begin:"\\b0o([0-7_]+)"+s},{begin:"\\b0x([A-Fa-f0-9_]+)"+s},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+s}],relevance:0},{begin:[/fn/,/\s+/,a],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,a],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,a,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:o,type:l}},{className:"punctuation",begin:"->"},r]}},scss:function(e){const 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),t=X,a=W,i="@[a-z-]+",r={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+G.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+a.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/,contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Q.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT,n.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Z.join(" ")},contains:[{begin:i,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]},n.FUNCTION_DISPATCH]}},shell:function(e){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}},sql:function(e){const n=e.regex,t=e.COMMENT("--","$"),a=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],i=a,r=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!a.includes(e))),s={match:n.concat(/\b/,n.either(...i),/\s*\(/),relevance:0,keywords:{built_in:i}};function o(e){return n.concat(/\b/,n.either(...e.map((e=>e.replace(/\s+/,"\\s+")))),/\b/)}const l={scope:"keyword",match:o(["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"]),relevance:0};return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:function(e,{exceptions:n,when:t}={}){const a=t;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?`${e}|0`:e))}(r,{when:e=>e.length<3}),literal:["true","false","unknown"],type:["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]},contains:[{scope:"type",match:o(["double precision","large object","with timezone","without timezone"])},l,s,{scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},{scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},{begin:/"/,end:/"/,contains:[{match:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}},swift:function(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,ee(...te,...ae)],className:{2:"keyword"}},r={match:Y(/\./,ee(...re)),relevance:0},s=re.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{className:"keyword",match:ee(...re.filter((e=>"string"!=typeof e)).concat(ie).map(ne),...ae)}]},l={$pattern:ee(/\b\w+/,/#\w+/),keyword:s.concat(le),literal:se},c=[i,r,o],d=[{match:Y(/\./,ee(...ce)),relevance:0},{className:"built_in",match:Y(/\b/,ee(...ce),/(?=\()/)}],g={match:/->/,relevance:0},u=[g,{className:"operator",relevance:0,variants:[{match:ue},{match:`\\.(\\.|${ge})+`}]}],b="([0-9]_*)+",p="([0-9a-fA-F]_*)+",m={className:"number",relevance:0,variants:[{match:`\\b(${b})(\\.(${b}))?([eE][+-]?(${b}))?\\b`},{match:`\\b0x(${p})(\\.(${p}))?([pP][+-]?(${b}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},h=(e="")=>({className:"subst",variants:[{match:Y(/\\/,e,/[0\\tnr"']/)},{match:Y(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),f=(e="")=>({className:"subst",match:Y(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),_=(e="")=>({className:"subst",label:"interpol",begin:Y(/\\/,e,/\(/),end:/\)/}),y=(e="")=>({begin:Y(e,/"""/),end:Y(/"""/,e),contains:[h(e),f(e),_(e)]}),w=(e="")=>({begin:Y(e,/"/),end:Y(/"/,e),contains:[h(e),_(e)]}),v={className:"string",variants:[y(),y("#"),y("##"),y("###"),w(),w("#"),w("##"),w("###")]},E=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],k={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:E},N=e=>{const n=Y(e,/\//),t=Y(/\//,e);return{begin:n,end:t,contains:[...E,{scope:"comment",begin:`#(?!.*${t})`,end:/$/}]}},x={scope:"regexp",variants:[N("###"),N("##"),N("#"),k]},A={match:Y(/`/,me,/`/)},S=[A,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${pe}+`}],O=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:_e,contains:[...u,m,v]}]}},{scope:"keyword",match:Y(/@/,ee(...fe),J(ee(/\(/,/\s+/)))},{scope:"meta",match:Y(/@/,me)}],M={match:J(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:Y(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,pe,"+")},{className:"type",match:he,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:Y(/\s+&\s+/,J(he)),relevance:0}]},C={begin:/</,end:/>/,keywords:l,contains:[...a,...c,...O,g,M]};M.contains.push(C);const T={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{match:Y(me,/\s*:/),keywords:"_|0",relevance:0},...a,x,...c,...d,...u,m,v,...S,...O,M]},R={begin:/</,end:/>/,keywords:"repeat each",contains:[...a,M]},I={begin:/\(/,end:/\)/,keywords:l,contains:[{begin:ee(J(Y(me,/\s*:/)),J(Y(me,/\s+/,me,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:me}]},...a,...c,...u,m,v,...O,M,T],endsParent:!0,illegal:/["']/},D={match:[/(func|macro)/,/\s+/,ee(A.match,me,ue)],className:{1:"keyword",3:"title.function"},contains:[R,I,n],illegal:[/\[/,/%/]},L={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[R,I,n],illegal:/\[|%/},B={match:[/operator/,/\s+/,ue],className:{1:"keyword",3:"title"}},z={begin:[/precedencegroup/,/\s+/,he],className:{1:"keyword",3:"title"},contains:[M],keywords:[...oe,...se],end:/}/},F={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,me,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:l,contains:[R,...c,{begin:/:/,end:/\{/,keywords:l,contains:[{scope:"title.class.inherited",match:he},...c],relevance:0}]};for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label));n.keywords=l;const t=[...c,...d,...u,m,v,...S];n.contains=[...t,{begin:/\(/,end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l,contains:[...a,D,L,{match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},{match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},F,B,z,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0},x,...c,...d,...u,m,v,...S,...O,M,T]}},typescript:function(e){const n=e.regex,t=function(e){const n=e.regex,t=ye,a="<>",i="</>",r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const t=e[0].length+e.index,a=e.input[t];if("<"===a||","===a)return void n.ignoreMatch();let i;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1);return-1!==e.input.indexOf(t,n)})(e,{after:t})||n.ignoreMatch());const r=e.input.substring(t);((i=r.match(/^\s*=/))||(i=r.match(/^\s+extends\s+/))&&0===i.index)&&n.ignoreMatch()}},s={$pattern:ye,keyword:we,literal:ve,built_in:Ae,"variable.language":xe},o="[0-9](_?[0-9])*",l=`\\.(${o})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${o})\\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},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},u={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},b={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},p={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},h={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:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},f=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,b,p,m,{match:/\$\d+/},d];g.contains=f.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(f)});const _=[].concat(h,g.contains),y=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(_)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:y},v={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},E={relevance:0,match:n.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:{_:[...Ee,...ke]}},k={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/},N={match:n.concat(/\b/,(x=[...Ne,"super","import"].map((e=>`${e}\\s*\\(`)),n.concat("(?!",x.join("|"),")")),t,n.lookahead(/\s*\(/)),className:"title.function",relevance:0};var x;const A={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},S={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},O="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",M={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(O)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:E},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,u,b,p,m,h,{match:/\$\d+/},d,E,{scope:"attr",match:t+n.lookahead(":"),relevance:0},M,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,e.REGEXP_MODE,{className:"function",begin:O,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:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a,end:i},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},k,{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:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},A,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},N,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,S,{match:/\$[(.]/}]}}(e),a=ye,i=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],r={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:i},contains:[t.exports.CLASS_REFERENCE]},o={$pattern:ye,keyword:we.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]),literal:ve,built_in:Ae.concat(i),"variable.language":xe},l={className:"meta",begin:"@"+a},c=(e,n,t)=>{const a=e.contains.findIndex((e=>e.label===n));if(-1===a)throw new Error("can not find mode to replace");e.contains.splice(a,1,t)};Object.assign(t.keywords,o),t.exports.PARAMS_CONTAINS.push(l);const d=t.contains.find((e=>"attr"===e.scope)),g=Object.assign({},d,{match:n.concat(a,n.lookahead(/\s*\?:/))});return t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,d,g]),t.contains=t.contains.concat([l,r,s,g]),c(t,"shebang",e.SHEBANG()),c(t,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/}),t.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t},vbnet:function(e){const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}]},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},o,l,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[l]}]}},wasm:function(e){e.regex;const n=e.COMMENT(/\(;/,/;\)/);return n.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[e.COMMENT(/;;/,/$/),n,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}},xml:function(e){const n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:"string"}),o=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:[a]},{begin:/'/,end:/'/,contains:[a]},{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:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,r,o,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[o]},{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:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}},yaml:function(e){const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},s={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},o={begin:/\{/,end:/\}/,contains:[s],illegal:"\\n",relevance:0},l={begin:"\\[",end:"\\]",contains:[s],illegal:"\\n",relevance:0},c=[{className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},r,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},o,l,{className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a],d=[...c];return d.pop(),d.push(i),s.contains=d,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:c}}};var Oe=t(97471);const Me=t(38416),Ce={},Te="hljs-";class Re{constructor(e){this.options=e,this.root={type:"root",children:[],data:{language:void 0,relevance:0}},this.stack=[this.root]}addText(e){if(""===e)return;const n=this.stack[this.stack.length-1],t=n.children[n.children.length-1];t&&"text"===t.type?t.value+=e:n.children.push({type:"text",value:e})}startScope(e){this.openNode(String(e))}endScope(){this.closeNode()}__addSublanguage(e,n){const t=this.stack[this.stack.length-1],a=e.root.children;n?t.children.push({type:"element",tagName:"span",properties:{className:[n]},children:a}):t.children.push(...a)}openNode(e){const n=this,t={type:"element",tagName:"span",properties:{className:e.split(".").map((function(e,t){return t?e+"_".repeat(t):n.options.classPrefix+e}))},children:[]};this.stack[this.stack.length-1].children.push(t),this.stack.push(t)}closeNode(){this.stack.pop()}finalize(){}toHTML(){return""}}var Ie=t(47970);const De={};function Le(e){const n=e||De,t=n.aliases,a=n.detect||!1,i=n.languages||Se,r=n.plainText,s=n.prefix,o=n.subset;let c="hljs";const d=function(e){const n=Me.newInstance();return e&&i(e),{highlight:t,highlightAuto:function(e,i){(0,Oe.ok)("string"==typeof e,"expected `string` as `value`");const r=(i||Ce).subset||a();let s,o=-1,l=0;for(;++o<r.length;){const a=r[o];if(!n.getLanguage(a))continue;const c=t(a,e,i);c.data&&void 0!==c.data.relevance&&c.data.relevance>l&&(l=c.data.relevance,s=c)}return s||{type:"root",children:[],data:{language:void 0,relevance:l}}},listLanguages:a,register:i,registerAlias:function(e,t){if("string"==typeof e)(0,Oe.ok)(void 0!==t),n.registerAliases("string"==typeof t?t:[...t],{languageName:e});else{let t;for(t in e)if(Object.hasOwn(e,t)){const a=e[t];n.registerAliases("string"==typeof a?a:[...a],{languageName:t})}}},registered:function(e){return Boolean(n.getLanguage(e))}};function t(e,t,a){(0,Oe.ok)("string"==typeof e,"expected `string` as `name`"),(0,Oe.ok)("string"==typeof t,"expected `string` as `value`");const i=a||Ce,r="string"==typeof i.prefix?i.prefix:Te;if(!n.getLanguage(e))throw new Error("Unknown language: `"+e+"` is not registered");n.configure({__emitter:Re,classPrefix:r});const s=n.highlight(t,{ignoreIllegals:!0,language:e});if(s.errorRaised)throw new Error("Could not highlight with `Highlight.js`",{cause:s.errorRaised});const o=s._emitter.root,l=o.data;return l.language=s.language,l.relevance=s.relevance,o}function a(){return n.listLanguages()}function i(e,t){if("string"==typeof e)(0,Oe.ok)(void 0!==t,"expected `grammar`"),n.registerLanguage(e,t);else{let t;for(t in e)Object.hasOwn(e,t)&&n.registerLanguage(t,e[t])}}}(i);if(t&&d.registerAlias(t),s){const e=s.indexOf("-");c=-1===e?s:s.slice(0,e)}return function(e,n){(0,Ie.YR)(e,"element",(function(e,t,i){if("code"!==e.tagName||!i||"element"!==i.type||"pre"!==i.tagName)return;const g=function(e){const n=e.properties.className;let t,a=-1;if(!Array.isArray(n))return;for(;++a<n.length;){const e=String(n[a]);if("no-highlight"===e||"nohighlight"===e)return!1;t||"lang-"!==e.slice(0,5)||(t=e.slice(5)),t||"language-"!==e.slice(0,9)||(t=e.slice(9))}return t}(e);if(!1===g||!g&&!a||g&&r&&r.includes(g))return;Array.isArray(e.properties.className)||(e.properties.className=[]),e.properties.className.includes(c)||e.properties.className.unshift(c);const u=function(e,n){const t=n||{},a="children"in e?e.children:[],i=b(e),r=f(e,{whitespace:t.whitespace||"normal",breakBefore:!1,breakAfter:!1}),s=[];"text"!==e.type&&"comment"!==e.type||s.push(...m(e,{whitespace:r,breakBefore:!0,breakAfter:!0}));let o=-1;for(;++o<a.length;)s.push(...p(a[o],e,{whitespace:r,breakBefore:o?void 0:i,breakAfter:o<a.length-1?l(a[o+1]):i}));const c=[];let d;for(o=-1;++o<s.length;){const e=s[o];"number"==typeof e?void 0!==d&&e>d&&(d=e):e&&(void 0!==d&&d>-1&&c.push("\n".repeat(d)||" "),d=-1,c.push(e))}return c.join("")}(e,{whitespace:"pre"});let h;try{h=g?d.highlight(g,u,{prefix:s}):d.highlightAuto(u,{prefix:s,subset:o})}catch(t){const a=t;if(g&&/Unknown language/.test(a.message))return void n.message("Cannot highlight as `"+g+"`, it’s not registered",{ancestors:[i,e],cause:a,place:e.position,ruleId:"missing-language",source:"rehype-highlight"});throw a}!g&&h.data&&h.data.language&&e.properties.className.push("language-"+h.data.language),h.children.length>0&&(e.children=h.children)}))}}}}]); -//# sourceMappingURL=recommendations-vendors-node_modules_rehype-highlight_index_js.js.map?v=d0bba19fc6d463e6deda \ No newline at end of file +(self.webpackChunkrecommendations=self.webpackChunkrecommendations||[]).push([["vendors-node_modules_rehype-highlight_index_js"],{8416:e=>{function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{const a=e[t],i=typeof a;"object"!==i&&"function"!==i||Object.isFrozen(a)||n(a)})),e}class t{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}const r=e=>!!e.scope;class s{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!r(e))return;const n=((e,{prefix:n})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const t=e.split(".");return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ")}return`${n}${e}`})(e.scope,{prefix:this.classPrefix});this.span(n)}closeNode(e){r(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const n={children:[]};return Object.assign(n,e),n};class l{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 n=o({scope:e});this.add(n),this.stack.push(n)}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,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),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=>{l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,n){const t=e.root;n&&(t.scope=`language:${n}`),this.add(t)}toHTML(){return new s(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function d(e){return e?"string"==typeof e?e:e.source:null}function g(e){return p("(?=",e,")")}function u(e){return p("(?:",e,")*")}function b(e){return p("(?:",e,")?")}function p(...e){return e.map((e=>d(e))).join("")}function m(...e){const n=function(e){const n=e[e.length-1];return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"}function h(e){return new RegExp(e.toString()+"|").exec("").length-1}const f=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function _(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t;let a=d(e),i="";for(;a.length>0;){const e=f.exec(a);if(!e){i+=a;break}i+=a.substring(0,e.index),a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+String(Number(e[1])+n):(i+=e[0],"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)}const y="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",v="\\b\\d+(\\.\\d+)?",E="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",k="\\b(0b[01]+)",N={begin:"\\\\[\\s\\S]",relevance:0},x={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[N]},A={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[N]},S=function(e,n,t={}){const a=i({scope:"comment",begin:e,end:n,contains:[]},t);a.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 r=m("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 a.contains.push({begin:p(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},O=S("//","$"),M=S("/\\*","\\*/"),C=S("#","$"),T={scope:"number",begin:v,relevance:0},R={scope:"number",begin:E,relevance:0},I={scope:"number",begin:k,relevance:0},D={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[N,{begin:/\[/,end:/\]/,relevance:0,contains:[N]}]},L={scope:"title",begin:y,relevance:0},B={scope:"title",begin:w,relevance:0},z={begin:"\\.\\s*"+w,relevance:0};var F=Object.freeze({__proto__:null,APOS_STRING_MODE:x,BACKSLASH_ESCAPE:N,BINARY_NUMBER_MODE:I,BINARY_NUMBER_RE:k,COMMENT:S,C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:O,C_NUMBER_MODE:R,C_NUMBER_RE:E,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})},HASH_COMMENT_MODE:C,IDENT_RE:y,MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:z,NUMBER_MODE:T,NUMBER_RE:v,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:A,REGEXP_MODE:D,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=p(n,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},TITLE_MODE:L,UNDERSCORE_IDENT_RE:w,UNDERSCORE_TITLE_MODE:B});function $(e,n){"."===e.input[e.index-1]&&n.ignoreMatch()}function P(e,n){void 0!==e.className&&(e.scope=e.className,delete e.className)}function U(e,n){n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=$,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function j(e,n){Array.isArray(e.illegal)&&(e.illegal=m(...e.illegal))}function q(e,n){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 K(e,n){void 0===e.relevance&&(e.relevance=1)}const H=(e,n)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n]})),e.keywords=t.keywords,e.begin=p(t.beforeMatch,g(t.begin)),e.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},e.relevance=0,delete t.beforeMatch},G=["of","and","for","in","not","or","if","then","parent","list","value"],Z="keyword";function W(e,n,t=Z){const a=Object.create(null);return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((function(t){Object.assign(a,W(e[t],n,t))})),a;function i(e,t){n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((function(n){const t=n.split("|");a[t[0]]=[e,X(t[0],t[1])]}))}}function X(e,n){return n?Number(n):function(e){return G.includes(e.toLowerCase())}(e)?0:1}const Q={},V=e=>{console.error(e)},J=(e,...n)=>{console.log(`WARN: ${e}`,...n)},Y=(e,n)=>{Q[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),Q[`${e}/${n}`]=!0)},ee=new Error;function ne(e,n,{key:t}){let a=0;const i=e[t],r={},s={};for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=h(n[e-1]);e[t]=s,e[t]._emit=r,e[t]._multi=!0}function te(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 V("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ee;if("object"!=typeof e.beginScope||null===e.beginScope)throw V("beginScope must be object"),ee;ne(e,e.begin,{key:"beginScope"}),e.begin=_(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw V("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ee;if("object"!=typeof e.endScope||null===e.endScope)throw V("endScope must be object"),ee;ne(e,e.end,{key:"endScope"}),e.end=_(e.end,{joinWith:""})}}(e)}function ae(e){function n(n,t){return new RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=h(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=n(_(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,a)}}class a{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 n=new t;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))),n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;let t=n.exec(e);if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&this.considerAll()),t}}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=i(e.classNameAliases||{}),function t(r,s){const o=r;if(r.isCompiled)return o;[P,q,te,H].forEach((e=>e(r,s))),e.compilerExtensions.forEach((e=>e(r,s))),r.__beforeBegin=null,[U,j,K].forEach((e=>e(r,s))),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=W(r.keywords,e.case_insensitive)),o.keywordPatternRe=n(l,!0),s&&(r.begin||(r.begin=/\B|\b/),o.beginRe=n(o.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(o.endRe=n(o.end)),o.terminatorEnd=d(o.end)||"",r.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(r.end?"|":"")+s.terminatorEnd)),r.illegal&&(o.illegalRe=n(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(n){return i(e,{variants:null},n)})));if(e.cachedVariants)return e.cachedVariants;if(ie(e))return i(e,{starts:e.starts?i(e.starts):null});if(Object.isFrozen(e))return i(e);return e}("self"===e?r:e)}))),r.contains.forEach((function(e){t(e,o)})),r.starts&&t(r.starts,s),o.matcher=function(e){const n=new a;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(o),o}(e)}function ie(e){return!!e&&(e.endsWithParent||ie(e.starts))}class re extends Error{constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}}const se=a,oe=i,le=Symbol("nomatch"),ce=function(e){const a=Object.create(null),i=Object.create(null),r=[];let s=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let d={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:c};function h(e){return d.noHighlightRe.test(e)}function f(e,n,t){let a="",i="";"object"==typeof n?(a=e,t=n.ignoreIllegals,i=n.language):(Y("10.7.0","highlight(lang, code, ...args) has been deprecated."),Y("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};A("before:highlight",r);const s=r.result?r.result:_(r.language,r.code,t);return s.code=r.code,A("after:highlight",s),s}function _(e,n,i,r){const l=Object.create(null);function c(){if(!A.keywords)return void O.addText(M);let e=0;A.keywordPatternRe.lastIndex=0;let n=A.keywordPatternRe.exec(M),t="";for(;n;){t+=M.substring(e,n.index);const i=E.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,A.keywords[a]);if(r){const[e,a]=r;if(O.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(C+=a),e.startsWith("_"))t+=n[0];else{const t=E.classNameAliases[e]||e;u(n[0],t)}}else t+=n[0];e=A.keywordPatternRe.lastIndex,n=A.keywordPatternRe.exec(M)}var a;t+=M.substring(e),O.addText(t)}function g(){null!=A.subLanguage?function(){if(""===M)return;let e=null;if("string"==typeof A.subLanguage){if(!a[A.subLanguage])return void O.addText(M);e=_(A.subLanguage,M,!0,S[A.subLanguage]),S[A.subLanguage]=e._top}else e=y(M,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(C+=e.relevance),O.__addSublanguage(e._emitter,e.language)}():c(),M=""}function u(e,n){""!==e&&(O.startScope(n),O.addText(e),O.endScope())}function b(e,n){let t=1;const a=n.length-1;for(;t<=a;){if(!e._emit[t]){t++;continue}const a=E.classNameAliases[e[t]]||e[t],i=n[t];a?u(i,a):(M=i,c(),M=""),t++}}function p(e,n){return e.scope&&"string"==typeof e.scope&&O.openNode(E.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(u(M,E.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),M=""):e.beginScope._multi&&(b(e.beginScope,n),M="")),A=Object.create(e,{parent:{value:A}}),A}function m(e,n,a){let i=function(e,n){const t=e&&e.exec(n);return t&&0===t.index}(e.endRe,a);if(i){if(e["on:end"]){const a=new t(e);e["on:end"](n,a),a.isMatchIgnored&&(i=!1)}if(i){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return m(e.parent,n,a)}function h(e){return 0===A.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function f(e){const t=e[0],a=n.substring(e.index),i=m(A,e,a);if(!i)return le;const r=A;A.endScope&&A.endScope._wrap?(g(),u(t,A.endScope._wrap)):A.endScope&&A.endScope._multi?(g(),b(A.endScope,e)):r.skip?M+=t:(r.returnEnd||r.excludeEnd||(M+=t),g(),r.excludeEnd&&(M=t));do{A.scope&&O.closeNode(),A.skip||A.subLanguage||(C+=A.relevance),A=A.parent}while(A!==i.parent);return i.starts&&p(i.starts,e),r.returnEnd?0:t.length}let w={};function v(a,r){const o=r&&r[0];if(M+=a,null==o)return g(),0;if("begin"===w.type&&"end"===r.type&&w.index===r.index&&""===o){if(M+=n.slice(r.index,r.index+1),!s){const n=new Error(`0 width match regex (${e})`);throw n.languageName=e,n.badRule=w.rule,n}return 1}if(w=r,"begin"===r.type)return function(e){const n=e[0],a=e.rule,i=new t(a),r=[a.__beforeBegin,a["on:begin"]];for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return h(n);return a.skip?M+=n:(a.excludeBegin&&(M+=n),g(),a.returnBegin||a.excludeBegin||(M=n)),p(a,e),a.returnBegin?0:n.length}(r);if("illegal"===r.type&&!i){const e=new Error('Illegal lexeme "'+o+'" for mode "'+(A.scope||"<unnamed>")+'"');throw e.mode=A,e}if("end"===r.type){const e=f(r);if(e!==le)return e}if("illegal"===r.type&&""===o)return M+="\n",1;if(R>1e5&&R>3*r.index){throw new Error("potential infinite loop, way more iterations than matches")}return M+=o,o.length}const E=k(e);if(!E)throw V(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const N=ae(E);let x="",A=r||N;const S={},O=new d.__emitter(d);!function(){const e=[];for(let n=A;n!==E;n=n.parent)n.scope&&e.unshift(n.scope);e.forEach((e=>O.openNode(e)))}();let M="",C=0,T=0,R=0,I=!1;try{if(E.__emitTokens)E.__emitTokens(n,O);else{for(A.matcher.considerAll();;){R++,I?I=!1:A.matcher.considerAll(),A.matcher.lastIndex=T;const e=A.matcher.exec(n);if(!e)break;const t=v(n.substring(T,e.index),e);T=e.index+t}v(n.substring(T))}return O.finalize(),x=O.toHTML(),{language:e,value:x,relevance:C,illegal:!1,_emitter:O,_top:A}}catch(t){if(t.message&&t.message.includes("Illegal"))return{language:e,value:se(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:T,context:n.slice(T-100,T+100),mode:t.mode,resultSoFar:x},_emitter:O};if(s)return{language:e,value:se(n),illegal:!1,relevance:0,errorRaised:t,_emitter:O,_top:A};throw t}}function y(e,n){n=n||d.languages||Object.keys(a);const t=function(e){const n={value:se(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)};return n._emitter.addText(e),n}(e),i=n.filter(k).filter(x).map((n=>_(n,e,!1)));i.unshift(t);const r=i.sort(((e,n)=>{if(e.relevance!==n.relevance)return n.relevance-e.relevance;if(e.language&&n.language){if(k(e.language).supersetOf===n.language)return 1;if(k(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s;return c.secondBest=o,c}function w(e){let n=null;const t=function(e){let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=d.languageDetectRe.exec(n);if(t){const n=k(t[1]);return n||(J(o.replace("{}",t[1])),J("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"}return n.split(/\s+/).find((e=>h(e)||k(e)))}(e);if(h(t))return;if(A("before:highlightElement",{el:e,language:t}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);if(e.children.length>0&&(d.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)),d.throwUnescapedHTML)){throw new re("One of your code blocks includes unescaped HTML.",e.innerHTML)}n=e;const a=n.textContent,r=t?f(a,{language:t,ignoreIllegals:!0}):y(a);e.innerHTML=r.value,e.dataset.highlighted="yes",function(e,n,t){const a=n&&i[n]||t;e.classList.add("hljs"),e.classList.add(`language-${a}`)}(e,t,r.language),e.result={language:r.language,re:r.relevance,relevance:r.relevance},r.secondBest&&(e.secondBest={language:r.secondBest.language,relevance:r.secondBest.relevance}),A("after:highlightElement",{el:e,result:r,text:a})}let v=!1;function E(){if("loading"===document.readyState)return v||window.addEventListener("DOMContentLoaded",(function(){E()}),!1),void(v=!0);document.querySelectorAll(d.cssSelector).forEach(w)}function k(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]}function N(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{i[e.toLowerCase()]=n}))}function x(e){const n=k(e);return n&&!n.disableAutodetect}function A(e,n){const t=e;r.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(e,{highlight:f,highlightAuto:y,highlightAll:E,highlightElement:w,highlightBlock:function(e){return Y("10.7.0","highlightBlock will be removed entirely in v12.0"),Y("10.7.0","Please use highlightElement now."),w(e)},configure:function(e){d=oe(d,e)},initHighlighting:()=>{E(),Y("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){E(),Y("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(n,t){let i=null;try{i=t(e)}catch(e){if(V("Language definition for '{}' could not be registered.".replace("{}",n)),!s)throw e;V(e),i=l}i.name||(i.name=n),a[n]=i,i.rawDefinition=t.bind(null,e),i.aliases&&N(i.aliases,{languageName:n})},unregisterLanguage:function(e){delete a[e];for(const n of Object.keys(i))i[n]===e&&delete i[n]},listLanguages:function(){return Object.keys(a)},getLanguage:k,registerAliases:N,autoDetection:x,inherit:oe,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{e["before:highlightBlock"](Object.assign({block:n.el},n))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{e["after:highlightBlock"](Object.assign({block:n.el},n))})}(e),r.push(e)},removePlugin:function(e){const n=r.indexOf(e);-1!==n&&r.splice(n,1)}}),e.debugMode=function(){s=!1},e.safeMode=function(){s=!0},e.versionString="11.11.1",e.regex={concat:p,lookahead:g,either:m,optional:b,anyNumberOfTimes:u};for(const e in F)"object"==typeof F[e]&&n(F[e]);return Object.assign(e,F),e},de=ce({});de.newInstance=()=>ce({}),e.exports=de,de.HighlightJS=de,de.default=de},5862:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>Le});var a=t(9143);const i=function(e,n,t){const i=(0,a.C)(t);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if("number"==typeof n){if(n<0||n===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if((n=e.children.indexOf(n))<0)throw new Error("Expected child node or index");for(;++n<e.children.length;)if(i(e.children[n],n,e))return e.children[n]};var r=t(9747);const s=/\n/g,o=/[\t ]+/g,l=(0,r.a)("br"),c=(0,r.a)((function(e){return"td"===e.tagName||"th"===e.tagName})),d=(0,r.a)("p"),g=(0,r.a)("tr"),u=(0,r.a)(["datalist","head","noembed","noframes","noscript","rp","script","style","template","title",function(e){return Boolean((e.properties||{}).hidden)},function(e){return"dialog"===e.tagName&&!(e.properties||{}).open}]),b=(0,r.a)(["address","article","aside","blockquote","body","caption","center","dd","dialog","dir","dl","dt","div","figure","figcaption","footer","form,","h1","h2","h3","h4","h5","h6","header","hgroup","hr","html","legend","li","listing","main","menu","nav","ol","p","plaintext","pre","section","ul","xmp"]);function p(e,n,t){return"element"===e.type?function(e,n,t){const a=f(e,t),r=e.children||[];let s,o,m=-1,h=[];if(u(e))return h;l(e)||g(e)&&i(n,e,g)?o="\n":d(e)?(s=2,o=2):b(e)&&(s=1,o=1);for(;++m<r.length;)h=h.concat(p(r[m],e,{whitespace:a,breakBefore:m?void 0:s,breakAfter:m<r.length-1?l(r[m+1]):o}));c(e)&&i(n,e,c)&&h.push("\t");s&&h.unshift(s);o&&h.push(o);return h}(e,n,t):"text"===e.type?"normal"===t.whitespace?m(e,t):function(e){return[String(e.value)]}(e):[]}function m(e,n){const t=String(e.value),a=[],i=[];let r=0;for(;r<=t.length;){s.lastIndex=r;const e=s.exec(t),i=e&&"index"in e?e.index:t.length;a.push(h(t.slice(r,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,""),0!==r||n.breakBefore,i!==t.length||n.breakAfter)),r=i+1}let o,l=-1;for(;++l<a.length;)8203===a[l].charCodeAt(a[l].length-1)||l<a.length-1&&8203===a[l+1].charCodeAt(0)?(i.push(a[l]),o=void 0):a[l]?("number"==typeof o&&i.push(o),i.push(a[l]),o=0):0!==l&&l!==a.length-1||i.push(0);return i}function h(e,n,t){const a=[];let i,r=0;for(;r<e.length;){o.lastIndex=r;const t=o.exec(e);i=t?t.index:e.length,r||i||!t||n||a.push(""),r!==i&&a.push(e.slice(r,i)),r=t?i+t[0].length:i}return r===i||t||a.push(""),a.join(" ")}function f(e,n){if("element"===e.type){const t=e.properties||{};switch(e.tagName){case"listing":case"plaintext":case"xmp":return"pre";case"nobr":return"nowrap";case"pre":return t.wrap?"pre-wrap":"pre";case"td":case"th":return t.noWrap?"nowrap":n.whitespace;case"textarea":return"pre-wrap"}}return n.whitespace}const _=["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"],y=["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(),w=["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(),v=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),E=["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();var k="[0-9](_*[0-9])*",N=`\\.(${k})`,x="[0-9a-fA-F](_*[0-9a-fA-F])*",A={className:"number",variants:[{begin:`(\\b(${k})((${N})|\\.)?|(${N}))[eE][+-]?(${k})[fFdD]?\\b`},{begin:`\\b(${k})((${N})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${N})[fFdD]?\\b`},{begin:`\\b(${k})[fFdD]\\b`},{begin:`\\b0[xX]((${x})\\.?|(${x})?\\.(${x}))[pP][+-]?(${k})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${x})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function S(e,n,t){return-1===t?"":e.replace(n,(a=>S(e,n,t-1)))}const O="[A-Za-z$_][0-9A-Za-z$_]*",M=["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"],C=["true","false","null","undefined","NaN","Infinity"],T=["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"],R=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],I=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],D=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],L=[].concat(I,T,R);var B="[0-9](_*[0-9])*",z=`\\.(${B})`,F="[0-9a-fA-F](_*[0-9a-fA-F])*",$={className:"number",variants:[{begin:`(\\b(${B})((${z})|\\.)?|(${z}))[eE][+-]?(${B})[fFdD]?\\b`},{begin:`\\b(${B})((${z})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${z})[fFdD]?\\b`},{begin:`\\b(${B})[fFdD]\\b`},{begin:`\\b0[xX]((${F})\\.?|(${F})?\\.(${F}))[pP][+-]?(${B})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${F})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};const P=["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"],U=["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(),j=["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(),q=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),K=["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(),H=j.concat(q).sort().reverse();const G=["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"],Z=["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(),W=["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(),X=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Q=["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 V(e){return e?"string"==typeof e?e:e.source:null}function J(e){return Y("(?=",e,")")}function Y(...e){return e.map((e=>V(e))).join("")}function ee(...e){const n=function(e){const n=e[e.length-1];return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}(e);return"("+(n.capture?"":"?:")+e.map((e=>V(e))).join("|")+")"}const ne=e=>Y(/\b/,e,/\w$/.test(e)?/\b/:/\B/),te=["Protocol","Type"].map(ne),ae=["init","self"].map(ne),ie=["Any","Self"],re=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],se=["false","nil","true"],oe=["assignment","associativity","higherThan","left","lowerThan","none","right"],le=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],de=ee(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),ge=ee(de,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),ue=Y(de,ge,"*"),be=ee(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),pe=ee(be,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),me=Y(be,pe,"*"),he=Y(/[A-Z]/,pe,"*"),fe=["attached","autoclosure",Y(/convention\(/,ee("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",Y(/objc\(/,me,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],_e=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];const ye="[A-Za-z$_][0-9A-Za-z$_]*",we=["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"],ve=["true","false","null","undefined","NaN","Infinity"],Ee=["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"],ke=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ne=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],xe=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],Ae=[].concat(Ne,Ee,ke);const Se={arduino:function(e){const n={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},t=function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="(?!struct)("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},b={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},p=[b,c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:p.concat([{begin:/\(/,end:/\)/,keywords:u,contains:p.concat(["self"]),relevance:0}]),relevance:0},h={className:"function",begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[o,l]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(m,h,b,p,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:u,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:u},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}(e),a=t.keywords;return a.type=[...a.type,...n.type],a.literal=[...a.literal,...n.literal],a.built_in=[...a.built_in,...n.built_in],a._hints=n._hints,t.name="Arduino",t.aliases=["ino"],t.supersetOf="cpp",t},bash:function(e){const n=e.regex,t={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r=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"})]}},o={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(o);const l={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},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,r,s,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}},c:function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],p={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:b.concat([{begin:/\(/,end:/\)/,keywords:u,contains:b.concat(["self"]),relevance:0}]),relevance:0},m={begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u,disableAutodetect:!0,illegal:"</",contains:[].concat(p,m,b,[c,{begin:e.IDENT_RE+"::",keywords:u},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c,strings:o,keywords:u}}},cpp:function(e){const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="(?!struct)("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},b={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},p=[b,c,s,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:p.concat([{begin:/\(/,end:/\)/,keywords:u,contains:p.concat(["self"]),relevance:0}]),relevance:0},h={className:"function",begin:"("+r+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{begin:g,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[o,l]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,s]}]},s,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(m,h,b,p,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:u,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:u},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}},csharp:function(e){const n={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/,keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]});s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const g={variants:[{className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t]},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",p={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{beginKeywords:["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"].join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[g,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},p]}},css:function(e){const n=e.regex,t=(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),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/},t.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},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+w.join("|")+")"},{begin:":(:)?("+v.join("|")+")"}]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+E.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.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:y.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+_.join("|")+")\\b"}]}},diff:function(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}},go:function(e){const n={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:n,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:n,illegal:/["']/}]}]}},graphql:function(e){const n=e.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:n.concat(/[_A-Za-z][_0-9A-Za-z]*/,n.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}},ini:function(e){const n=e.regex,t={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},java:function(e){const n=e.regex,t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=t+S("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},r={className:"meta",begin:"@"+t,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},s={className:"params",begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword",3:"title.class"},contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,A,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},A,r]}},javascript:function(e){const n=e.regex,t=O,a="<>",i="</>",r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const t=e[0].length+e.index,a=e.input[t];if("<"===a||","===a)return void n.ignoreMatch();let i;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1);return-1!==e.input.indexOf(t,n)})(e,{after:t})||n.ignoreMatch());const r=e.input.substring(t);((i=r.match(/^\s*=/))||(i=r.match(/^\s+extends\s+/))&&0===i.index)&&n.ignoreMatch()}},s={$pattern:O,keyword:M,literal:C,built_in:L,"variable.language":D},o="[0-9](_?[0-9])*",l=`\\.(${o})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${o})\\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},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},u={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},b={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},p={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},h={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:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},f=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,b,p,m,{match:/\$\d+/},d];g.contains=f.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(f)});const _=[].concat(h,g.contains),y=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(_)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:y},v={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},E={relevance:0,match:n.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:{_:[...T,...R]}},k={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/},N={match:n.concat(/\b/,(x=[...I,"super","import"].map((e=>`${e}\\s*\\(`)),n.concat("(?!",x.join("|"),")")),t,n.lookahead(/\s*\(/)),className:"title.function",relevance:0};var x;const A={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},S={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",z={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:E},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,u,b,p,m,h,{match:/\$\d+/},d,E,{scope:"attr",match:t+n.lookahead(":"),relevance:0},z,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,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:s,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a,end:i},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},k,{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:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},A,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},N,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,S,{match:/\$[(.]/}]}},json:function(e){const n=["true","false","null"],t={scope:"literal",beginKeywords:n.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:n},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,t,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}},kotlin:function(e){const n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(r,{className:"string"}),"self"]}]},l=$,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g],{name:"Kotlin",aliases:["kt","kts"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}},less:function(e){const 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),t=H,a="[\\w-]+",i="("+a+"|@\\{"+a+"\\})",r=[],s=[],o=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},l=function(e,n,t){return{className:e,begin:n,relevance:t}},c={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:U.join(" ")},d={begin:"\\(",end:"\\)",contains:s,keywords:c,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,o("'"),o('"'),n.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},n.HEXCOLOR,d,l("variable","@@?"+a,10),l("variable","@\\{"+a+"\\}"),l("built_in","~?`[^`]*?`"),{className:"attribute",begin:a+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},n.IMPORTANT,{beginKeywords:"and not"},n.FUNCTION_DISPATCH);const g=s.concat({begin:/\{/,end:/\}/,contains:r}),u={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},b={begin:i+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+K.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},p={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:c,returnEnd:!0,contains:s,relevance:0}},m={className:"variable",variants:[{begin:"@"+a+"\\s*:",relevance:15},{begin:"@"+a}],starts:{end:"[;}]",returnEnd:!0,contains:g}},h={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:i,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,u,l("keyword","all\\b"),l("variable","@\\{"+a+"\\}"),{begin:"\\b("+P.join("|")+")\\b",className:"selector-tag"},n.CSS_NUMBER_MODE,l("selector-tag",i,0),l("selector-id","#"+i),l("selector-class","\\."+i,0),l("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+j.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+q.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:g},{begin:"!important"},n.FUNCTION_DISPATCH]},f={begin:a+":(:)?"+`(${t.join("|")})`,returnBegin:!0,contains:[h]};return r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,p,m,f,b,h,u,n.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:r}},lua:function(e){const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"]},i=[e.COMMENT("--(?!"+n+")","$"),e.COMMENT("--"+n,t,{contains:[a],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:i}].concat(i)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:n,end:t,contains:[a],relevance:5}])}},makefile:function(e){const n={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},t={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n]},a={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[n,t]},i={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,n,t,a,i,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}},markdown:function(e){const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},r=e.inherit(a,{contains:[]}),s=e.inherit(i,{contains:[]});a.contains.push(s),i.contains.push(r);let o=[n,t];return[a,i,r,s].forEach((e=>{e.contains=e.contains.concat(o)})),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:o,end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}},objectivec:function(e){const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:n,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}},perl:function(e){const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={$pattern:/[\w.]+/,keyword:["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"].join(" ")},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/,end:/\}/},s={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},o={scope:"variable",variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[s]},l={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},c=[e.BACKSLASH_ESCAPE,i,o],d=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,a,i="\\1")=>{const r="\\1"===i?i:n.concat(i,a);return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t)},u=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),b=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),r,{className:"string",contains:c,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},l,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:g("s|tr|y",n.either(...d,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:u("(?:m|qr)?",/\//,/\//)},{begin:u("m|qr",n.either(...d,{capture:!0}),/\1/)},{begin:u("m|qr",/\(/,/\)/)},{begin:u("m|qr",/\[/,/\]/)},{begin:u("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,s]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,s,l]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return i.contains=b,r.contains=b,{name:"Perl",aliases:["pl","pm"],keywords:a,contains:b}},php:function(e){const n=e.regex,t=/(?![A-Za-z0-9])(?![$])/,a=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,t),i=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,t),r=n.concat(/[A-Z]+/,t),s={scope:"variable",match:"\\$+"+a},o={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),c="[ \t\n]",d={scope:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(o)}),l,{begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(o),"on:begin":(e,n)=>{n.data._beginMatch=e[1]||e[2]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}},e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/})]},g={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},u=["false","null","true"],b=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],p=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],m={keyword:b,literal:(e=>{const n=[];return e.forEach((e=>{n.push(e),e.toLowerCase()===e?n.push(e.toUpperCase()):n.push(e.toLowerCase())})),n})(u),built_in:p},h=e=>e.map((e=>e.replace(/\|\d+$/,""))),f={variants:[{match:[/new/,n.concat(c,"+"),n.concat("(?!",h(p).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},_=n.concat(a,"\\b(?!\\()"),y={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),_],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,n.concat(/::/,n.lookahead(/(?!class\b)/)),_],scope:{1:"title.class",3:"variable.constant"}},{match:[i,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},w={scope:"attr",match:n.concat(a,n.lookahead(":"),n.lookahead(/(?!::)/))},v={relevance:0,begin:/\(/,end:/\)/,keywords:m,contains:[w,s,y,e.C_BLOCK_COMMENT_MODE,d,g,f]},E={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",h(b).join("\\b|"),"|",h(p).join("\\b|"),"\\b)"),a,n.concat(c,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[v]};v.contains.push(E);const k=[w,y,e.C_BLOCK_COMMENT_MODE,d,g,f],N={begin:n.concat(/#\[\s*\\?/,n.either(i,r)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:u,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:u,keyword:["new","array"]},contains:["self",...k]},...k,{scope:"meta",variants:[{match:i},{match:r}]}]};return{case_insensitive:!1,keywords:m,contains:[N,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},s,E,y,{match:[/const/,/\s/,a],scope:{1:"keyword",3:"variable.constant"}},f,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:m,contains:["self",N,s,y,e.C_BLOCK_COMMENT_MODE,d,g]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},d,g]}},"php-template":function(e){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}},plaintext:function(e){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}},python:function(e){const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a=["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"],i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:a,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"]},r={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/,end:/\}/,keywords:i,illegal:/#/},o={begin:/\{\{/,relevance:0},l={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,r,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,r,o,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,o,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,o,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},c="[0-9](_?[0-9])*",d=`(\\b(${c}))?\\.(${c})|\\b(${c})\\.`,g=`\\b|${a.join("|")}`,u={className:"number",relevance:0,variants:[{begin:`(\\b(${c})|(${d}))[eE][+-]?(${c})[jJ]?(?=${g})`},{begin:`(${d})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${g})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${g})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${g})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${g})`},{begin:`\\b(${c})[jJ](?=${g})`}]},b={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},p={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,u,l,e.HASH_COMMENT_MODE]}]};return s.contains=[l,u,r],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[r,u,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},l,b,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[p]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[u,p,l]}]}},"python-repl":function(e){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}},r:function(e){const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:t,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"},match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}},ruby:function(e){const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),r={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},o={begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/,end:/\}/,keywords:r},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",u={className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:r}]},p=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,i],scope:{2:"title.class"},keywords:r},{relevance:0,match:[i,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:t}],relevance:0},u,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(o,l),relevance:0}].concat(o,l);c.contains=p,b.contains=p;const m=[{begin:/^\s*=>/,starts:{end:"$",contains:p}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:r,contains:p}}];return l.unshift(o),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(m).concat(l).concat(p)}},rust:function(e){const n=e.regex,t=/(r#)?/,a=n.concat(t,e.UNDERSCORE_IDENT_RE),i=n.concat(t,e.IDENT_RE),r={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,i,n.lookahead(/\s*\(/))},s="([ui](8|16|32|64|128|size)|f(32|64))?",o=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],l=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:l,keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],literal:["true","false","Some","None","Ok","Err"],built_in:o},illegal:"</",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+s},{begin:"\\b0o([0-7_]+)"+s},{begin:"\\b0x([A-Fa-f0-9_]+)"+s},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+s}],relevance:0},{begin:[/fn/,/\s+/,a],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,a],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,a,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:o,type:l}},{className:"punctuation",begin:"->"},r]}},scss:function(e){const 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),t=X,a=W,i="@[a-z-]+",r={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+G.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+a.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/,contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Q.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT,n.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:Z.join(" ")},contains:[{begin:i,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]},n.FUNCTION_DISPATCH]}},shell:function(e){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}},sql:function(e){const n=e.regex,t=e.COMMENT("--","$"),a=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],i=a,r=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!a.includes(e))),s={match:n.concat(/\b/,n.either(...i),/\s*\(/),relevance:0,keywords:{built_in:i}};function o(e){return n.concat(/\b/,n.either(...e.map((e=>e.replace(/\s+/,"\\s+")))),/\b/)}const l={scope:"keyword",match:o(["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"]),relevance:0};return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:function(e,{exceptions:n,when:t}={}){const a=t;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?`${e}|0`:e))}(r,{when:e=>e.length<3}),literal:["true","false","unknown"],type:["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]},contains:[{scope:"type",match:o(["double precision","large object","with timezone","without timezone"])},l,s,{scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},{scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},{begin:/"/,end:/"/,contains:[{match:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}},swift:function(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,ee(...te,...ae)],className:{2:"keyword"}},r={match:Y(/\./,ee(...re)),relevance:0},s=re.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{className:"keyword",match:ee(...re.filter((e=>"string"!=typeof e)).concat(ie).map(ne),...ae)}]},l={$pattern:ee(/\b\w+/,/#\w+/),keyword:s.concat(le),literal:se},c=[i,r,o],d=[{match:Y(/\./,ee(...ce)),relevance:0},{className:"built_in",match:Y(/\b/,ee(...ce),/(?=\()/)}],g={match:/->/,relevance:0},u=[g,{className:"operator",relevance:0,variants:[{match:ue},{match:`\\.(\\.|${ge})+`}]}],b="([0-9]_*)+",p="([0-9a-fA-F]_*)+",m={className:"number",relevance:0,variants:[{match:`\\b(${b})(\\.(${b}))?([eE][+-]?(${b}))?\\b`},{match:`\\b0x(${p})(\\.(${p}))?([pP][+-]?(${b}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},h=(e="")=>({className:"subst",variants:[{match:Y(/\\/,e,/[0\\tnr"']/)},{match:Y(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),f=(e="")=>({className:"subst",match:Y(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),_=(e="")=>({className:"subst",label:"interpol",begin:Y(/\\/,e,/\(/),end:/\)/}),y=(e="")=>({begin:Y(e,/"""/),end:Y(/"""/,e),contains:[h(e),f(e),_(e)]}),w=(e="")=>({begin:Y(e,/"/),end:Y(/"/,e),contains:[h(e),_(e)]}),v={className:"string",variants:[y(),y("#"),y("##"),y("###"),w(),w("#"),w("##"),w("###")]},E=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],k={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:E},N=e=>{const n=Y(e,/\//),t=Y(/\//,e);return{begin:n,end:t,contains:[...E,{scope:"comment",begin:`#(?!.*${t})`,end:/$/}]}},x={scope:"regexp",variants:[N("###"),N("##"),N("#"),k]},A={match:Y(/`/,me,/`/)},S=[A,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${pe}+`}],O=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:_e,contains:[...u,m,v]}]}},{scope:"keyword",match:Y(/@/,ee(...fe),J(ee(/\(/,/\s+/)))},{scope:"meta",match:Y(/@/,me)}],M={match:J(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:Y(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,pe,"+")},{className:"type",match:he,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:Y(/\s+&\s+/,J(he)),relevance:0}]},C={begin:/</,end:/>/,keywords:l,contains:[...a,...c,...O,g,M]};M.contains.push(C);const T={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{match:Y(me,/\s*:/),keywords:"_|0",relevance:0},...a,x,...c,...d,...u,m,v,...S,...O,M]},R={begin:/</,end:/>/,keywords:"repeat each",contains:[...a,M]},I={begin:/\(/,end:/\)/,keywords:l,contains:[{begin:ee(J(Y(me,/\s*:/)),J(Y(me,/\s+/,me,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:me}]},...a,...c,...u,m,v,...O,M,T],endsParent:!0,illegal:/["']/},D={match:[/(func|macro)/,/\s+/,ee(A.match,me,ue)],className:{1:"keyword",3:"title.function"},contains:[R,I,n],illegal:[/\[/,/%/]},L={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[R,I,n],illegal:/\[|%/},B={match:[/operator/,/\s+/,ue],className:{1:"keyword",3:"title"}},z={begin:[/precedencegroup/,/\s+/,he],className:{1:"keyword",3:"title"},contains:[M],keywords:[...oe,...se],end:/}/},F={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,me,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:l,contains:[R,...c,{begin:/:/,end:/\{/,keywords:l,contains:[{scope:"title.class.inherited",match:he},...c],relevance:0}]};for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label));n.keywords=l;const t=[...c,...d,...u,m,v,...S];n.contains=[...t,{begin:/\(/,end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l,contains:[...a,D,L,{match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},{match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},F,B,z,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0},x,...c,...d,...u,m,v,...S,...O,M,T]}},typescript:function(e){const n=e.regex,t=function(e){const n=e.regex,t=ye,a="<>",i="</>",r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const t=e[0].length+e.index,a=e.input[t];if("<"===a||","===a)return void n.ignoreMatch();let i;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1);return-1!==e.input.indexOf(t,n)})(e,{after:t})||n.ignoreMatch());const r=e.input.substring(t);((i=r.match(/^\s*=/))||(i=r.match(/^\s+extends\s+/))&&0===i.index)&&n.ignoreMatch()}},s={$pattern:ye,keyword:we,literal:ve,built_in:Ae,"variable.language":xe},o="[0-9](_?[0-9])*",l=`\\.(${o})`,c="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={className:"number",variants:[{begin:`(\\b(${c})((${l})|\\.)?|(${l}))[eE][+-]?(${o})\\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},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:s,contains:[]},u={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},b={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},p={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},m={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},h={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:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},f=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,b,p,m,{match:/\$\d+/},d];g.contains=f.concat({begin:/\{/,end:/\}/,keywords:s,contains:["self"].concat(f)});const _=[].concat(h,g.contains),y=_.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:["self"].concat(_)}]),w={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:y},v={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},E={relevance:0,match:n.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:{_:[...Ee,...ke]}},k={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[w],illegal:/%/},N={match:n.concat(/\b/,(x=[...Ne,"super","import"].map((e=>`${e}\\s*\\(`)),n.concat("(?!",x.join("|"),")")),t,n.lookahead(/\s*\(/)),className:"title.function",relevance:0};var x;const A={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},S={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},w]},O="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",M={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(O)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[w]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:s,exports:{PARAMS_CONTAINS:y,CLASS_REFERENCE:E},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,u,b,p,m,h,{match:/\$\d+/},d,E,{scope:"attr",match:t+n.lookahead(":"),relevance:0},M,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,e.REGEXP_MODE,{className:"function",begin:O,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:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a,end:i},{match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},k,{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:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},A,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[w]},N,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},v,S,{match:/\$[(.]/}]}}(e),a=ye,i=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],r={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:i},contains:[t.exports.CLASS_REFERENCE]},o={$pattern:ye,keyword:we.concat(["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"]),literal:ve,built_in:Ae.concat(i),"variable.language":xe},l={className:"meta",begin:"@"+a},c=(e,n,t)=>{const a=e.contains.findIndex((e=>e.label===n));if(-1===a)throw new Error("can not find mode to replace");e.contains.splice(a,1,t)};Object.assign(t.keywords,o),t.exports.PARAMS_CONTAINS.push(l);const d=t.contains.find((e=>"attr"===e.scope)),g=Object.assign({},d,{match:n.concat(a,n.lookahead(/\s*\?:/))});return t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,d,g]),t.contains=t.contains.concat([l,r,s,g]),c(t,"shebang",e.SHEBANG()),c(t,"use_strict",{className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/}),t.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t},vbnet:function(e){const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}]},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},o,l,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[l]}]}},wasm:function(e){e.regex;const n=e.COMMENT(/\(;/,/;\)/);return n.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[e.COMMENT(/;;/,/$/),n,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}},xml:function(e){const n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:"string"}),o=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:[a]},{begin:/'/,end:/'/,contains:[a]},{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:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[i,r,o,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[o]},{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:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}},yaml:function(e){const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},s={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},o={begin:/\{/,end:/\}/,contains:[s],illegal:"\\n",relevance:0},l={begin:"\\[",end:"\\]",contains:[s],illegal:"\\n",relevance:0},c=[{className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},r,{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},o,l,{className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},a],d=[...c];return d.pop(),d.push(i),s.contains=d,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:c}}};var Oe=t(7471);const Me=t(8416),Ce={},Te="hljs-";class Re{constructor(e){this.options=e,this.root={type:"root",children:[],data:{language:void 0,relevance:0}},this.stack=[this.root]}addText(e){if(""===e)return;const n=this.stack[this.stack.length-1],t=n.children[n.children.length-1];t&&"text"===t.type?t.value+=e:n.children.push({type:"text",value:e})}startScope(e){this.openNode(String(e))}endScope(){this.closeNode()}__addSublanguage(e,n){const t=this.stack[this.stack.length-1],a=e.root.children;n?t.children.push({type:"element",tagName:"span",properties:{className:[n]},children:a}):t.children.push(...a)}openNode(e){const n=this,t={type:"element",tagName:"span",properties:{className:e.split(".").map((function(e,t){return t?e+"_".repeat(t):n.options.classPrefix+e}))},children:[]};this.stack[this.stack.length-1].children.push(t),this.stack.push(t)}closeNode(){this.stack.pop()}finalize(){}toHTML(){return""}}var Ie=t(7970);const De={};function Le(e){const n=e||De,t=n.aliases,a=n.detect||!1,i=n.languages||Se,r=n.plainText,s=n.prefix,o=n.subset;let c="hljs";const d=function(e){const n=Me.newInstance();return e&&i(e),{highlight:t,highlightAuto:function(e,i){(0,Oe.ok)("string"==typeof e,"expected `string` as `value`");const r=(i||Ce).subset||a();let s,o=-1,l=0;for(;++o<r.length;){const a=r[o];if(!n.getLanguage(a))continue;const c=t(a,e,i);c.data&&void 0!==c.data.relevance&&c.data.relevance>l&&(l=c.data.relevance,s=c)}return s||{type:"root",children:[],data:{language:void 0,relevance:l}}},listLanguages:a,register:i,registerAlias:function(e,t){if("string"==typeof e)(0,Oe.ok)(void 0!==t),n.registerAliases("string"==typeof t?t:[...t],{languageName:e});else{let t;for(t in e)if(Object.hasOwn(e,t)){const a=e[t];n.registerAliases("string"==typeof a?a:[...a],{languageName:t})}}},registered:function(e){return Boolean(n.getLanguage(e))}};function t(e,t,a){(0,Oe.ok)("string"==typeof e,"expected `string` as `name`"),(0,Oe.ok)("string"==typeof t,"expected `string` as `value`");const i=a||Ce,r="string"==typeof i.prefix?i.prefix:Te;if(!n.getLanguage(e))throw new Error("Unknown language: `"+e+"` is not registered");n.configure({__emitter:Re,classPrefix:r});const s=n.highlight(t,{ignoreIllegals:!0,language:e});if(s.errorRaised)throw new Error("Could not highlight with `Highlight.js`",{cause:s.errorRaised});const o=s._emitter.root,l=o.data;return l.language=s.language,l.relevance=s.relevance,o}function a(){return n.listLanguages()}function i(e,t){if("string"==typeof e)(0,Oe.ok)(void 0!==t,"expected `grammar`"),n.registerLanguage(e,t);else{let t;for(t in e)Object.hasOwn(e,t)&&n.registerLanguage(t,e[t])}}}(i);if(t&&d.registerAlias(t),s){const e=s.indexOf("-");c=-1===e?s:s.slice(0,e)}return function(e,n){(0,Ie.YR)(e,"element",(function(e,t,i){if("code"!==e.tagName||!i||"element"!==i.type||"pre"!==i.tagName)return;const g=function(e){const n=e.properties.className;let t,a=-1;if(!Array.isArray(n))return;for(;++a<n.length;){const e=String(n[a]);if("no-highlight"===e||"nohighlight"===e)return!1;t||"lang-"!==e.slice(0,5)||(t=e.slice(5)),t||"language-"!==e.slice(0,9)||(t=e.slice(9))}return t}(e);if(!1===g||!g&&!a||g&&r&&r.includes(g))return;Array.isArray(e.properties.className)||(e.properties.className=[]),e.properties.className.includes(c)||e.properties.className.unshift(c);const u=function(e,n){const t=n||{},a="children"in e?e.children:[],i=b(e),r=f(e,{whitespace:t.whitespace||"normal",breakBefore:!1,breakAfter:!1}),s=[];"text"!==e.type&&"comment"!==e.type||s.push(...m(e,{whitespace:r,breakBefore:!0,breakAfter:!0}));let o=-1;for(;++o<a.length;)s.push(...p(a[o],e,{whitespace:r,breakBefore:o?void 0:i,breakAfter:o<a.length-1?l(a[o+1]):i}));const c=[];let d;for(o=-1;++o<s.length;){const e=s[o];"number"==typeof e?void 0!==d&&e>d&&(d=e):e&&(void 0!==d&&d>-1&&c.push("\n".repeat(d)||" "),d=-1,c.push(e))}return c.join("")}(e,{whitespace:"pre"});let h;try{h=g?d.highlight(g,u,{prefix:s}):d.highlightAuto(u,{prefix:s,subset:o})}catch(t){const a=t;if(g&&/Unknown language/.test(a.message))return void n.message("Cannot highlight as `"+g+"`, it’s not registered",{ancestors:[i,e],cause:a,place:e.position,ruleId:"missing-language",source:"rehype-highlight"});throw a}!g&&h.data&&h.data.language&&e.properties.className.push("language-"+h.data.language),h.children.length>0&&(e.children=h.children)}))}}}}]); +//# sourceMappingURL=recommendations-vendors-node_modules_rehype-highlight_index_js.js.map?v=70a4778e6219bb956045 \ No newline at end of file diff --git a/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js.map b/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js.map index 7b0b35e9..f63a358f 100644 --- a/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js.map +++ b/js/recommendations-vendors-node_modules_rehype-highlight_index_js.js.map @@ -1 +1 @@ -{"version":3,"file":"recommendations-vendors-node_modules_rehype-highlight_index_js.js?v=d0bba19fc6d463e6deda","mappings":"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T,IAAK,MACH,OAAOK,EAAWmB,KAAO,WAAa,MAGxC,IAAK,KACL,IAAK,KACH,OAAOnB,EAAWoB,OAAS,SAAWf,EAAKC,WAG7C,IAAK,WACH,MAAO,WAKb,CAEA,OAAOD,EAAKC,UACd,CC/lBA,MAyKMe,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACA7F,OAAO8F,UAGHC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA/F,OAAO8F,UAGHE,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAhG,OAAO8F,UAEHG,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACAjG,OAAO8F,UCzyBT,IAAII,EAAgB,kBAChBC,EAAO,OAAOD,KACdE,EAAY,8BACZC,EAAU,CACZta,UAAW,SACXyN,SAAU,CAGR,CAAE1I,MAAO,QAAQoV,OAAmBC,aAAgBA,gBACrCD,gBAEf,CAAEpV,MAAO,OAAOoV,OAAmBC,iCACnC,CAAErV,MAAO,IAAIqV,gBACb,CAAErV,MAAO,OAAOoV,eAGhB,CAAEpV,MAAO,aAAasV,WAAmBA,UAAkBA,gBAC5CF,gBAGf,CAAEpV,MAAO,kCAGT,CAAEA,MAAO,YAAYsV,cAGrB,CAAEtV,MAAO,0BAGT,CAAEA,MAAO,kCAEXC,UAAW,GAsBb,SAASuV,EAAWzX,EAAI0X,EAAcC,GACpC,OAAe,IAAXA,EAAqB,GAElB3X,EAAGjE,QAAQ2b,GAAcE,GACvBH,EAAWzX,EAAI0X,EAAcC,EAAQ,IAEhD,CC5DA,MAAMhW,EAAW,2BACXkW,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIC,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAIIC,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIC,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGIC,EAAY,GAAGjY,OACnB+X,EACAF,EACAC,GC5JF,IAAI,EAAgB,kBAChB,EAAO,OAAO,KACd,EAAY,8BACZ,EAAU,CACZ9a,UAAW,SACXyN,SAAU,CAGR,CAAE1I,MAAO,QAAQ,OAAmB,aAAgB,gBACrC,gBAEf,CAAEA,MAAO,OAAO,OAAmB,iCACnC,CAAEA,MAAO,IAAI,gBACb,CAAEA,MAAO,OAAO,eAGhB,CAAEA,MAAO,aAAa,WAAmB,UAAkB,gBAC5C,gBAGf,CAAEA,MAAO,kCAGT,CAAEA,MAAO,YAAY,cAGrB,CAAEA,MAAO,0BAGT,CAAEA,MAAO,kCAEXC,UAAW,GChCb,MAyKM,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWI,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAiP,OAAO8F,UAGH,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA9F,OAAO8F,UAGH,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACA9F,OAAO8F,UAEH,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA9F,OAAO8F,UAGHmB,EAAmB,EAAelY,OAAO,GAAiBiR,OAAO8F,UC7yBvE,MAyKM,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWI,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACA9F,OAAO8F,UAGH,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA9F,OAAO8F,UAGH,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACA9F,OAAO8F,UAEH,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA9F,OAAO8F,UCjyBT,SAASlX,EAAOC,GACd,OAAKA,EACa,iBAAPA,EAAwBA,EAE5BA,EAAGD,OAHM,IAIlB,CAMA,SAASE,EAAUD,GACjB,OAAOE,EAAO,MAAOF,EAAI,IAC3B,CAMA,SAASE,KAAUG,GAEjB,OADeA,EAAK5C,KAAKC,GAAMqC,EAAOrC,KAAIG,KAAK,GAEjD,CA0BA,SAASyC,MAAUD,GAEjB,MAAMnC,EAtBR,SAA8BmC,GAC5B,MAAMnC,EAAOmC,EAAKA,EAAK5B,OAAS,GAEhC,MAAoB,iBAATP,GAAqBA,EAAK5C,cAAgBT,QACnDwF,EAAKE,OAAOF,EAAK5B,OAAS,EAAG,GACtBP,GAEA,CAAC,CAEZ,CAaesC,CAAqBH,GAIlC,MAHe,KACVnC,EAAKuC,QAAU,GAAK,MACrBJ,EAAK5C,KAAKC,GAAMqC,EAAOrC,KAAIG,KAAK,KAAO,GAE7C,CAEA,MAAMwa,GAAiBrS,GAAW9F,EAChC,KACA8F,EACA,MAAM4G,KAAK5G,GAAW,KAAO,MAIzBsS,GAAc,CAClB,WACA,QACA7a,IAAI4a,IAGAE,GAAsB,CAC1B,OACA,QACA9a,IAAI4a,IAGAG,GAAe,CACnB,MACA,QAII9T,GAAW,CAIf,QACA,MACA,iBACA,QACA,QACA,OACA,MACA,KACA,YACA,QACA,OACA,QACA,QACA,UACA,YACA,WACA,cACA,OACA,UACA,QACA,SACA,SACA,cACA,KACA,UACA,OACA,OACA,OACA,YACA,cACA,qBACA,cACA,QACA,MACA,OACA,MACA,QACA,KACA,SACA,WACA,QACA,SACA,QACA,QACA,kBACA,WACA,KACA,KACA,WACA,cACA,OACA,MACA,QACA,WACA,cACA,cACA,OACA,WACA,WACA,WACA,UACA,UACA,kBACA,SACA,iBACA,UACA,WACA,gBACA,SACA,SACA,WACA,WACA,SACA,MACA,OACA,SACA,SACA,YACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,YACA,kBACA,oBACA,UACA,MACA,OACA,QACA,QACA,WAOI+T,GAAW,CACf,QACA,MACA,QAIIC,GAA0B,CAC9B,aACA,gBACA,aACA,OACA,YACA,OACA,SAKIC,GAAqB,CACzB,gBACA,UACA,aACA,QACA,UACA,SACA,SACA,QACA,UACA,eACA,YACA,YACA,MACA,gBACA,WACA,QACA,YACA,kBACA,YAIIC,GAAW,CACf,MACA,MACA,MACA,SACA,mBACA,aACA,OACA,aACA,YACA,4BACA,MACA,MACA,cACA,eACA,eACA,eACA,sBACA,QACA,WACA,gBACA,WACA,SACA,OACA,oCACA,YACA,OACA,gBACA,iBACA,uBACA,2BACA,oBACA,aACA,0BACA,OAIIC,GAAevY,GACnB,oBACA,kBACA,iBACA,iBACA,iBACA,mCACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,YAIIwY,GAAoBxY,GACxBuY,GACA,kBACA,kBACA,kBACA,kBACA,mBAMIE,GAAW7Y,EAAO2Y,GAAcC,GAAmB,KAGnDE,GAAiB1Y,GACrB,YACA,uDACA,yDACA,yDACA,kBACA,+DACA,yDACA,+BACA,yDACA,yDACA,gCASI2Y,GAAsB3Y,GAC1B0Y,GACA,KACA,0DAIIE,GAAahZ,EAAO8Y,GAAgBC,GAAqB,KAGzDE,GAAiBjZ,EAAO,QAAS+Y,GAAqB,KAKtDG,GAAoB,CACxB,WACA,cACAlZ,EAAO,eAAgBI,GAAO,QAAS,QAAS,KAAM,MACtD,oBACA,kBACA,sBACA,WACA,eACA,SACA,gBACA,WACA,eACA,gBACA,WACA,gBACA,YACA,OACA,UACA,oBACA,YACA,YACAJ,EAAO,SAAUgZ,GAAY,MAC7B,OACA,cACA,kBACA,iCACA,gBACA,WACA,WACA,oBACA,YACA,UACA,mBACA,2BAIIG,GAAuB,CAC3B,MACA,0BACA,QACA,4BACA,cACA,kCACA,UACA,8BACA,OACA,2BACA,SC5YF,MAAM,GAAW,2BACX,GAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEI,GAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAII,GAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGI,GAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGI,GAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGI,GAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGI,GAAY,GAAGnZ,OACnB,GACA,GACA,IC9GK,MAAMoZ,GAAW,CACtBC,QCsjBF,SAAiB3N,GACf,MAAM4N,EAAa,CACjBre,KAAM,CACJ,UACA,OACA,OACA,UAEFse,SAAU,CACR,qBACA,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MAEFC,OAAQ,CACN,QACA,OACA,gCACA,wBACA,wBACA,uBACA,uBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEFC,QAAS,CACP,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,WACA,WACA,UACA,SACA,QACA,OACA,QAIEC,EA/8BR,SAAmBhO,GACjB,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAEI4Z,EAAsB,CAC1B9c,UAAW,OACX+E,MAAO,sBAMHgY,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CAER,CAAE1I,MACA,gVAoBF,CAAEA,MACA,gKAgBJC,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,0FAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UA+RhE0Y,EAAe,CACnBlf,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLA6K,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMA2T,QAde,CACf,OACA,QACA,UACA,UACA,QAUAF,SANe,CAAE,WAOjBa,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxBrd,UAAW,oBACXgF,UAAW,EACXwC,SAAU,CAER8V,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAvY,MAAOd,EAAMjB,OACX,KACA,eACA,SACA,UACA,aACA,YACA0L,EAAKjK,SACLR,EAAMlB,UAAU,sBAGdwa,EAAsB,CAC1BF,EACAJ,EACAH,EACApX,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,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,UAAW,GA+Pb,MAAO,CACLjH,KAAM,OACN6Q,QAAS,CACP,KACA,OAEFpH,SAAU,CACRyF,SAAU,wBACVnE,QApQa,CACf,KACA,OACA,OACA,OACA,KACA,OACA,MACA,QACA,QACA,KACA,KACA,OACA,OACA,OACA,SACA,WACA,UAoPE2T,QAjPa,CACf,OACA,SAgPEF,SAAU,CAxOZ,QACA,KACA,WACA,OACA,OACA,OACA,SACA,UACA,OACA,MACA,WACA,SACA,QACA,OACA,QACA,OACA,QACA,QAIA,QACA,OACA,UACA,SACA,UACA,UACA,OACA,SACA,OACA,MACA,QACA,SACA,UACA,SACA,OACA,YACA,SACA,OACA,OACA,UACA,SACA,UAkMI,MACA,QA/LJ,WACA,KACA,UACA,MACA,MACA,QACA,QACA,gBACA,WACA,UACA,eACA,YACA,aACA,YACA,WACA,UACA,aACA,OACA,UACA,SACA,SACA,SACA,UACA,KACA,KACA,QACA,YACA,SACA,QACA,UACA,UACA,OACA,OACA,QACA,MACA,SACA,OACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,OACA,UACA,SACA,aACA,SACA,UACA,WACA,QACA,OACA,SACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,aACA,QACA,OACA,cACA,UACA,SACA,OAIA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,MACA,YACA,KACA,KACA,QACA,SACA,QACA,SACA,KACA,WACA,KACA,QACA,QACA,OACA,QACA,WACA,OACA,QACA,SACA,SACA,MACA,QACA,OACA,SACA,MACA,SACA,MACA,OACA,OACA,OACA,SACA,KACA,SACA,KACA,QACA,MACA,KACA,UACA,YACA,YACA,YACA,YACA,OACA,OACA,QACA,MACA,MACA,OACA,KACA,QACA,WACA,OACA,KACA,OACA,WACA,SACA,OACA,UACA,KACA,OACA,MACA,OACA,SAEA,SACA,SACA,KACA,OACA,UACA,OACA,QACA,QACA,UACA,QACA,WACA,SACA,MACA,WACA,SACA,MACA,QACA,OACA,SACA,OACA,MACA,OACA,UAEA,MACA,QACA,SACA,SACA,QACA,MACA,SACA,QAuBAnX,SAAU,CACR+Y,EACAzP,EAAK7H,UACLuX,EACAF,EACA5Y,EACA0Y,EA5Pc,CAAE5Z,MAAO,kBA8PvB6Z,EAtUkB,CACpB7Z,MAAO,OAEW,CAClBpE,UAAW,SACX+E,MAAO,IACPG,IAAK,KAEc,CACnBd,MAAO,OAiULyZ,GAGN,EFpWErQ,EG3CF,SAAWkB,GACT,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,IACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAGI2X,EAAQ,CACZ7a,UAAW,OACXyN,SAAU,CACR,CAAE1I,MAAO,sBACT,CAAEX,MAAO,2BAQP2Y,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CACR,CAAErJ,MAAO,gBACT,CAAEA,MAAO,mFACT,CAAEA,MAAO,oHACT,CAAEA,MAAO,2DAEXY,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,2GAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UAoFhEkW,EAAW,CACf7R,QAnFiB,CACjB,MACA,OACA,QACA,OACA,WACA,UACA,KACA,OACA,OACA,SACA,MACA,UACA,OACA,KACA,SACA,WACA,WACA,SACA,SACA,SACA,gBACA,SACA,SACA,UACA,QACA,WACA,QACA,WACA,WACA,UACA,WACA,YACA,iBACA,gBAEA,UACA,UACA,WACA,gBACA,eAEA,WA0CA7K,KAvCc,CACd,QACA,SACA,SACA,WACA,MACA,QACA,OACA,OACA,OACA,QACA,UACA,WACA,aACA,aACA,aACA,aACA,cACA,cACA,eACA,WACA,WACA,WACA,YACA,YACA,YACA,aAEA,QACA,SACA,YAEA,UACA,OACA,aAMAwe,QAAS,kBAETF,SAAU,ozBAWNgB,EAAsB,CAC1BN,EACApC,EACAnV,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,KACPG,IAAK,MAEP,CACEmC,cAAe,wBACfnC,IAAK,MAGTsC,SAAUmT,EACVvV,SAAUmY,EAAoBva,OAAO,CACnC,CACE+B,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACVvV,SAAUmY,EAAoBva,OAAO,CAAE,SACvCgC,UAAW,KAGfA,UAAW,GAGPyY,EAAuB,CAC3B1Y,MAAO,IAAM8X,EAAmB,eAAiBK,EACjD1S,aAAa,EACbtF,IAAK,QACLwF,YAAY,EACZlD,SAAUmT,EACVxV,QAAS,iBACTC,SAAU,CACR,CACEL,MAAO4X,EACPnV,SAAUmT,EACV3V,UAAW,GAEb,CACED,MAAOmY,EACP1S,aAAa,EACbpF,SAAU,CAAEsJ,EAAKJ,QAAQrI,EAAY,CAAEjG,UAAW,oBAClDgF,UAAW,GAIb,CACEA,UAAW,EACXZ,MAAO,KAET,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACRM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAnC,EAEA,CACE9V,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,OACAM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAnC,MAKRA,EACAnV,EACAgJ,EAAK/I,qBACLsX,IAIJ,MAAO,CACLlf,KAAM,IACN6Q,QAAS,CAAE,KACXpH,SAAUmT,EAGV1L,mBAAmB,EACnB9J,QAAS,KACTC,SAAU,GAAGpC,OACXwa,EACAC,EACAF,EACA,CACEN,EACA,CACElY,MAAO2J,EAAKjK,SAAW,KACvB+C,SAAUmT,GAEZ,CACE3a,UAAW,QACXqH,cAAe,0BACfnC,IAAK,WACLE,SAAU,CACR,CAAEiC,cAAe,sBACjBqH,EAAKzI,eAIbwR,QAAS,CACP4G,aAAcpB,EACdqB,QAASvB,EACTvV,SAAUmT,GAGhB,EHvRE4D,II5CF,SAAa7P,GACX,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAEI4Z,EAAsB,CAC1B9c,UAAW,OACX+E,MAAO,sBAMHgY,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CAER,CAAE1I,MACA,gVAoBF,CAAEA,MACA,gKAgBJC,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,0FAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UA+RhE0Y,EAAe,CACnBlf,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLA6K,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMA2T,QAde,CACf,OACA,QACA,UACA,UACA,QAUAF,SANe,CAAE,WAOjBa,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxBrd,UAAW,oBACXgF,UAAW,EACXwC,SAAU,CAER8V,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAvY,MAAOd,EAAMjB,OACX,KACA,eACA,SACA,UACA,aACA,YACA0L,EAAKjK,SACLR,EAAMlB,UAAU,sBAGdwa,EAAsB,CAC1BF,EACAJ,EACAH,EACApX,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,KACPG,IAAK,MAEP,CACEmC,cAAe,wBACfnC,IAAK,MAGTsC,SAAU2V,EACV/X,SAAUmY,EAAoBva,OAAO,CACnC,CACE+B,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACV/X,SAAUmY,EAAoBva,OAAO,CAAE,SACvCgC,UAAW,KAGfA,UAAW,GAGPyY,EAAuB,CAC3Bzd,UAAW,WACX+E,MAAO,IAAM8X,EAAmB,eAAiBK,EACjD1S,aAAa,EACbtF,IAAK,QACLwF,YAAY,EACZlD,SAAU2V,EACVhY,QAAS,iBACTC,SAAU,CACR,CACEL,MAAO4X,EACPnV,SAAU2V,EACVnY,UAAW,GAEb,CACED,MAAOmY,EACP1S,aAAa,EACbpF,SAAU,CAAEa,GACZjB,UAAW,GAIb,CACED,MAAO,KACPC,UAAW,GAGb,CACED,MAAO,IACPqI,gBAAgB,EAChBhI,SAAU,CACR2X,EACAC,IAKJ,CACEhY,UAAW,EACXZ,MAAO,KAET,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACVnY,UAAW,EACXI,SAAU,CACRM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAF,EAEA,CACE/X,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACVnY,UAAW,EACXI,SAAU,CACR,OACAM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAF,MAKRA,EACApX,EACAgJ,EAAK/I,qBACLsX,IAIJ,MAAO,CACLlf,KAAM,MACN6Q,QAAS,CACP,KACA,MACA,MACA,MACA,KACA,MACA,OAEFpH,SAAU2V,EACVhY,QAAS,KACTwH,iBAAkB,CAAE,oBAAqB,YACzCvH,SAAU,GAAGpC,OACXwa,EACAC,EACAJ,EACAE,EACA,CACEN,EACA,CACElY,MAAO,8NACPG,IAAK,IACLsC,SAAU2V,EACV/X,SAAU,CACR,OACA0X,IAGJ,CACE/X,MAAO2J,EAAKjK,SAAW,KACvB+C,SAAU2V,GAEZ,CACE/Y,MAAO,CAEL,wDACA,MACA,OAEFpE,UAAW,CACT,EAAG,UACH,EAAG,kBAKf,EJtiBEwe,OK3CF,SAAgB9P,GACd,MAmJMiM,EAAW,CACf7R,QAvGsB,CACtB,WACA,KACA,OACA,QACA,OACA,QACA,QACA,QACA,WACA,KACA,OACA,QACA,WACA,SACA,UACA,QACA,MACA,UACA,OACA,KACA,WACA,KACA,YACA,WACA,KACA,OACA,YACA,MACA,WACA,MACA,WACA,SACA,UACA,YACA,SACA,WACA,SACA,MACA,SACA,SACA,SACA,SACA,aACA,SACA,SACA,SACA,OACA,QACA,MACA,SACA,YACA,SACA,QACA,UACA,OACA,WACA,SA8CyB9F,OA5CC,CAC1B,MACA,QACA,MACA,YACA,OACA,QACA,QACA,KACA,aACA,UACA,SACA,OACA,OACA,MACA,SACA,QACA,OACA,OACA,OACA,MACA,SACA,MACA,UACA,KACA,KACA,UACA,UACA,SACA,SACA,WACA,SACA,SACA,MACA,YACA,UACA,MACA,OACA,QACA,OACA,UAKAuZ,SArJwB,CACxB,OACA,OACA,OACA,UACA,WACA,SACA,UACA,OACA,QACA,MACA,OACA,OACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,UAkIAE,QA/GuB,CACvB,UACA,QACA,OACA,SA6GIxW,EAAayI,EAAKJ,QAAQI,EAAKzI,WAAY,CAAElB,MAAO,uBACpDiY,EAAU,CACdhd,UAAW,SACXyN,SAAU,CACR,CAAE1I,MAAO,iBACT,CAAEA,MAAO,mEACT,CAAEA,MAAO,wFAEXC,UAAW,GAOPyZ,EAAkB,CACtBze,UAAW,SACX+E,MAAO,KACPG,IAAK,IACLE,SAAU,CAAE,CAAEL,MAAO,QAEjB2Z,EAAwBhQ,EAAKJ,QAAQmQ,EAAiB,CAAEtZ,QAAS,OACjE4Y,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,GAENgE,EAAcjQ,EAAKJ,QAAQyP,EAAO,CAAE5Y,QAAS,OAC7CyZ,EAAsB,CAC1B5e,UAAW,SACX+E,MAAO,MACPG,IAAK,IACLC,QAAS,KACTC,SAAU,CACR,CAAEL,MAAO,QACT,CAAEA,MAAO,QACT2J,EAAK5J,iBACL6Z,IAGEE,EAA+B,CACnC7e,UAAW,SACX+E,MAAO,OACPG,IAAK,IACLE,SAAU,CACR,CAAEL,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACTgZ,IAGEe,EAAqCpQ,EAAKJ,QAAQuQ,EAA8B,CACpF1Z,QAAS,KACTC,SAAU,CACR,CAAEL,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,MACT4Z,KAGJZ,EAAM3Y,SAAW,CACfyZ,EACAD,EACAH,EACA/P,EAAKzJ,iBACLyJ,EAAKrJ,kBACL2X,EACAtO,EAAK/I,sBAEPgZ,EAAYvZ,SAAW,CACrB0Z,EACAF,EACAF,EACAhQ,EAAKzJ,iBACLyJ,EAAKrJ,kBACL2X,EACAtO,EAAKJ,QAAQI,EAAK/I,qBAAsB,CAAER,QAAS,QAErD,MAAM4Z,EAAS,CAAEtR,SAAU,CArER,CACjBzN,UAAW,SACX+E,MAAO,4BACPC,UAAW,GAoEX6Z,EACAD,EACAH,EACA/P,EAAKzJ,iBACLyJ,EAAKrJ,oBAGD2Z,EAAmB,CACvBja,MAAO,IACPG,IAAK,IACLE,SAAU,CACR,CAAEiC,cAAe,UACjBpB,IAGEgZ,EAAgBvQ,EAAKjK,SAAW,KAAOiK,EAAKjK,SAAW,aAAeiK,EAAKjK,SAAW,iBACtFya,EAAgB,CAGpBna,MAAO,IAAM2J,EAAKjK,SAClBO,UAAW,GAGb,MAAO,CACLjH,KAAM,KACN6Q,QAAS,CACP,KACA,MAEFpH,SAAUmT,EACVxV,QAAS,KACTC,SAAU,CACRsJ,EAAKpJ,QACH,MACA,IACA,CACEkF,aAAa,EACbpF,SAAU,CACR,CACEpF,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,MACPC,UAAW,GAEb,CAAED,MAAO,kBACT,CACEA,MAAO,MACPG,IAAK,UAOjBwJ,EAAKhJ,oBACLgJ,EAAK/I,qBACL,CACE3F,UAAW,OACX+E,MAAO,IACPG,IAAK,IACLsC,SAAU,CAAEsB,QAAS,wFAEvBiW,EACA/B,EACA,CACE3V,cAAe,kBACfrC,UAAW,EACXE,IAAK,QACLC,QAAS,UACTC,SAAU,CACR,CAAEiC,cAAe,eACjBpB,EACA+Y,EACAtQ,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CACE0B,cAAe,YACfrC,UAAW,EACXE,IAAK,QACLC,QAAS,SACTC,SAAU,CACRa,EACAyI,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CACE0B,cAAe,SACfrC,UAAW,EACXE,IAAK,QACLC,QAAS,SACTC,SAAU,CACRa,EACA+Y,EACAtQ,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CAEE3F,UAAW,OACX+E,MAAO,oBACPS,cAAc,EACdN,IAAK,MACLwF,YAAY,EACZtF,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,IACPG,IAAK,OAIX,CAGEmC,cAAe,8BACfrC,UAAW,GAEb,CACEhF,UAAW,WACX+E,MAAO,IAAMka,EAAgB,SAAWvQ,EAAKjK,SAAW,wBACxD+F,aAAa,EACbtF,IAAK,WACLwF,YAAY,EACZlD,SAAUmT,EACVvV,SAAU,CAER,CACEiC,cAvViB,CACzB,SACA,UACA,YACA,SACA,WACA,YACA,WACA,QACA,SACA,WACA,SACA,UACA,MACA,SACA,WAwU0C1G,KAAK,KACvCqE,UAAW,GAEb,CACED,MAAO2J,EAAKjK,SAAW,wBACvB+F,aAAa,EACbpF,SAAU,CACRsJ,EAAKzI,WACL+Y,GAEFha,UAAW,GAEb,CAAEZ,MAAO,QACT,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR2Z,EACA/B,EACAtO,EAAK/I,uBAGT+I,EAAKhJ,oBACLgJ,EAAK/I,uBAGTuZ,GAGN,ELpWEC,IR+vBF,SAAazQ,GACX,MAAMzK,EAAQyK,EAAKzK,MACbmb,EAtzBM,CAAC1Q,IACN,CACL2Q,UAAW,CACT/f,MAAO,OACPyF,MAAO,cAETua,cAAe5Q,EAAK/I,qBACpB4Z,SAAU,CACRjgB,MAAO,SACPyF,MAAO,mDAETsY,kBAAmB,CACjBrd,UAAW,WACX+E,MAAO,gBAETya,wBAAyB,CACvBlgB,MAAO,gBACPyF,MAAO,KACPG,IAAK,KACLC,QAAS,IACTC,SAAU,CACRsJ,EAAKzJ,iBACLyJ,EAAKrJ,oBAGToa,gBAAiB,CACfngB,MAAO,SACPyF,MAAO2J,EAAK/J,UAAL+J,kGASP1J,UAAW,GAEb0a,aAAc,CACZ1f,UAAW,OACX+E,MAAO,+BA8wBGqB,CAAMsI,GAKdqO,EAAU,CACdrO,EAAKzJ,iBACLyJ,EAAKrJ,mBAGP,MAAO,CACLtH,KAAM,MACNkN,kBAAkB,EAClB9F,QAAS,UACTqC,SAAU,CAAEmY,iBAAkB,WAC9BhT,iBAAkB,CAGhBgT,iBAAkB,gBACpBva,SAAU,CACRga,EAAME,cAnBY,CAAEva,MAAO,gCAuB3Bqa,EAAMK,gBACN,CACEzf,UAAW,cACX+E,MAAO,kBACPC,UAAW,GAEb,CACEhF,UAAW,iBACX+E,MAAO,6BACPC,UAAW,GAEboa,EAAMI,wBACN,CACExf,UAAW,kBACXyN,SAAU,CACR,CAAE1I,MAAO,KAAOiV,EAAerZ,KAAK,KAAO,KAC3C,CAAEoE,MAAO,SAAWkV,EAAgBtZ,KAAK,KAAO,OASpDye,EAAMM,aACN,CACE1f,UAAW,YACX+E,MAAO,OAASmV,EAAWvZ,KAAK,KAAO,QAGzC,CACEoE,MAAO,IACPG,IAAK,QACLE,SAAU,CACRga,EAAME,cACNF,EAAMG,SACNH,EAAMC,UACND,EAAMK,mBACH1C,EAIH,CACEhY,MAAO,mBACPG,IAAK,KACLF,UAAW,EACXwC,SAAU,CAAE+U,SAAU,gBACtBnX,SAAU,IACL2X,EACH,CACE/c,UAAW,SAGX+E,MAAO,OACPqI,gBAAgB,EAChB1C,YAAY,KAIlB0U,EAAM/B,oBAGV,CACEtY,MAAOd,EAAMlB,UAAU,KACvBmC,IAAK,OACLF,UAAW,EACXG,QAAS,IACTC,SAAU,CACR,CACEpF,UAAW,UACX+E,MA5Fa,qBA8Ff,CACEA,MAAO,KACPqI,gBAAgB,EAChB1C,YAAY,EACZ1F,UAAW,EACXwC,SAAU,CACRyF,SAAU,UACVnE,QAtGS,kBAuGT8W,UAAW9F,EAAenZ,KAAK,MAEjCyE,SAAU,CACR,CACEL,MAAO,eACP/E,UAAW,gBAEV+c,EACHqC,EAAMK,oBAKd,CACEzf,UAAW,eACX+E,MAAO,OAAS8U,EAAKlZ,KAAK,KAAO,SAIzC,EQ53BEkf,KM7CF,SAAcnR,GACZ,MAAMzK,EAAQyK,EAAKzK,MACnB,MAAO,CACLlG,KAAM,OACN6Q,QAAS,CAAE,SACXxJ,SAAU,CACR,CACEpF,UAAW,OACXgF,UAAW,GACXZ,MAAOH,EAAMb,OACX,+BACA,8BACA,yBAGJ,CACEpD,UAAW,UACXyN,SAAU,CACR,CACE1I,MAAOd,EAAMb,OACX,UACA,SACA,QACA,QACA,UACA,SACA,eAEF8B,IAAK,KAEP,CAAEd,MAAO,cAGb,CACEpE,UAAW,WACX+E,MAAO,MACPG,IAAK,KAEP,CACElF,UAAW,WACX+E,MAAO,KACPG,IAAK,KAEP,CACElF,UAAW,WACX+E,MAAO,KACPG,IAAK,MAIb,ENJE4a,GO9CF,SAAYpR,GACV,MAwEMiM,EAAW,CACf7R,QA5BU,CACV,QACA,OACA,OACA,QACA,WACA,UACA,QACA,OACA,cACA,MACA,OACA,KACA,OACA,KACA,SACA,YACA,MACA,UACA,QACA,SACA,SACA,SACA,SACA,OACA,OAIA7K,KAnDY,CACZ,OACA,OACA,YACA,aACA,QACA,UACA,UACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,MACA,OACA,UACA,QAgCAwe,QA3Ee,CACf,OACA,QACA,OACA,OAwEAF,SAtEgB,CAChB,SACA,MACA,QACA,UACA,OACA,OACA,MACA,OACA,MACA,QACA,QACA,UACA,OACA,UACA,WAyDF,MAAO,CACLxe,KAAM,KACN6Q,QAAS,CAAE,UACXpH,SAAUmT,EACVxV,QAAS,KACTC,SAAU,CACRsJ,EAAKhJ,oBACLgJ,EAAK/I,qBACL,CACE3F,UAAW,SACXyN,SAAU,CACRiB,EAAKrJ,kBACLqJ,EAAKzJ,iBACL,CACEF,MAAO,IACPG,IAAK,OAIX,CACElF,UAAW,SACXyN,SAAU,CACR,CACErJ,MAAO,6DACPY,UAAW,GAEb,CACEZ,MAAO,sFACPY,UAAW,GAEb,CACEZ,MAAO,wBACPY,UAAW,GAEb,CACEZ,MAAO,uCACPY,UAAW,GAEb,CACEZ,MAAO,wDACPY,UAAW,KAIjB,CAAED,MAAO,MAET,CACE/E,UAAW,WACXqH,cAAe,OACfnC,IAAK,cACLwF,YAAY,EACZtF,SAAU,CACRsJ,EAAKzI,WACL,CACEjG,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLiD,YAAY,EACZX,SAAUmT,EACVxV,QAAS,WAMrB,EPjGE4a,QQhDF,SAAiBrR,GACf,MAAMzK,EAAQyK,EAAKzK,MAEnB,MAAO,CACLlG,KAAM,UACN6Q,QAAS,CAAE,OACX3D,kBAAkB,EAClBgE,mBAAmB,EACnBzH,SAAU,CACRsB,QAAS,CACP,QACA,WACA,eACA,OACA,QACA,SACA,YACA,YACA,QACA,SACA,WACA,OACA,MAEF2T,QAAS,CACP,OACA,QACA,SAGJrX,SAAU,CACRsJ,EAAK9I,kBACL8I,EAAKrJ,kBACLqJ,EAAK7I,YACL,CACEvG,MAAO,cACP8E,MAAO,SACPY,UAAW,GAEb,CACE1F,MAAO,cACPyF,MAAO,4BACPC,UAAW,GAEb,CACE1F,MAAO,WACPyF,MAAO,KACPG,IAAK,KACLwF,YAAY,EACZ1F,UAAW,GAEb,CACE1F,MAAO,OACP8E,MAAO,OACPsG,YAAY,GAEd,CACEpL,MAAO,SACPyF,MAAOd,EAAMjB,OAxDF,yBAwDmBiB,EAAMlB,UAAU,SAC9CiC,UAAW,IAGfG,QAAS,CACP,QACA,SAGN,ERlBE6a,ISjDF,SAAatR,GACX,MAAMzK,EAAQyK,EAAKzK,MACb+Y,EAAU,CACdhd,UAAW,SACXgF,UAAW,EACXyI,SAAU,CACR,CAAE1I,MAAO,wBACT,CAAEA,MAAO2J,EAAK/J,aAGZsb,EAAWvR,EAAKpJ,UACtB2a,EAASxS,SAAW,CAClB,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,IACPG,IAAK,MAGT,MAAMgb,EAAY,CAChBlgB,UAAW,WACXyN,SAAU,CACR,CAAE1I,MAAO,qBACT,CAAEA,MAAO,iBAGP6V,EAAW,CACf5a,UAAW,UACX+E,MAAO,gCAEHgY,EAAU,CACd/c,UAAW,SACXoF,SAAU,CAAEsJ,EAAK5J,kBACjB2I,SAAU,CACR,CACE1I,MAAO,MACPG,IAAK,MACLF,UAAW,IAEb,CACED,MAAO,MACPG,IAAK,MACLF,UAAW,IAEb,CACED,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,IACPG,IAAK,OAILib,EAAQ,CACZpb,MAAO,KACPG,IAAK,KACLE,SAAU,CACR6a,EACArF,EACAsF,EACAnD,EACAC,EACA,QAEFhY,UAAW,GAMPob,EAAUnc,EAAMb,OAHL,iBACe,gBACA,WAShC,MAAO,CACLrF,KAAM,iBACN6Q,QAAS,CAAE,QACX3D,kBAAkB,EAClB9F,QAAS,KACTC,SAAU,CACR6a,EACA,CACEjgB,UAAW,UACX+E,MAAO,MACPG,IAAK,OAEP,CACEH,MAlBad,EAAMjB,OACvBod,EAAS,eAAgBA,EAAS,KAClCnc,EAAMlB,UAAU,kBAiBZ/C,UAAW,OACXgI,OAAQ,CACN9C,IAAK,IACLE,SAAU,CACR6a,EACAE,EACAvF,EACAsF,EACAnD,EACAC,MAMZ,ET5DEqD,KPKF,SAAc3R,GACZ,MAAMzK,EAAQyK,EAAKzK,MACbqc,EAAgB,iCAChBC,EAAmBD,EACrB/F,EAAW,OAAS+F,EAAgB,kBAAoBA,EAAgB,WAAY,OAAQ,GAsE1F3F,EAAW,CACf7R,QAtEoB,CACpB,eACA,WACA,UACA,MACA,SACA,KACA,SACA,MACA,QACA,WACA,UACA,YACA,SACA,SACA,QACA,OACA,OACA,OACA,QACA,YACA,QACA,aACA,WACA,OACA,SACA,UACA,UACA,SACA,MACA,SACA,WACA,SACA,YACA,SACA,UACA,SACA,WACA,UACA,KACA,SACA,QACA,UACA,OACA,QA2BA2T,QAnBe,CACf,QACA,OACA,QAiBAxe,KAdY,CACZ,OACA,UACA,OACA,QACA,MACA,OACA,QACA,UAOAse,SA1BgB,CAChB,QACA,SA2BIiE,EAAa,CACjBxgB,UAAW,OACX+E,MAAO,IAAMub,EACblb,SAAU,CACR,CACEL,MAAO,KACPG,IAAK,KACLE,SAAU,CAAE,WAIZqb,EAAS,CACbzgB,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CAAEsJ,EAAK/I,sBACjBwC,YAAY,GAGd,MAAO,CACLpK,KAAM,OACN6Q,QAAS,CAAE,OACXpH,SAAUmT,EACVxV,QAAS,QACTC,SAAU,CACRsJ,EAAKpJ,QACH,UACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CAEEL,MAAO,OACPC,UAAW,GAEb,CACEhF,UAAW,SACX+E,MAAO,iBAMf,CACEA,MAAO,wBACPyC,SAAU,SACVxC,UAAW,GAEb0J,EAAKhJ,oBACLgJ,EAAK/I,qBACL,CACEZ,MAAO,MACPG,IAAK,MACLlF,UAAW,SACXoF,SAAU,CAAEsJ,EAAK5J,mBAEnB4J,EAAKzJ,iBACLyJ,EAAKrJ,kBACL,CACEjB,MAAO,CACL,oDACA,MACAkc,GAEFtgB,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CAEEoE,MAAO,aACP9E,MAAO,WAET,CACEyF,MAAO,CACLd,EAAMjB,OAAO,WAAYsd,GACzB,MACAA,EACA,MACA,UAEFtgB,UAAW,CACT,EAAG,OACH,EAAG,WACH,EAAG,aAGP,CACE+E,MAAO,CACL,SACA,MACAub,GAEFtgB,UAAW,CACT,EAAG,UACH,EAAG,eAELoF,SAAU,CACRqb,EACA/R,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CAGE0B,cAAe,wBACfrC,UAAW,GAEb,CACED,MAAO,CACL,MAAQwb,EAAmB,QAC3B7R,EAAKhK,oBACL,aAEF1E,UAAW,CAAE,EAAG,kBAChBwH,SAAUmT,EACVvV,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACRob,EACA9R,EAAKzJ,iBACLyJ,EAAKrJ,kBACLiV,EACA5L,EAAK/I,uBAGT+I,EAAKhJ,oBACLgJ,EAAK/I,uBAGT2U,EACAkG,GAGN,EOrOEE,WN8GF,SAAoBhS,GAClB,MAAMzK,EAAQyK,EAAKzK,MAcb0c,EAAalc,EACbmc,EACG,KADHA,EAEC,MAIDC,EAAU,CACd9b,MAAO,sBACPG,IAAK,4BAKL4b,kBAAmB,CAAC1c,EAAO6C,KACzB,MAAM8Z,EAAkB3c,EAAM,GAAG7C,OAAS6C,EAAME,MAC1C0c,EAAW5c,EAAM8C,MAAM6Z,GAC7B,GAIe,MAAbC,GAGa,MAAbA,EAGA,YADA/Z,EAASvI,cAiBX,IAAI6H,EAXa,MAAbya,IAtCc,EAAC5c,GAAS6c,YAC9B,MAAMC,EAAM,KAAO9c,EAAM,GAAGkI,MAAM,GAElC,OAAgB,IADJlI,EAAM8C,MAAMiQ,QAAQ+J,EAAKD,EACpB,EAsCRE,CAAc/c,EAAO,CAAE6c,MAAOF,KACjC9Z,EAASvI,eAQb,MAAM0iB,EAAahd,EAAM8C,MAAM7C,UAAU0c,KAIpCxa,EAAI6a,EAAWhd,MAAM,YAQrBmC,EAAI6a,EAAWhd,MAAM,oBACR,IAAZmC,EAAEjC,QARN2C,EAASvI,aAaX,GAGE2iB,EAAa,CACjBpU,SAAUxI,EACVqE,QAAS6R,EACT8B,QAAS7B,EACT2B,SAAUtB,EACV,oBAAqBD,GAIjBb,EAAgB,kBAChBC,EAAO,OAAOD,KAGdmH,EAAiB,sCACjBC,EAAS,CACbvhB,UAAW,SACXyN,SAAU,CAER,CAAE1I,MAAO,QAAQuc,OAAoBlH,aAAgBA,gBACtCD,SACf,CAAEpV,MAAO,OAAOuc,UAAuBlH,gBAAmBA,SAG1D,CAAErV,MAAO,8BAGT,CAAEA,MAAO,4CACT,CAAEA,MAAO,gCACT,CAAEA,MAAO,gCAIT,CAAEA,MAAO,oBAEXC,UAAW,GAGP+Y,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,SACPG,IAAK,MACLsC,SAAU6Z,EACVjc,SAAU,IAENoc,EAAgB,CACpBzc,MAAO,UACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,QAGXyQ,EAAe,CACnB1c,MAAO,SACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,QAGX0Q,EAAmB,CACvB3c,MAAO,SACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,YAGX2Q,EAAkB,CACtB3hB,UAAW,SACX+E,MAAO,IACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACLiZ,IA0CEzY,EAAU,CACdtF,UAAW,UACXyN,SAAU,CAzCUiB,EAAKpJ,QACzB,eACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CACEL,MAAO,iBACPC,UAAW,EACXI,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,cAET,CACE/E,UAAW,OACX+E,MAAO,MACPG,IAAK,MACLwF,YAAY,EACZlF,cAAc,EACdR,UAAW,GAEb,CACEhF,UAAW,WACX+E,MAAO4b,EAAa,gBACpBxY,YAAY,EACZnD,UAAW,GAIb,CACED,MAAO,cACPC,UAAW,QAWnB0J,EAAK/I,qBACL+I,EAAKhJ,sBAGHkc,EAAkB,CACtBlT,EAAKzJ,iBACLyJ,EAAKrJ,kBACLmc,EACAC,EACAC,EACAC,EAEA,CAAEvd,MAAO,SACTmd,GAKFxD,EAAM3Y,SAAWwc,EACd5e,OAAO,CAGN+B,MAAO,KACPG,IAAK,KACLsC,SAAU6Z,EACVjc,SAAU,CACR,QACApC,OAAO4e,KAEb,MAAMC,EAAqB,GAAG7e,OAAOsC,EAASyY,EAAM3Y,UAC9C0c,EAAkBD,EAAmB7e,OAAO,CAEhD,CACE+B,MAAO,UACPG,IAAK,KACLsC,SAAU6Z,EACVjc,SAAU,CAAC,QAAQpC,OAAO6e,MAGxBpB,EAAS,CACbzgB,UAAW,SAEX+E,MAAO,UACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAU6Z,EACVjc,SAAU0c,GAINC,EAAmB,CACvBtU,SAAU,CAER,CACErJ,MAAO,CACL,QACA,MACAuc,EACA,MACA,UACA,MACA1c,EAAMjB,OAAO2d,EAAY,IAAK1c,EAAMjB,OAAO,KAAM2d,GAAa,OAEhErhB,MAAO,CACL,EAAG,UACH,EAAG,cACH,EAAG,UACH,EAAG,0BAIP,CACE8E,MAAO,CACL,QACA,MACAuc,GAEFrhB,MAAO,CACL,EAAG,UACH,EAAG,kBAOL0iB,EAAkB,CACtBhd,UAAW,EACXZ,MACAH,EAAMb,OAEJ,SAEA,iCAEA,6CAEA,oDAMFpD,UAAW,cACXwH,SAAU,CACRkT,EAAG,IAEEG,KACAC,KAYHmH,EAAsB,CAC1BxU,SAAU,CACR,CACErJ,MAAO,CACL,WACA,MACAuc,EACA,cAIJ,CACEvc,MAAO,CACL,WACA,eAINpE,UAAW,CACT,EAAG,UACH,EAAG,kBAELkiB,MAAO,WACP9c,SAAU,CAAEqb,GACZtb,QAAS,KAaLgd,EAAgB,CACpB/d,MAAOH,EAAMjB,OACX,MANY+P,EAOL,IACFgI,EACH,QACA,UACAxa,KAAIC,GAAK,GAAGA,aAVTyD,EAAMjB,OAAO,MAAO+P,EAAKpS,KAAK,KAAM,MAWzCggB,EAAY1c,EAAMlB,UAAU,UAC9B/C,UAAW,iBACXgF,UAAW,GAdb,IAAgB+N,EAiBhB,MAAMqP,EAAkB,CACtBrd,MAAOd,EAAMjB,OAAO,KAAMiB,EAAMlB,UAC9BkB,EAAMjB,OAAO2d,EAAY,wBAE3Bzb,IAAKyb,EACLnb,cAAc,EACdgC,SAAU,YACVxH,UAAW,WACXgF,UAAW,GAGPqd,EAAmB,CACvBje,MAAO,CACL,UACA,MACAuc,EACA,UAEF3gB,UAAW,CACT,EAAG,UACH,EAAG,kBAELoF,SAAU,CACR,CACEL,MAAO,QAET0b,IAIE6B,EAAkB,2DAMb5T,EAAKhK,oBAAsB,UAEhC6d,EAAoB,CACxBne,MAAO,CACL,gBAAiB,MACjBuc,EAAY,MACZ,OACA,cACA1c,EAAMlB,UAAUuf,IAElB9a,SAAU,QACVxH,UAAW,CACT,EAAG,UACH,EAAG,kBAELoF,SAAU,CACRqb,IAIJ,MAAO,CACL1iB,KAAM,aACN6Q,QAAS,CAAC,KAAM,MAAO,MAAO,OAC9BpH,SAAU6Z,EAEV5J,QAAS,CAAEqK,kBAAiBE,mBAC5B7c,QAAS,eACTC,SAAU,CACRsJ,EAAK7H,QAAQ,CACXqb,MAAO,UACPnb,OAAQ,OACR/B,UAAW,IA5HE,CACjBkd,MAAO,aACPliB,UAAW,OACXgF,UAAW,GACXD,MAAO,gCA2HL2J,EAAKzJ,iBACLyJ,EAAKrJ,kBACLmc,EACAC,EACAC,EACAC,EACArc,EAEA,CAAElB,MAAO,SACTmd,EACAS,EACA,CACE1iB,MAAO,OACP8E,MAAOuc,EAAa1c,EAAMlB,UAAU,KACpCiC,UAAW,GAEbud,EACA,CACExd,MAAO,IAAM2J,EAAK9H,eAAiB,kCACnCY,SAAU,oBACVxC,UAAW,EACXI,SAAU,CACRE,EACAoJ,EAAK1I,YACL,CACEhG,UAAW,WAIX+E,MAAOud,EACP9X,aAAa,EACbtF,IAAK,SACLE,SAAU,CACR,CACEpF,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO2J,EAAKhK,oBACZM,UAAW,GAEb,CACEhF,UAAW,KACX+E,MAAO,UACPwF,MAAM,GAER,CACExF,MAAO,UACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAU6Z,EACVjc,SAAU0c,OAMpB,CACE/c,MAAO,IACPC,UAAW,GAEb,CACEZ,MAAO,MACPY,UAAW,GAEb,CACEyI,SAAU,CACR,CAAE1I,MAAO6b,EAAgB1b,IAAK0b,GAC9B,CAAExc,MAvfW,6BAwfb,CACEW,MAAO8b,EAAQ9b,MAGf,WAAY8b,EAAQC,kBACpB5b,IAAK2b,EAAQ3b,MAGjB8L,YAAa,MACb5L,SAAU,CACR,CACEL,MAAO8b,EAAQ9b,MACfG,IAAK2b,EAAQ3b,IACbqF,MAAM,EACNnF,SAAU,CAAC,aAMrB6c,EACA,CAGE5a,cAAe,6BAEjB,CAIEtC,MAAO,kBAAoB2J,EAAKhK,oBAAzB,gEAQP8F,aAAY,EACZ0X,MAAO,WACP9c,SAAU,CACRqb,EACA/R,EAAKJ,QAAQI,EAAKzI,WAAY,CAAElB,MAAO4b,EAAY3gB,UAAW,qBAIlE,CACEoE,MAAO,SACPY,UAAW,GAEbod,EAIA,CACEhe,MAAO,MAAQuc,EACf3b,UAAW,GAEb,CACEZ,MAAO,CAAE,0BACTpE,UAAW,CAAE,EAAG,kBAChBoF,SAAU,CAAEqb,IAEd0B,EAjOwB,CAC1Bnd,UAAW,EACXZ,MAAO,sBACPpE,UAAW,qBAgOT+hB,EACAM,EACA,CACEje,MAAO,WAIf,EMlsBEoe,KUpDF,SAAc9T,GACZ,MAUMkM,EAAW,CACf,OACA,QACA,QAOI6H,EAAgB,CACpBnjB,MAAO,UACP+H,cAAeuT,EAASja,KAAK,MAG/B,MAAO,CACL5C,KAAM,OACN6Q,QAAS,CAAC,SACVpH,SAAS,CACPiV,QAAS7B,GAEXxV,SAAU,CA/BM,CAChBpF,UAAW,OACX+E,MAAO,8BACPC,UAAW,MAEO,CAClBZ,MAAO,YACPpE,UAAW,cACXgF,UAAW,GA0BT0J,EAAKrJ,kBACLod,EACA/T,EAAK5I,cACL4I,EAAKhJ,oBACLgJ,EAAK/I,sBAEPR,QAAS,MAEb,EVUEud,OLjBF,SAAgBhU,GACd,MAAMiM,EAAW,CACf7R,QACE,wYAKFyT,SACE,kEACFE,QACE,mBAYEkG,EAAQ,CACZ3iB,UAAW,SACX+E,MAAO2J,EAAKhK,oBAAsB,KAI9BqZ,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,OACPG,IAAK,KACLE,SAAU,CAAEsJ,EAAK5I,gBAEb8c,EAAW,CACf5iB,UAAW,WACX+E,MAAO,MAAQ2J,EAAKhK,qBAEhBqa,EAAS,CACb/e,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,MACPG,IAAK,cACLE,SAAU,CACRwd,EACA7E,IAMJ,CACEhZ,MAAO,IACPG,IAAK,IACLC,QAAS,KACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,IACPG,IAAK,IACLC,QAAS,KACTC,SAAU,CACRsJ,EAAK5J,iBACL8d,EACA7E,MAKRA,EAAM3Y,SAAS3D,KAAKsd,GAEpB,MAAM8D,EAAsB,CAC1B7iB,UAAW,OACX+E,MAAO,gFAAkF2J,EAAKhK,oBAAsB,MAEhH8b,EAAa,CACjBxgB,UAAW,OACX+E,MAAO,IAAM2J,EAAKhK,oBAClBU,SAAU,CACR,CACEL,MAAO,KACPG,IAAK,KACLE,SAAU,CACRsJ,EAAKJ,QAAQyQ,EAAQ,CAAE/e,UAAW,WAClC,WASF8iB,EAAqB,EACrBC,EAAwBrU,EAAKpJ,QACjC,OAAQ,OACR,CAAEF,SAAU,CAAEsJ,EAAK/I,wBAEfqd,EAAoB,CAAEvV,SAAU,CACpC,CACEzN,UAAW,OACX+E,MAAO2J,EAAKhK,qBAEd,CACEK,MAAO,KACPG,IAAK,KACLE,SAAU,MAGR6d,EAAqBD,EAI3B,OAHAC,EAAmBxV,SAAS,GAAGrI,SAAW,CAAE4d,GAC5CA,EAAkBvV,SAAS,GAAGrI,SAAW,CAAE6d,GAEpC,CACLllB,KAAM,SACN6Q,QAAS,CACP,KACA,OAEFpH,SAAUmT,EACVvV,SAAU,CACRsJ,EAAKpJ,QACH,UACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,iBAKf2J,EAAKhJ,oBACLqd,EA5HwB,CAC1B/iB,UAAW,UACX+E,MAAO,mCACPiD,OAAQ,CAAE5C,SAAU,CAClB,CACEpF,UAAW,SACX+E,MAAO,WAwHT4d,EACAE,EACArC,EACA,CACExgB,UAAW,WACXqH,cAAe,MACfnC,IAAK,QACLsF,aAAa,EACbE,YAAY,EACZlD,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,CACEL,MAAO2J,EAAKhK,oBAAsB,UAClC8F,aAAa,EACbxF,UAAW,EACXI,SAAU,CAAEsJ,EAAKxI,wBAEnB,CACElG,UAAW,OACX+E,MAAO,IACPG,IAAK,IACLsC,SAAU,UACVxC,UAAW,GAEb,CACEhF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLiD,YAAY,EACZX,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,CACEL,MAAO,IACPG,IAAK,SACLkI,gBAAgB,EAChBhI,SAAU,CACR4d,EACAtU,EAAKhJ,oBACLqd,GAEF/d,UAAW,GAEb0J,EAAKhJ,oBACLqd,EACAF,EACArC,EACAzB,EACArQ,EAAK5I,gBAGTid,IAGJ,CACEhe,MAAO,CACL,wBACA,MACA2J,EAAKhK,qBAEP0F,WAAY,CACV,EAAG,eAEL5C,SAAU,wBACVtC,IAAK,WACLwF,YAAY,EACZvF,QAAS,qBACTC,SAAU,CACR,CAAEiC,cAAe,iDACjBqH,EAAKxI,sBACL,CACElG,UAAW,OACX+E,MAAO,IACPG,IAAK,IACLM,cAAc,EACdkF,YAAY,EACZ1F,UAAW,GAEb,CACEhF,UAAW,OACX+E,MAAO,UACPG,IAAK,eACLM,cAAc,EACdmF,WAAW,GAEbkY,EACArC,IAGJzB,EACA,CACE/e,UAAW,OACX+E,MAAO,kBACPG,IAAK,IACLC,QAAS,MAEX2d,GAGN,EK7NEI,KJ2vBF,SAAcxU,GACZ,MAAM0Q,EA1zBM,CAAC1Q,IACN,CACL2Q,UAAW,CACT/f,MAAO,OACPyF,MAAO,cAETua,cAAe5Q,EAAK/I,qBACpB4Z,SAAU,CACRjgB,MAAO,SACPyF,MAAO,mDAETsY,kBAAmB,CACjBrd,UAAW,WACX+E,MAAO,gBAETya,wBAAyB,CACvBlgB,MAAO,gBACPyF,MAAO,KACPG,IAAK,KACLC,QAAS,IACTC,SAAU,CACRsJ,EAAKzJ,iBACLyJ,EAAKrJ,oBAGToa,gBAAiB,CACfngB,MAAO,SACPyF,MAAO2J,EAAK/J,UAAL+J,kGASP1J,UAAW,GAEb0a,aAAc,CACZ1f,UAAW,OACX+E,MAAO,+BAkxBG,CAAM2J,GACdyU,EAAqBjI,EAGrBzW,EAAW,UACX2e,EAAkB,IAAM3e,EAAW,QAAUA,EAAW,OAIxD4e,EAAQ,GAAUC,EAAc,GAEhCC,EAAc,SAAS/V,GAC3B,MAAO,CAELxN,UAAW,SACX+E,MAAO,KAAOyI,EAAI,MAAQA,EAE9B,EAEMgW,EAAa,SAASzlB,EAAMgH,EAAOC,GACvC,MAAO,CACLhF,UAAWjC,EACXgH,MAAOA,EACPC,UAAWA,EAEf,EAEMye,EAAc,CAClBxW,SAAU,UACVnE,QA1BmB,kBA2BnB8W,UAAW,EAAejf,KAAK,MAG3B+iB,EAAc,CAElB3e,MAAO,MACPG,IAAK,MACLE,SAAUke,EACV9b,SAAUic,EACVze,UAAW,GAIbse,EAAY7hB,KACViN,EAAKhJ,oBACLgJ,EAAK/I,qBACL4d,EAAY,KACZA,EAAY,KACZnE,EAAMK,gBACN,CACE1a,MAAO,oBACPiD,OAAQ,CACNhI,UAAW,SACXkF,IAAK,WACLwF,YAAY,IAGhB0U,EAAMG,SACNmE,EACAF,EAAW,WAAY,MAAQ/e,EAAU,IACzC+e,EAAW,WAAY,OAAS/e,EAAW,OAC3C+e,EAAW,WAAY,cACvB,CACExjB,UAAW,YACX+E,MAAON,EAAW,QAClBS,IAAK,IACLsF,aAAa,EACbE,YAAY,GAEd0U,EAAMC,UACN,CAAEhY,cAAe,WACjB+X,EAAM/B,mBAGR,MAAMsG,EAAsBL,EAAYtgB,OAAO,CAC7C+B,MAAO,KACPG,IAAK,KACLE,SAAUie,IAGNO,EAAmB,CACvBvc,cAAe,OACf+F,gBAAgB,EAChBhI,SAAU,CAAE,CAAEiC,cAAe,YAAcrE,OAAOsgB,IAK9CO,EAAY,CAChB9e,MAAOqe,EAAkB,QACzB5Y,aAAa,EACbtF,IAAK,OACLF,UAAW,EACXI,SAAU,CACR,CAAEL,MAAO,uBACTqa,EAAMM,aACN,CACE1f,UAAW,YACX+E,MAAO,OAAS,EAAWpE,KAAK,KAAO,OACvCuE,IAAK,QACL8C,OAAQ,CACNoF,gBAAgB,EAChBjI,QAAS,QACTH,UAAW,EACXI,SAAUke,MAMZQ,EAAe,CACnB9jB,UAAW,UACX+E,MAAO,2GACPiD,OAAQ,CACN9C,IAAK,QACLsC,SAAUic,EACV9Y,WAAW,EACXvF,SAAUke,EACVte,UAAW,IAKT+e,EAAgB,CACpB/jB,UAAW,WACXyN,SAAU,CAKR,CACE1I,MAAO,IAAMN,EAAW,QACxBO,UAAW,IAEb,CAAED,MAAO,IAAMN,IAEjBuD,OAAQ,CACN9C,IAAK,OACLyF,WAAW,EACXvF,SAAUue,IAIRK,EAAgB,CAIpBvW,SAAU,CACR,CACE1I,MAAO,eACPG,IAAK,SAEP,CACEH,MAAOqe,EACPle,IAAK,OAGTsF,aAAa,EACbG,WAAW,EACXxF,QAAS,WACTH,UAAW,EACXI,SAAU,CACRsJ,EAAKhJ,oBACLgJ,EAAK/I,qBACLie,EACAJ,EAAW,UAAW,UACtBA,EAAW,WAAY,OAAS/e,EAAW,OAE3C,CACEM,MAAO,OAAS,EAAKpE,KAAK,KAAO,OACjCX,UAAW,gBAEbof,EAAMK,gBACN+D,EAAW,eAAgBJ,EAAiB,GAC5CI,EAAW,cAAe,IAAMJ,GAChCI,EAAW,iBAAkB,MAAQJ,EAAiB,GACtDI,EAAW,eAAgB,IAAK,GAChCpE,EAAMI,wBACN,CACExf,UAAW,kBACX+E,MAAO,KAAO,EAAepE,KAAK,KAAO,KAE3C,CACEX,UAAW,kBACX+E,MAAO,SAAW,EAAgBpE,KAAK,KAAO,KAEhD,CACEoE,MAAO,KACPG,IAAK,KACLF,UAAW,EACXI,SAAUue,GAEZ,CAAE5e,MAAO,cACTqa,EAAM/B,oBAIJ4G,EAAuB,CAC3Blf,MAAON,EAAW,QAAU,IAAI0e,EAAmBxiB,KAAK,QACxD6J,aAAa,EACbpF,SAAU,CAAE4e,IAed,OAZAX,EAAM5hB,KACJiN,EAAKhJ,oBACLgJ,EAAK/I,qBACLme,EACAC,EACAE,EACAJ,EACAG,EACAJ,EACAxE,EAAM/B,mBAGD,CACLtf,KAAM,OACNkN,kBAAkB,EAClB9F,QAAS,cACTC,SAAUie,EAEd,EIx9BEa,IWvDF,SAAaxV,GACX,MAAMyV,EAAuB,WACvBC,EAAuB,WACvBC,EAAgB,CACpBtf,MAAOof,EACPjf,IAAKkf,EACLhf,SAAU,CAAE,SAER6a,EAAW,CACfvR,EAAKpJ,QAAQ,QAAU6e,EAAuB,IAAK,KACnDzV,EAAKpJ,QACH,KAAO6e,EACPC,EACA,CACEhf,SAAU,CAAEif,GACZrf,UAAW,MAIjB,MAAO,CACLjH,KAAM,MACN6Q,QAAS,CAAC,SACVpH,SAAU,CACRyF,SAAUyB,EAAKhK,oBACf+X,QAAS,iBACT3T,QAAS,0FACTyT,SAEE,wlCAeJnX,SAAU6a,EAASjd,OAAO,CACxB,CACEhD,UAAW,WACXqH,cAAe,WACfnC,IAAK,MACLE,SAAU,CACRsJ,EAAKJ,QAAQI,EAAKzI,WAAY,CAAElB,MAAO,sDACvC,CACE/E,UAAW,SACX+E,MAAO,MACPqI,gBAAgB,EAChBhI,SAAU6a,IAEZjd,OAAOid,IAEXvR,EAAK5I,cACL4I,EAAKzJ,iBACLyJ,EAAKrJ,kBACL,CACErF,UAAW,SACX+E,MAAOof,EACPjf,IAAKkf,EACLhf,SAAU,CAAEif,GACZrf,UAAW,KAInB,EXdEsf,SYxDF,SAAkB5V,GAEhB,MAAMkU,EAAW,CACf5iB,UAAW,WACXyN,SAAU,CACR,CACE1I,MAAO,SAAW2J,EAAKhK,oBAAsB,MAC7CU,SAAU,CAAEsJ,EAAK5J,mBAEnB,CAAEC,MAAO,oBAIPkZ,EAAe,CACnBje,UAAW,SACX+E,MAAO,IACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACL8d,IAIE2B,EAAO,CACXvkB,UAAW,WACX+E,MAAO,eACPG,IAAK,KACLsC,SAAU,CAAE+U,SACR,kPAIJnX,SAAU,CACRwd,EACA3E,IAIEuG,EAAa,CAAEzf,MAAO,IAAM2J,EAAKhK,oBAAsB,mBAYvD+f,EAAS,CACbzkB,UAAW,UACX+E,MAAO,WACPG,IAAK,IACLE,SAAU,CAAEwd,IAEd,MAAO,CACL7kB,KAAM,WACN6Q,QAAS,CACP,KACA,MACA,QAEFpH,SAAU,CACRyF,SAAU,SACVnE,QAAS,6HAGX1D,SAAU,CACRsJ,EAAK9I,kBACLgd,EACA3E,EACAsG,EACAC,EAjCS,CACXxkB,UAAW,OACX+E,MAAO,YACPG,IAAK,IACLsC,SAAU,CACRyF,SAAU,UACVnE,QAAS,WA6BT2b,GAGN,EZrBEC,SazDF,SAAkBhW,GAChB,MACMiW,EAAc,CAClB5f,MAAO,gBACPG,IAAK,IACL8L,YAAa,MACbhM,UAAW,GA8DP4f,EAAO,CACXnX,SAAU,CAGR,CACE1I,MAAO,iBACPC,UAAW,GAGb,CACED,MAAO,gEACPC,UAAW,GAEb,CACED,MAjFQ2J,EAAKzK,MAiFAjB,OAAO,YAfP,0BAegC,cAC7CgC,UAAW,GAGb,CACED,MAAO,wBACPC,UAAW,GAGb,CACED,MAAO,iBACPC,UAAW,IAGfwF,aAAa,EACbpF,SAAU,CACR,CAEEhB,MAAO,YACT,CACEpE,UAAW,SACXgF,UAAW,EACXD,MAAO,MACPG,IAAK,MACLM,cAAc,EACdmF,WAAW,GAEb,CACE3K,UAAW,OACXgF,UAAW,EACXD,MAAO,SACPG,IAAK,MACLM,cAAc,EACdkF,YAAY,GAEd,CACE1K,UAAW,SACXgF,UAAW,EACXD,MAAO,SACPG,IAAK,MACLM,cAAc,EACdkF,YAAY,KAIZma,EAAO,CACX7kB,UAAW,SACXoF,SAAU,GACVqI,SAAU,CACR,CACE1I,MAAO,aACPG,IAAK,QAEP,CACEH,MAAO,cACPG,IAAK,WAIL4f,EAAS,CACb9kB,UAAW,WACXoF,SAAU,GACVqI,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,aACPG,IAAK,IACLF,UAAW,KAQX+f,EAAsBrW,EAAKJ,QAAQuW,EAAM,CAAEzf,SAAU,KACrD4f,EAAsBtW,EAAKJ,QAAQwW,EAAQ,CAAE1f,SAAU,KAC7Dyf,EAAKzf,SAAS3D,KAAKujB,GACnBF,EAAO1f,SAAS3D,KAAKsjB,GAErB,IAAIE,EAAc,CAChBN,EACAC,GAiDF,MA9CA,CACEC,EACAC,EACAC,EACAC,GACAlnB,SAAQyI,IACRA,EAAEnB,SAAWmB,EAAEnB,SAASpC,OAAOiiB,EAAY,IAG7CA,EAAcA,EAAYjiB,OAAO6hB,EAAMC,GAqChC,CACL/mB,KAAM,WACN6Q,QAAS,CACP,KACA,SACA,OAEFxJ,SAAU,CA1CG,CACbpF,UAAW,UACXyN,SAAU,CACR,CACE1I,MAAO,UACPG,IAAK,IACLE,SAAU6f,GAEZ,CACElgB,MAAO,uBACPK,SAAU,CACR,CAAEL,MAAO,WACT,CACEA,MAAO,IACPG,IAAK,MACLE,SAAU6f,OA6BhBN,EAvLS,CACX3kB,UAAW,SACX+E,MAAO,mCACPG,IAAK,OACLwF,YAAY,GAqLVma,EACAC,EAzBe,CACjB9kB,UAAW,QACX+E,MAAO,SACPK,SAAU6f,EACV/f,IAAK,KAnMM,CACXlF,UAAW,OACXyN,SAAU,CAER,CAAE1I,MAAO,iCACT,CAAEA,MAAO,iCAET,CACEA,MAAO,MACPG,IAAK,aAEP,CACEH,MAAO,MACPG,IAAK,aAEP,CAAEH,MAAO,SACT,CACEA,MAAO,kBAGPK,SAAU,CACR,CACEL,MAAO,cACPG,IAAK,WAGTF,UAAW,KA9BO,CACtBD,MAAO,cACPG,IAAK,KA8NH0f,EAxLmB,CACrB7f,MAAO,eACPyF,aAAa,EACbpF,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,GAEd,CACE1K,UAAW,OACX+E,MAAO,OACPG,IAAK,IACLM,cAAc,KAmJL,CAEblG,MAAO,UACP8E,MAAO,uDAwBX,EbnLE8gB,Wc1DF,SAAoBxW,GAClB,MAIMyW,EAAgB,yBAkKhBC,EAAiB,CACrBnY,SAAUkY,EACVrc,QAAS,CACP,aACA,SACA,YACA,oBAGJ,MAAO,CACL/K,KAAM,cACN6Q,QAAS,CACP,KACA,OACA,QACA,UACA,iBAEFpH,SA7Be,CACf,oBAAqB,CACnB,OACA,SAEFyF,SAAUkY,EACVrc,QA3IU,CACV,QACA,SACA,SACA,UACA,QACA,SACA,MACA,QACA,WACA,SACA,UACA,KACA,KACA,SACA,OACA,OACA,OACA,QACA,SACA,MACA,OACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,WACA,SACA,YACA,OACA,gBACA,KACA,SACA,YACA,WACA,WACA,SACA,OACA,OACA,KACA,MACA,QACA,SACA,QACA,SACA,WACA,SACA,UACA,kBACA,WACA,aACA,UACA,OACA,YACA,OACA,SACA,SACA,WACA,mBACA,cACA,WACA,YACA,YACA,YACA,UACA,WACA,UACA,QACA,uBACA,WACA,oBACA,oBACA,kBACA,cACA,kBACA,WACA,WACA,YACA,oBACA,eACA,sBACA,gBACA,SACA,SACA,SACA,oBACA,UACA,WACA,mBACA,kBACA,QACA,eACA,4BACA,iBACA,oBACA,2BACA,YACA,eACA,gBACA,UACA,aACA,uBACA,0BACA,wBACA,uBACA,gBACA,mBACA,YACA,aACA,gBACA,iBACA,iBA0BA2T,QAxBe,CACf,QACA,OACA,QACA,OACA,MACA,MACA,KACA,QAiBAF,SAfgB,CAChB,kBACA,mBACA,gBACA,iBACA,iBAWAte,KA/JY,CACZ,MACA,QACA,OACA,WACA,SACA,QACA,OACA,SACA,UACA,UACA,OACA,OACA,OACA,OACA,UAqKAkH,QAAS,KACTC,SAAU,CA1LM,CAChBpF,UAAW,WACX+E,MAAO,wEA0LL2J,EAAKhJ,oBACLgJ,EAAK/I,qBACL+I,EAAK5I,cACL4I,EAAKrJ,kBACLqJ,EAAKzJ,iBACL,CACEjF,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,KACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,qBAIvB,CACE9E,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,kFAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CAAErF,UAAW,WAClD,CACEA,UAAW,SACX+E,MAAO,QACPG,IAAK,IACLC,QAAS,OAEXuJ,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CACE3F,UAAW,QACX+E,MAAO,IAAMqgB,EAAetc,QAAQnI,KAAK,KAAO,OAChDuE,IAAK,SACLwF,YAAY,EACZlD,SAAU4d,EACVhgB,SAAU,CAAEsJ,EAAKxI,wBAEnB,CACEnB,MAAO,MAAQ2J,EAAKhK,oBACpBM,UAAW,IAInB,EdvLEqgB,Ke3DF,SAAc3W,GACZ,MAAMzK,EAAQyK,EAAKzK,MA8ObqhB,EAAkB,uBAClBC,EAAgB,CACpBtY,SAAU,SACVnE,QAhPe,CACf,MACA,SACA,QACA,MACA,QACA,OACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,MACA,SACA,QACA,QACA,WACA,UACA,WACA,MACA,QACA,WACA,UACA,UACA,SACA,MACA,KACA,OACA,OACA,OACA,QACA,WACA,aACA,YACA,cACA,WACA,aACA,MACA,OACA,OACA,SACA,OACA,MACA,QACA,QACA,SACA,QACA,MACA,UACA,OACA,SACA,WACA,OACA,WACA,WACA,WACA,gBACA,gBACA,aACA,WACA,eACA,eACA,YACA,cACA,UACA,cACA,iBACA,mBACA,cACA,WACA,WACA,WACA,gBACA,gBACA,aACA,cACA,aACA,QACA,OACA,SACA,OACA,OACA,KACA,MACA,KACA,QACA,MACA,QACA,OACA,OACA,OACA,OACA,KACA,UACA,SACA,OACA,SACA,QACA,YACA,MACA,QACA,KACA,KACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,KACA,KACA,OACA,KACA,MACA,MACA,OACA,UACA,KACA,MACA,MACA,OACA,UACA,OACA,MACA,MACA,QACA,SACA,YACA,OACA,MACA,KACA,YACA,KACA,KACA,OACA,OACA,UACA,WACA,WACA,WACA,OACA,OACA,MACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,MACA,SACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,WACA,aACA,YACA,UACA,cACA,cACA,WACA,aACA,aACA,QACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,SACA,aACA,OACA,SACA,QACA,UACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,MACA,OACA,OACA,QACA,KACA,WACA,KACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,QACA,MACA,QACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,QACA,QACA,MACA,MACA,OAOkBnI,KAAK,MAEnBod,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,UACPG,IAAK,MACLsC,SAAU+d,GAENC,EAAS,CACbzgB,MAAO,OACPG,IAAK,MAGDugB,EAAO,CACXnmB,MAAO,OACP8E,MAAO,2BAEHyZ,EAAM,CACVve,MAAO,WACPmO,SAAU,CACR,CAAE1I,MAAO,QACT,CAAEA,MAAOd,EAAMjB,OACb,sDAGA,0BAGF,CAEE+B,MAAO,0BACPC,U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CAAE1I,MAAO,SACT,CACEA,MAAO,OACPG,IAAK,QAILmhB,EAAgB3X,EAAKJ,QAAQI,EAAKzJ,iBAAkB,CAAEE,QAAS,OAmB/DmhB,EAAa,UACbvH,EAAS,CACbzf,MAAO,SACPmO,SAAU,CArBUiB,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACzDF,QAAS,KACTC,SAAUsJ,EAAKrJ,kBAAkBD,SAASpC,OAAO+a,KAqB/CsI,EAlBY,CACdthB,MAAO,+BACPG,IAAK,gBACLE,SAAUsJ,EAAKrJ,kBAAkBD,SAASpC,OAAO+a,GACjD,WAAY,CAACxX,EAAGC,KAAWA,EAAKjI,KAAKkI,YAAcF,EAAE,IAAMA,EAAE,EAAE,EAC/D,SAAU,CAACA,EAAGC,KAAeA,EAAKjI,KAAKkI,cAAgBF,EAAE,IAAIC,EAAK9H,aAAa,GAGlEgQ,EAAKpI,kBAAkB,CACpCvB,MAAO,qBACPG,IAAK,oBAaDqc,EAAS,CACbjiB,MAAO,SACPmO,SAAU,CACR,CAAE1I,MAAO,+BACT,CAAEA,MAAO,iCACT,CAAEA,MAAO,6CAET,CAAEA,MAAO,+EAEXC,UAAW,GAEP4V,EAAW,CACf,QACA,OACA,QAEI2L,EAAM,CAGV,YACA,UACA,WACA,eACA,2BACA,WACA,aACA,gBACA,YAGA,MACA,OACA,OACA,UACA,eACA,QACA,UACA,eAMA,QACA,WACA,MACA,KACA,SACA,OACA,UACA,QACA,WACA,OACA,QACA,QACA,QACA,QACA,WACA,UACA,UACA,KACA,SACA,OACA,SACA,QACA,aACA,SACA,aACA,QACA,YACA,WACA,OACA,OACA,UACA,QACA,UACA,QACA,MACA,UACA,OACA,SACA,OACA,KACA,aACA,aACA,YACA,MACA,UACA,YACA,QACA,WACA,OACA,UACA,QACA,MACA,QACA,SACA,KACA,UACA,YACA,SACA,WACA,OACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,SAGItL,EAAY,CAGhB,UACA,iBACA,qBACA,kBACA,gBACA,cACA,iBACA,2BACA,yBACA,kBACA,yBACA,eACA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U,CAGR,CACEL,MAAO,OACPG,IAAK,OACLqF,MAAM,GAER,CACExF,MAAO,KACPG,IAAK,IACLqF,MAAM,GAER,CACExF,MAAO,KACPG,IAAK,IACLqF,MAAM,GAERmE,EAAKJ,QAAQI,EAAKzJ,iBAAkB,CAClCE,QAAS,KACTnF,UAAW,KACXoF,SAAU,KACVmF,MAAM,IAERmE,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACnCF,QAAS,KACTnF,UAAW,KACXoF,SAAU,KACVmF,MAAM,OAMlB,EjBmBEoJ,UkB/DF,SAAmBjF,GACjB,MAAO,CACL3Q,KAAM,aACN6Q,QAAS,CACP,OACA,OAEFK,mBAAmB,EAEvB,ElBuDEiY,OmBhEF,SAAgBxY,GACd,MAAMzK,EAAQyK,EAAKzK,MACbQ,EAAW,qCACX0iB,EAAiB,CACrB,MACA,KACA,SACA,QACA,QACA,QACA,OACA,QACA,WACA,MACA,MACA,OACA,OACA,SACA,UACA,MACA,OACA,SACA,KACA,SACA,KACA,KACA,SACA,QACA,cACA,MACA,KACA,OACA,QACA,SACA,MACA,QACA,OACA,SAuGIxM,EAAW,CACf1N,SAAU,sBACVnE,QAASqe,EACT5K,SAvGgB,CAChB,aACA,MACA,MACA,MACA,QACA,MACA,OACA,aACA,YACA,QACA,WACA,MACA,cACA,UACA,UACA,UACA,OACA,MACA,SACA,YACA,OACA,OACA,SACA,QACA,SACA,YACA,UACA,UACA,UACA,OACA,OACA,MACA,KACA,QACA,MACA,aACA,aACA,OACA,MACA,OACA,SACA,MACA,MACA,aACA,MACA,OACA,SACA,MACA,OACA,MACA,MACA,QACA,WACA,QACA,OACA,WACA,QACA,MACA,UACA,QACA,SACA,eACA,MACA,MACA,QACA,QACA,OACA,OACA,OAmCAE,QAhCe,CACf,YACA,WACA,QACA,OACA,iBACA,QA2BAxe,KArBY,CACZ,MACA,WACA,YACA,OACA,OACA,UACA,UACA,WACA,WACA,MACA,QACA,OACA,UAWImpB,EAAS,CACbpnB,UAAW,OACX+E,MAAO,kBAGHgZ,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACVxV,QAAS,KAGLkiB,EAAkB,CACtBtiB,MAAO,OACPC,UAAW,GAGP+Z,EAAS,CACb/e,UAAW,SACXoF,SAAU,CAAEsJ,EAAK5J,kBACjB2I,SAAU,CACR,CACE1I,MAAO,yCACPG,IAAK,MACLE,SAAU,CACRsJ,EAAK5J,iBACLsiB,GAEFpiB,UAAW,IAEb,CACED,MAAO,yCACPG,IAAK,MACLE,SAAU,CACRsJ,EAAK5J,iBACLsiB,GAEFpiB,UAAW,IAEb,CACED,MAAO,8BACPG,IAAK,MACLE,SAAU,CACRsJ,EAAK5J,iBACLsiB,EACAC,EACAtJ,IAGJ,CACEhZ,MAAO,8BACPG,IAAK,MACLE,SAAU,CACRsJ,EAAK5J,iBACLsiB,EACAC,EACAtJ,IAGJ,CACEhZ,MAAO,eACPG,IAAK,IACLF,UAAW,IAEb,CACED,MAAO,eACPG,IAAK,IACLF,UAAW,IAEb,CACED,MAAO,4BACPG,IAAK,KAEP,CACEH,MAAO,4BACPG,IAAK,KAEP,CACEH,MAAO,4BACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACLuiB,EACAtJ,IAGJ,CACEhZ,MAAO,4BACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACLuiB,EACAtJ,IAGJrP,EAAKzJ,iBACLyJ,EAAKrJ,oBAKHiiB,EAAY,kBACZC,EAAa,QAAQD,WAAmBA,UAAkBA,QAM1DvkB,EAAY,OAAOokB,EAAexmB,KAAK,OACvC4gB,EAAS,CACbvhB,UAAW,SACXgF,UAAW,EACXyI,SAAU,CAWR,CACE1I,MAAO,QAAQuiB,OAAeC,gBAAyBD,aAAqBvkB,MAE9E,CACEgC,MAAO,IAAIwiB,WASb,CACExiB,MAAO,0CAA0ChC,MAEnD,CACEgC,MAAO,4BAA4BhC,MAErC,CACEgC,MAAO,6BAA6BhC,MAEtC,CACEgC,MAAO,mCAAmChC,MAK5C,CACEgC,MAAO,OAAOuiB,YAAoBvkB,QAIlCykB,EAAe,CACnBxnB,UAAW,UACX+E,MAAOd,EAAMlB,UAAU,WACvBmC,IAAK,IACLsC,SAAUmT,EACVvV,SAAU,CACR,CACEL,MAAO,WAGT,CACEA,MAAO,IACPG,IAAK,OACLkI,gBAAgB,KAIhBqT,EAAS,CACbzgB,UAAW,SACXyN,SAAU,CAER,CACEzN,UAAW,GACX+E,MAAO,UACPwF,MAAM,GAER,CACExF,MAAO,KACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAUmT,EACVvV,SAAU,CACR,OACAgiB,EACA7F,EACAxC,EACArQ,EAAK9I,sBAWb,OANAmY,EAAM3Y,SAAW,CACf2Z,EACAwC,EACA6F,GAGK,CACLrpB,KAAM,SACN6Q,QAAS,CACP,KACA,MACA,WAEF1D,cAAc,EACd1D,SAAUmT,EACVxV,QAAS,cACTC,SAAU,CACRgiB,EACA7F,EACA,CAEEjiB,MAAO,oBACP8E,MAAO,YAET,CAGEiD,cAAe,KACfrC,UAAW,GAEb,CAAEZ,MAAO,SAAU9E,MAAO,WAC1Byf,EACAyI,EACA9Y,EAAK9I,kBACL,CACExB,MAAO,CACL,QAAS,MACTK,GAEFnF,MAAO,CACL,EAAG,UACH,EAAG,kBAEL8F,SAAU,CAAEqb,IAEd,CACEhT,SAAU,CACR,CACErJ,MAAO,CACL,UAAW,MACXK,EAAU,MACV,QAASA,EAAS,UAGtB,CACEL,MAAO,CACL,UAAW,MACXK,KAINnF,MAAO,CACL,EAAG,UACH,EAAG,cACH,EAAG,0BAGP,CACEU,UAAW,OACX+E,MAAO,WACPG,IAAK,UACLE,SAAU,CACRmc,EACAd,EACA1B,KAKV,EnBzWE,coBjEF,SAAoBrQ,GAClB,MAAO,CACLE,QAAS,CAAE,SACXxJ,SAAU,CACR,CACEpF,UAAW,cACXgI,OAAQ,CAGN9C,IAAK,MACL8C,OAAQ,CACN9C,IAAK,IACL8L,YAAa,WAGjBvD,SAAU,CACR,CAAE1I,MAAO,iBACT,CAAEA,MAAO,uBAKnB,EpB4CE0iB,EqB/DF,SAAW/Y,GACT,MAAMzK,EAAQyK,EAAKzK,MAObQ,EAAW,uDACXijB,EAAkBzjB,EAAMb,OAE5B,gDAEA,0CAEA,iDAEIukB,EAAe,mEACfC,EAAiB3jB,EAAMb,OAC3B,OACA,OACA,OACA,QACA,KACA,KAGF,MAAO,CACLrF,KAAM,IAENyJ,SAAU,CACRyF,SAAUxI,EACVqE,QACE,kDACF2T,QACE,wFAEFF,SAEE,khCAuBJnX,SAAU,CAERsJ,EAAKpJ,QACH,KACA,IACA,CAAEF,SAAU,CACV,CAME9F,MAAO,SACP8E,MAAO,YACP4D,OAAQ,CACN9C,IAAKjB,EAAMlB,UAAUkB,EAAMb,OAEzB,yBAEA,cAEF+E,YAAY,IAGhB,CAGE7I,MAAO,SACPyF,MAAO,SACPG,IAAK,IACLE,SAAU,CACR,CACE9F,MAAO,WACPmO,SAAU,CACR,CAAErJ,MAAOK,GACT,CAAEL,MAAO,sBAEX+D,YAAY,KAIlB,CACE7I,MAAO,SACP8E,MAAO,cAET,CACE9E,MAAO,UACP8E,MAAO,kBAKbsK,EAAK9I,kBAEL,CACEtG,MAAO,SACP8F,SAAU,CAAEsJ,EAAK5J,kBACjB2I,SAAU,CACRiB,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEPwJ,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEPwJ,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEPwJ,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEPwJ,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEPwJ,EAAKpI,kBAAkB,CACrBvB,MAAO,cACPG,IAAK,YAEP,CACEH,MAAO,IACPG,IAAK,IACLF,UAAW,GAEb,CACED,MAAO,IACPG,IAAK,IACLF,UAAW,KAcjB,CACEA,UAAW,EACXyI,SAAU,CACR,CACEnO,MAAO,CACL,EAAG,WACH,EAAG,UAEL8E,MAAO,CACLujB,EACAD,IAGJ,CACEpoB,MAAO,CACL,EAAG,WACH,EAAG,UAEL8E,MAAO,CACL,UACAsjB,IAGJ,CACEpoB,MAAO,CACL,EAAG,cACH,EAAG,UAEL8E,MAAO,CACLwjB,EACAF,IAGJ,CACEpoB,MAAO,CAAE,EAAG,UACZ8E,MAAO,CACL,mBACAsjB,MAOR,CAEEpoB,MAAO,CAAE,EAAG,YACZ8E,MAAO,CACLK,EACA,MACA,KACA,QAIJ,CACEnF,MAAO,WACP0F,UAAW,EACXyI,SAAU,CACR,CAAErJ,MAAOujB,GACT,CAAEvjB,MAAO,aAIb,CACE9E,MAAO,cACP0F,UAAW,EACXZ,MAAOwjB,GAGT,CAEE7iB,MAAO,IACPG,IAAK,IACLE,SAAU,CAAE,CAAEL,MAAO,UAI7B,ErBpLE8iB,KsBjEF,SAAcnZ,GACZ,MAAMzK,EAAQyK,EAAKzK,MACb6jB,EAAiB,qFAEjBC,EAAgB9jB,EAAMb,OAC1B,uBAEA,8BAGI4kB,EAA+B/jB,EAAMjB,OAAO+kB,EAAe,YAa3DE,EAAgB,CACpB,oBAAqB,CACnB,WACA,WACA,gBAEF,oBAAqB,CACnB,OACA,SAEFnf,QAAS,CACP,QACA,MACA,QACA,QACA,QACA,OACA,QACA,UACA,KACA,OACA,QACA,MACA,MACA,SACA,MACA,KACA,KACA,SACA,OACA,MACA,KACA,OACA,UACA,SACA,QACA,SACA,OACA,QACA,SACA,QACA,OACA,QACA,QApDF,UACA,SACA,UACA,SACA,UACA,YACA,QACA,SAgDAyT,SAAU,CACR,OACA,SACA,gBACA,cACA,cACA,gBACA,mBACA,mBAEFE,QAAS,CACP,OACA,QACA,QAGEyL,EAAY,CAChBloB,UAAW,SACX+E,MAAO,cAEHojB,EAAa,CACjBpjB,MAAO,KACPG,IAAK,KAEDkjB,EAAgB,CACpB1Z,EAAKpJ,QACH,IACA,IACA,CAAEF,SAAU,CAAE8iB,KAEhBxZ,EAAKpJ,QACH,UACA,QACA,CACEF,SAAU,CAAE8iB,GACZljB,UAAW,KAGf0J,EAAKpJ,QAAQ,WAAYoJ,EAAKhI,mBAE1BqX,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,MACPG,IAAK,KACLsC,SAAUygB,GAENlJ,EAAS,CACb/e,UAAW,SACXoF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEFtQ,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,aACPG,IAAK,KAEP,CACEH,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,aACPG,IAAK,KAEP,CACEH,MAAO,aACPG,IAAK,KAEP,CACEH,MAAO,cACPG,IAAK,MAIP,CAAEH,MAAO,mBACT,CAAEA,MAAO,6BACT,CAAEA,MAAO,mCACT,CAAEA,MAAO,2DACT,CAAEA,MAAO,2BACT,CAAEA,MAAO,aAET,CAGEA,MAAOd,EAAMjB,OACX,YACAiB,EAAMlB,UAAU,6CAElBqC,SAAU,CACRsJ,EAAKpI,kBAAkB,CACrBvB,MAAO,QACPG,IAAK,QACLE,SAAU,CACRsJ,EAAK5J,iBACLiZ,SAYNsK,EAAS,kBACT9G,EAAS,CACbvhB,UAAW,SACXgF,UAAW,EACXyI,SAAU,CAER,CAAE1I,MAAO,8BAAuBsjB,kBAAuBA,eAIvD,CAAEtjB,MAAO,kCACT,CAAEA,MAAO,kCACT,CAAEA,MAAO,kCACT,CAAEA,MAAO,8CAGT,CAAEA,MAAO,2BAIP0b,EAAS,CACbhT,SAAU,CACR,CACErJ,MAAO,QAET,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,SACLM,cAAc,EACd2C,YAAY,EACZX,SAAUygB,KA8EVK,EAAwB,CAC5BvJ,EA/DuB,CACvBtR,SAAU,CACR,CACErJ,MAAO,CACL,WACA4jB,EACA,UACAA,IAGJ,CACE5jB,MAAO,CACL,sBACA4jB,KAIN1oB,MAAO,CACL,EAAG,cACH,EAAG,yBAELkI,SAAUygB,GAhCW,CACrB7jB,MAAO,CACL,sBACA4jB,GAEF1oB,MAAO,CACL,EAAG,eAELkI,SAAUygB,GA+CY,CACtBjjB,UAAW,EACXZ,MAAO,CACL4jB,EACA,cAEF1oB,MAAO,CACL,EAAG,gBA3BqB,CAC1B0F,UAAW,EACXZ,MAAO,sBACPpE,UAAW,qBA6BW,CACtBgF,UAAW,EACXZ,MAAO2jB,EACPzoB,MAAO,eA7BiB,CACxB8E,MAAO,CACL,MAAO,MACP0jB,GAEFxoB,MAAO,CACL,EAAG,UACH,EAAG,kBAEL8F,SAAU,CACRqb,IA8BF,CAEE1b,MAAO2J,EAAKjK,SAAW,MACzB,CACEzE,UAAW,SACX+E,MAAO2J,EAAKhK,oBAAsB,YAClCM,UAAW,GAEb,CACEhF,UAAW,SACX+E,MAAO,WACPK,SAAU,CACR2Z,EACA,CAAEha,MAAO+iB,IAEX9iB,UAAW,GAEbuc,EACA,CAGEvhB,UAAW,WACX+E,MAAO,8DAET,CACE/E,UAAW,SACX+E,MAAO,UACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZ1F,UAAW,EACXwC,SAAUygB,GAEZ,CACEljB,MAAO,IAAM2J,EAAK9H,eAAiB,eACnCY,SAAU,SACVpC,SAAU,CACR,CACEpF,UAAW,SACXoF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF5Y,QAAS,KACTsI,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,WAEP,CACEH,MAAO,OACPG,IAAK,YAEP,CACEH,MAAO,QACPG,IAAK,aAEP,CACEH,MAAO,MACPG,IAAK,WAEP,CACEH,MAAO,QACPG,IAAK,gBAIXlC,OAAOmlB,EAAYC,GACrBpjB,UAAW,IAEbhC,OAAOmlB,EAAYC,GAErBrK,EAAM3Y,SAAWkjB,EACjB7H,EAAOrb,SAAWkjB,EAIlB,MAKMC,EAAc,CAClB,CACExjB,MAAO,SACPiD,OAAQ,CACN9C,IAAK,IACLE,SAAUkjB,IAGd,CACEtoB,UAAW,cACX+E,MAAO,iGACPiD,OAAQ,CACN9C,IAAK,IACLsC,SAAUygB,EACV7iB,SAAUkjB,KAOhB,OAFAF,EAAcnV,QAAQkV,GAEf,CACLpqB,KAAM,OACN6Q,QAAS,CACP,KACA,UACA,UACA,OACA,OAEFpH,SAAUygB,EACV9iB,QAAS,OACTC,SAAU,CAAEsJ,EAAK7H,QAAQ,CAAEE,OAAQ,UAChC/D,OAAOulB,GACPvlB,OAAOolB,GACPplB,OAAOslB,GAEd,EtBlXEE,KuBjEF,SAAc9Z,GACZ,MAAMzK,EAAQyK,EAAKzK,MAGbwkB,EAAiB,QACjB/jB,EAAsBT,EAAMjB,OAAOylB,EAAgB/Z,EAAKhK,qBACxDD,EAAWR,EAAMjB,OAAOylB,EAAgB/Z,EAAKjK,UAE7CuiB,EAAkB,CACtBhnB,UAAW,wBACXgF,UAAW,EACXD,MAAOd,EAAMjB,OACX,KACA,oCACAyB,EACAR,EAAMlB,UAAU,WAEd2lB,EAAgB,wCA+DhBC,EAAW,CAEf,QAEA,OACA,OACA,QACA,OACA,OACA,KACA,QACA,SACA,UACA,QACA,QACA,YACA,aACA,KACA,MACA,QACA,QACA,OACA,OACA,UACA,WACA,SACA,eACA,sBACA,oBACA,iBACA,WAEA,UACA,aACA,YACA,SACA,OACA,OACA,UACA,iBACA,gBACA,mBACA,OACA,YACA,SACA,QACA,UACA,eACA,iBACA,eACA,QACA,kBACA,eACA,cACA,SACA,WACA,UACA,aACA,OACA,iBACA,eACA,OACA,SACA,WACA,eACA,aACA,oBAEI9N,EAAQ,CACZ,KACA,MACA,MACA,MACA,OACA,QACA,KACA,MACA,MACA,MACA,OACA,QACA,MACA,MACA,MACA,OACA,OACA,MACA,SACA,SACA,SACA,OAEF,MAAO,CACL9c,KAAM,OACN6Q,QAAS,CAAE,MACXpH,SAAU,CACRyF,SAAUyB,EAAKjK,SAAW,KAC1BxG,KAAM4c,EACN/R,QAhKa,CACf,WACA,KACA,QACA,QACA,SACA,MACA,QACA,QACA,WACA,QACA,KACA,MACA,OACA,OACA,SACA,QACA,QACA,KACA,MACA,KACA,OACA,KACA,MACA,OACA,QACA,QACA,MACA,OACA,MACA,WACA,OACA,MACA,MACA,SACA,OACA,OACA,SACA,SACA,QACA,QACA,OACA,MACA,OACA,SACA,QACA,SACA,UACA,MACA,UACA,QACA,QACA,SA6GE2T,QA3Ga,CACf,OACA,QACA,OACA,OACA,KACA,OAsGEF,SAAUoM,GAEZxjB,QAAS,KACTC,SAAU,CACRsJ,EAAKhJ,oBACLgJ,EAAKpJ,QAAQ,OAAQ,OAAQ,CAAEF,SAAU,CAAE,UAC3CsJ,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACnCN,MAAO,MACPI,QAAS,OAEX,CACEnF,UAAW,SAEX+E,MAAO,gCAET,CACEzF,MAAO,SACPmO,SAAU,CACR,CAAE1I,MAAO,4BACT,CACEA,MAAO,MACPG,IAAK,IACLE,S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,qCACPiD,OAAQ,CACN9C,IAAK,gBACL8L,YAAa,UAKvB,ExBgDEgY,IyBxDF,SAAata,GACX,MAAMzK,EAAQyK,EAAKzK,MACbglB,EAAeva,EAAKpJ,QAAQ,KAAM,KA8blC4jB,EAAqB,CACzB,MACA,OACA,YACA,OACA,OACA,MACA,OACA,OACA,UACA,WACA,OACA,MACA,OACA,QACA,YACA,aACA,YACA,aACA,QACA,UACA,MACA,UACA,cACA,QACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,aACA,OACA,UACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,YACA,QACA,SACA,eACA,kBACA,kBACA,WACA,iBACA,QACA,OACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,aACA,MACA,OACA,OACA,aACA,cACA,YACA,kBACA,MACA,MACA,OACA,YACA,kBACA,QACA,OACA,aACA,SACA,QACA,WACA,UACA,WACA,gBA2CIC,EAAYD,EAEZvO,EAAW,CArff,MACA,OACA,MACA,WACA,QACA,MACA,MACA,MACA,QACA,YACA,wBACA,KACA,aACA,OACA,aACA,KACA,OACA,SACA,gBACA,MACA,QACA,cACA,kBACA,UACA,SACA,SACA,OACA,UACA,OACA,KACA,OACA,SACA,cACA,WACA,OACA,OACA,OACA,UACA,OACA,cACA,YACA,mBACA,QACA,aACA,OACA,QACA,WACA,UACA,UACA,SACA,SACA,YACA,UACA,aACA,WACA,UACA,OACA,OACA,gBACA,MACA,OACA,QACA,YACA,aACA,SACA,QACA,OACA,YACA,UACA,kBACA,eACA,kCACA,eACA,eACA,cACA,iBACA,eACA,oBACA,eACA,eACA,mCACA,eACA,SACA,QACA,OACA,MACA,aACA,MACA,UACA,WACA,UACA,UACA,SACA,SACA,aACA,QACA,WACA,gBACA,aACA,WACA,SACA,OACA,UACA,OACA,UACA,OACA,QACA,MACA,YACA,gBACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,SACA,MACA,WACA,UACA,QACA,QACA,SACA,cACA,QACA,QACA,MACA,UACA,YACA,OACA,OACA,OACA,WACA,SACA,MACA,SACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,UACA,QACA,QACA,cACA,SACA,MACA,UACA,YACA,eACA,WACA,OACA,KACA,OACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,WACA,QACA,aACA,UACA,OACA,UACA,OACA,OACA,aACA,UACA,KACA,QACA,YACA,iBACA,MACA,QACA,QACA,QACA,eACA,kBACA,UACA,MACA,SACA,QACA,SACA,MACA,SACA,MACA,WACA,SACA,QACA,WACA,WACA,UACA,QACA,QACA,MACA,KACA,OACA,YACA,MACA,YACA,QACA,OACA,SACA,UACA,eACA,oBACA,KACA,SACA,MACA,OACA,KACA,MACA,OACA,OACA,KACA,QACA,MACA,QACA,OACA,WACA,UACA,YACA,YACA,UACA,MACA,UACA,eACA,kBACA,kBACA,SACA,UACA,WACA,iBACA,QACA,WACA,YACA,UACA,UACA,YACA,MACA,QACA,OACA,QACA,OACA,YACA,MACA,aACA,cACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,SACA,MACA,aACA,OACA,UACA,YACA,QACA,SACA,SACA,SACA,OACA,SACA,YACA,eACA,MACA,OACA,UACA,MACA,OACA,OACA,WACA,OACA,WACA,eACA,MACA,eACA,WACA,aACA,OACA,QACA,SACA,aACA,cACA,cACA,SACA,YACA,kBACA,WACA,MACA,YACA,SACA,cACA,cACA,QACA,cACA,MACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,WACA,YACA,kBACA,cACA,QACA,UACA,OACA,aACA,OACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YACA,UACA,UACA,aACA,OACA,WACA,QACA,eACA,SACA,OACA,SACA,UACA,OAzXA,MACA,MACA,YACA,OACA,QACA,QACA,OACA,QA6fA7G,QAAQhL,IACAogB,EAAmB/oB,SAAS2I,KAchCqZ,EAAgB,CACpB/d,MAAOH,EAAMjB,OAAO,KAAMiB,EAAMb,UAAU+lB,GAAY,SACtDnkB,UAAW,EACXwC,SAAU,CAAE+U,SAAU4M,IAOxB,SAASC,EAAarW,GACpB,OAAO9O,EAAMjB,OACX,KACAiB,EAAMb,UAAU2P,EAAKxS,KAAK8oB,GACjBA,EAAGxqB,QAAQ,MAAO,WAE3B,KAEJ,CAEA,MAAMyqB,EAAsB,CAC1BhqB,MAAO,UACP8E,MAAOglB,EA7DM,CACb,eACA,cACA,cACA,cACA,WACA,cACA,iBACA,gBACA,cACA,gBACA,gBACA,eACA,cACA,aACA,cACA,kBA8CApkB,UAAW,GAoBb,MAAO,CACLjH,KAAM,MACNkN,kBAAkB,EAElB9F,QAAS,WACTqC,SAAU,CACRyF,SAAU,YACVnE,QAvBJ,SAAyBiK,GAAM,WAC7BwW,EAAU,KAAEC,GACV,CAAC,GACH,MAAMC,EAAYD,EAElB,OADAD,EAAaA,GAAc,GACpBxW,EAAKxS,KAAK2S,GACXA,EAAK9O,MAAM,WAAamlB,EAAWppB,SAAS+S,GACvCA,EACEuW,EAAUvW,GACZ,GAAGA,MAEHA,GAGb,CAUMwW,CAAgB/O,EAAU,CAAE6O,KAAOhpB,GAAMA,EAAEe,OAAS,IACtDkb,QArnBa,CACf,OACA,QAGA,WAinBExe,KAvmBU,CACZ,SACA,SACA,OACA,UACA,OACA,YACA,OACA,OACA,MACA,WACA,UACA,QACA,MACA,UACA,WACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,OACA,YACA,UACA,UACA,aA6kBEse,SAjH4B,CAC9B,kBACA,eACA,kCACA,eACA,eACA,iBACA,mCACA,eACA,eACA,cACA,cACA,eACA,YACA,oBACA,mBAoGAnX,SAAU,CACR,CACE9F,MAAO,OACP8E,MAAOglB,EApnBY,CACvB,mBACA,eACA,gBACA,sBAkn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","sources":["webpack:///recommendations/node_modules/highlight.js/lib/core.js","webpack:///recommendations/node_modules/unist-util-find-after/lib/index.js","webpack:///recommendations/node_modules/hast-util-to-text/lib/index.js","webpack:///recommendations/node_modules/highlight.js/es/languages/css.js","webpack:///recommendations/node_modules/highlight.js/es/languages/java.js","webpack:///recommendations/node_modules/highlight.js/es/languages/javascript.js","webpack:///recommendations/node_modules/highlight.js/es/languages/kotlin.js","webpack:///recommendations/node_modules/highlight.js/es/languages/less.js","webpack:///recommendations/node_modules/highlight.js/es/languages/scss.js","webpack:///recommendations/node_modules/highlight.js/es/languages/swift.js","webpack:///recommendations/node_modules/highlight.js/es/languages/typescript.js","webpack:///recommendations/node_modules/lowlight/lib/common.js","webpack:///recommendations/node_modules/highlight.js/es/languages/arduino.js","webpack:///recommendations/node_modules/highlight.js/es/languages/bash.js","webpack:///recommendations/node_modules/highlight.js/es/languages/c.js","webpack:///recommendations/node_modules/highlight.js/es/languages/cpp.js","webpack:///recommendations/node_modules/highlight.js/es/languages/csharp.js","webpack:///recommendations/node_modules/highlight.js/es/languages/diff.js","webpack:///recommendations/node_modules/highlight.js/es/languages/go.js","webpack:///recommendations/node_modules/highlight.js/es/languages/graphql.js","webpack:///recommendations/node_modules/highlight.js/es/languages/ini.js","webpack:///recommendations/node_modules/highlight.js/es/languages/json.js","webpack:///recommendations/node_modules/highlight.js/es/languages/lua.js","webpack:///recommendations/node_modules/highlight.js/es/languages/makefile.js","webpack:///recommendations/node_modules/highlight.js/es/languages/markdown.js","webpack:///recommendations/node_modules/highlight.js/es/languages/objectivec.js","webpack:///recommendations/node_modules/highlight.js/es/languages/perl.js","webpack:///recommendations/node_modules/highlight.js/es/languages/php.js","webpack:///recommendations/node_modules/highlight.js/es/languages/php-template.js","webpack:///recommendations/node_modules/highlight.js/es/languages/plaintext.js","webpack:///recommendations/node_modules/highlight.js/es/languages/python.js","webpack:///recommendations/node_modules/highlight.js/es/languages/python-repl.js","webpack:///recommendations/node_modules/highlight.js/es/languages/r.js","webpack:///recommendations/node_modules/highlight.js/es/languages/ruby.js","webpack:///recommendations/node_modules/highlight.js/es/languages/rust.js","webpack:///recommendations/node_modules/highlight.js/es/languages/shell.js","webpack:///recommendations/node_modules/highlight.js/es/languages/sql.js","webpack:///recommendations/node_modules/highlight.js/es/languages/vbnet.js","webpack:///recommendations/node_modules/highlight.js/es/languages/wasm.js","webpack:///recommendations/node_modules/highlight.js/es/languages/xml.js","webpack:///recommendations/node_modules/highlight.js/es/languages/yaml.js","webpack:///recommendations/node_modules/highlight.js/es/core.js","webpack:///recommendations/node_modules/lowlight/lib/index.js","webpack:///recommendations/node_modules/rehype-highlight/lib/index.js"],"sourcesContent":["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n 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/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */\n const emit = {};\n /** @type Record<number,string> */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array<any>\n * ? MatchesOne<Value, Check[keyof Check]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {(\n * Kind extends {children: Array<infer Child>}\n * ? Child\n * : never\n * )} Child\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Kind\n * All node types.\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Find the first node in `parent` after another `node` or after an index,\n * that passes `test`.\n *\n * @param parent\n * Parent node.\n * @param index\n * Child node or index.\n * @param [test=undefined]\n * Test for child to look for (optional).\n * @returns\n * A child (matching `test`, if given) or `undefined`.\n */\nexport const findAfter =\n // Note: overloads like this are needed to support optional generics.\n /**\n * @type {(\n * (<Kind extends UnistParent, Check extends Test>(parent: Kind, index: Child<Kind> | number, test: Check) => Matches<Child<Kind>, Check> | undefined) &\n * (<Kind extends UnistParent>(parent: Kind, index: Child<Kind> | number, test?: null | undefined) => Child<Kind> | undefined)\n * )}\n */\n (\n /**\n * @param {UnistParent} parent\n * @param {UnistNode | number} index\n * @param {Test} [test]\n * @returns {UnistNode | undefined}\n */\n function (parent, index, test) {\n const is = convert(test)\n\n if (!parent || !parent.type || !parent.children) {\n throw new Error('Expected parent node')\n }\n\n if (typeof index === 'number') {\n if (index < 0 || index === Number.POSITIVE_INFINITY) {\n throw new Error('Expected positive finite number as index')\n }\n } else {\n index = parent.children.indexOf(index)\n\n if (index < 0) {\n throw new Error('Expected child node or index')\n }\n }\n\n while (++index < parent.children.length) {\n if (is(parent.children[index], index, parent)) {\n return parent.children[index]\n }\n }\n\n return undefined\n }\n )\n","/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast-util-is-element').TestFunction} TestFunction\n */\n\n/**\n * @typedef {'normal' | 'nowrap' | 'pre' | 'pre-wrap'} Whitespace\n * Valid and useful whitespace values (from CSS).\n *\n * @typedef {0 | 1 | 2} BreakNumber\n * Specific break:\n *\n * * `0` — space\n * * `1` — line ending\n * * `2` — blank line\n *\n * @typedef {'\\n'} BreakForce\n * Forced break.\n *\n * @typedef {boolean} BreakValue\n * Whether there was a break.\n *\n * @typedef {BreakNumber | BreakValue | undefined} BreakBefore\n * Any value for a break before.\n *\n * @typedef {BreakForce | BreakNumber | BreakValue | undefined} BreakAfter\n * Any value for a break after.\n *\n * @typedef CollectionInfo\n * Info on current collection.\n * @property {BreakAfter} breakAfter\n * Whether there was a break after.\n * @property {BreakBefore} breakBefore\n * Whether there was a break before.\n * @property {Whitespace} whitespace\n * Current whitespace setting.\n *\n * @typedef Options\n * Configuration.\n * @property {Whitespace | null | undefined} [whitespace='normal']\n * Initial CSS whitespace setting to use (default: `'normal'`).\n */\n\nimport {findAfter} from 'unist-util-find-after'\nimport {convertElement} from 'hast-util-is-element'\n\nconst searchLineFeeds = /\\n/g\nconst searchTabOrSpaces = /[\\t ]+/g\n\nconst br = convertElement('br')\nconst cell = convertElement(isCell)\nconst p = convertElement('p')\nconst row = convertElement('tr')\n\n// Note that we don’t need to include void elements here as they don’t have text.\n// See: <https://github.com/wooorm/html-void-elements>\nconst notRendered = convertElement([\n // List from: <https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements>\n 'datalist',\n 'head',\n 'noembed',\n 'noframes',\n 'noscript', // Act as if we support scripting.\n 'rp',\n 'script',\n 'style',\n 'template',\n 'title',\n // Hidden attribute.\n hidden,\n // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>\n closedDialog\n])\n\n// See: <https://html.spec.whatwg.org/multipage/rendering.html#the-css-user-agent-style-sheet-and-presentational-hints>\nconst blockOrCaption = convertElement([\n 'address', // Flow content\n 'article', // Sections and headings\n 'aside', // Sections and headings\n 'blockquote', // Flow content\n 'body', // Page\n 'caption', // `table-caption`\n 'center', // Flow content (legacy)\n 'dd', // Lists\n 'dialog', // Flow content\n 'dir', // Lists (legacy)\n 'dl', // Lists\n 'dt', // Lists\n 'div', // Flow content\n 'figure', // Flow content\n 'figcaption', // Flow content\n 'footer', // Flow content\n 'form,', // Flow content\n 'h1', // Sections and headings\n 'h2', // Sections and headings\n 'h3', // Sections and headings\n 'h4', // Sections and headings\n 'h5', // Sections and headings\n 'h6', // Sections and headings\n 'header', // Flow content\n 'hgroup', // Sections and headings\n 'hr', // Flow content\n 'html', // Page\n 'legend', // Flow content\n 'li', // Lists (as `display: list-item`)\n 'listing', // Flow content (legacy)\n 'main', // Flow content\n 'menu', // Lists\n 'nav', // Sections and headings\n 'ol', // Lists\n 'p', // Flow content\n 'plaintext', // Flow content (legacy)\n 'pre', // Flow content\n 'section', // Sections and headings\n 'ul', // Lists\n 'xmp' // Flow content (legacy)\n])\n\n/**\n * Get the plain-text value of a node.\n *\n * ###### Algorithm\n *\n * * if `tree` is a comment, returns its `value`\n * * if `tree` is a text, applies normal whitespace collapsing to its\n * `value`, as defined by the CSS Text spec\n * * if `tree` is a root or element, applies an algorithm similar to the\n * `innerText` getter as defined by HTML\n *\n * ###### Notes\n *\n * > 👉 **Note**: the algorithm acts as if `tree` is being rendered, and as if\n * > we’re a CSS-supporting user agent, with scripting enabled.\n *\n * * if `tree` is an element that is not displayed (such as a `head`), we’ll\n * still use the `innerText` algorithm instead of switching to `textContent`\n * * if descendants of `tree` are elements that are not displayed, they are\n * ignored\n * * CSS is not considered, except for the default user agent style sheet\n * * a line feed is collapsed instead of ignored in cases where Fullwidth, Wide,\n * or Halfwidth East Asian Width characters are used, the same goes for a case\n * with Chinese, Japanese, or Yi writing systems\n * * replaced elements (such as `audio`) are treated like non-replaced elements\n *\n * @param {Nodes} tree\n * Tree to turn into text.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `tree`.\n */\nexport function toText(tree, options) {\n const options_ = options || {}\n const children = 'children' in tree ? tree.children : []\n const block = blockOrCaption(tree)\n const whitespace = inferWhitespace(tree, {\n whitespace: options_.whitespace || 'normal',\n breakBefore: false,\n breakAfter: false\n })\n\n /** @type {Array<BreakNumber | string>} */\n const results = []\n\n // Treat `text` and `comment` as having normal white-space.\n // This deviates from the spec as in the DOM the node’s `.data` has to be\n // returned.\n // If you want that behavior use `hast-util-to-string`.\n // All other nodes are later handled as if they are `element`s (so the\n // algorithm also works on a `root`).\n // Nodes without children are treated as a void element, so `doctype` is thus\n // ignored.\n if (tree.type === 'text' || tree.type === 'comment') {\n results.push(\n ...collectText(tree, {\n whitespace,\n breakBefore: true,\n breakAfter: true\n })\n )\n }\n\n // 1. If this element is not being rendered, or if the user agent is a\n // non-CSS user agent, then return the same value as the textContent IDL\n // attribute on this element.\n //\n // Note: we’re not supporting stylesheets so we’re acting as if the node\n // is rendered.\n //\n // If you want that behavior use `hast-util-to-string`.\n // Important: we’ll have to account for this later though.\n\n // 2. Let results be a new empty list.\n let index = -1\n\n // 3. For each child node node of this element:\n while (++index < children.length) {\n // 3.1. Let current be the list resulting in running the inner text\n // collection steps with node.\n // Each item in results will either be a JavaScript string or a\n // positive integer (a required line break count).\n // 3.2. For each item item in current, append item to results.\n results.push(\n ...renderedTextCollection(\n children[index],\n // @ts-expect-error: `tree` is a parent if we’re here.\n tree,\n {\n whitespace,\n breakBefore: index ? undefined : block,\n breakAfter:\n index < children.length - 1 ? br(children[index + 1]) : block\n }\n )\n )\n }\n\n // 4. Remove any items from results that are the empty string.\n // 5. Remove any runs of consecutive required line break count items at the\n // start or end of results.\n // 6. Replace each remaining run of consecutive required line break count\n // items with a string consisting of as many U+000A LINE FEED (LF)\n // characters as the maximum of the values in the required line break\n // count items.\n /** @type {Array<string>} */\n const result = []\n /** @type {number | undefined} */\n let count\n\n index = -1\n\n while (++index < results.length) {\n const value = results[index]\n\n if (typeof value === 'number') {\n if (count !== undefined && value > count) count = value\n } else if (value) {\n if (count !== undefined && count > -1) {\n result.push('\\n'.repeat(count) || ' ')\n }\n\n count = -1\n result.push(value)\n }\n }\n\n // 7. Return the concatenation of the string items in results.\n return result.join('')\n}\n\n/**\n * <https://html.spec.whatwg.org/multipage/dom.html#rendered-text-collection-steps>\n *\n * @param {Nodes} node\n * @param {Parents} parent\n * @param {CollectionInfo} info\n * @returns {Array<BreakNumber | string>}\n */\nfunction renderedTextCollection(node, parent, info) {\n if (node.type === 'element') {\n return collectElement(node, parent, info)\n }\n\n if (node.type === 'text') {\n return info.whitespace === 'normal'\n ? collectText(node, info)\n : collectPreText(node)\n }\n\n return []\n}\n\n/**\n * Collect an element.\n *\n * @param {Element} node\n * Element node.\n * @param {Parents} parent\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Array<BreakNumber | string>}\n */\nfunction collectElement(node, parent, info) {\n // First we infer the `white-space` property.\n const whitespace = inferWhitespace(node, info)\n const children = node.children || []\n let index = -1\n /** @type {Array<BreakNumber | string>} */\n let items = []\n\n // We’re ignoring point 3, and exiting without any content here, because we\n // deviated from the spec in `toText` at step 3.\n if (notRendered(node)) {\n return items\n }\n\n /** @type {BreakNumber | undefined} */\n let prefix\n /** @type {BreakForce | BreakNumber | undefined} */\n let suffix\n // Note: we first detect if there is going to be a break before or after the\n // contents, as that changes the white-space handling.\n\n // 2. If node’s computed value of `visibility` is not `visible`, then return\n // items.\n //\n // Note: Ignored, as everything is visible by default user agent styles.\n\n // 3. If node is not being rendered, then return items. [...]\n //\n // Note: We already did this above.\n\n // See `collectText` for step 4.\n\n // 5. If node is a `<br>` element, then append a string containing a single\n // U+000A LINE FEED (LF) character to items.\n if (br(node)) {\n suffix = '\\n'\n }\n\n // 7. If node’s computed value of `display` is `table-row`, and node’s CSS\n // box is not the last `table-row` box of the nearest ancestor `table`\n // box, then append a string containing a single U+000A LINE FEED (LF)\n // character to items.\n //\n // See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n // Note: needs further investigation as this does not account for implicit\n // rows.\n else if (\n row(node) &&\n // @ts-expect-error: something up with types of parents.\n findAfter(parent, node, row)\n ) {\n suffix = '\\n'\n }\n\n // 8. If node is a `<p>` element, then append 2 (a required line break count)\n // at the beginning and end of items.\n else if (p(node)) {\n prefix = 2\n suffix = 2\n }\n\n // 9. If node’s used value of `display` is block-level or `table-caption`,\n // then append 1 (a required line break count) at the beginning and end of\n // items.\n else if (blockOrCaption(node)) {\n prefix = 1\n suffix = 1\n }\n\n // 1. Let items be the result of running the inner text collection steps with\n // each child node of node in tree order, and then concatenating the\n // results to a single list.\n while (++index < children.length) {\n items = items.concat(\n renderedTextCollection(children[index], node, {\n whitespace,\n breakBefore: index ? undefined : prefix,\n breakAfter:\n index < children.length - 1 ? br(children[index + 1]) : suffix\n })\n )\n }\n\n // 6. If node’s computed value of `display` is `table-cell`, and node’s CSS\n // box is not the last `table-cell` box of its enclosing `table-row` box,\n // then append a string containing a single U+0009 CHARACTER TABULATION\n // (tab) character to items.\n //\n // See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n if (\n cell(node) &&\n // @ts-expect-error: something up with types of parents.\n findAfter(parent, node, cell)\n ) {\n items.push('\\t')\n }\n\n // Add the pre- and suffix.\n if (prefix) items.unshift(prefix)\n if (suffix) items.push(suffix)\n\n return items\n}\n\n/**\n * 4. If node is a Text node, then for each CSS text box produced by node,\n * in content order, compute the text of the box after application of the\n * CSS `white-space` processing rules and `text-transform` rules, set\n * items to the list of the resulting strings, and return items.\n * The CSS `white-space` processing rules are slightly modified:\n * collapsible spaces at the end of lines are always collapsed, but they\n * are only removed if the line is the last line of the block, or it ends\n * with a br element.\n * Soft hyphens should be preserved.\n *\n * Note: See `collectText` and `collectPreText`.\n * Note: we don’t deal with `text-transform`, no element has that by\n * default.\n *\n * See: <https://drafts.csswg.org/css-text/#white-space-phase-1>\n *\n * @param {Comment | Text} node\n * Text node.\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Array<BreakNumber | string>}\n * Result.\n */\nfunction collectText(node, info) {\n const value = String(node.value)\n /** @type {Array<string>} */\n const lines = []\n /** @type {Array<BreakNumber | string>} */\n const result = []\n let start = 0\n\n while (start <= value.length) {\n searchLineFeeds.lastIndex = start\n\n const match = searchLineFeeds.exec(value)\n const end = match && 'index' in match ? match.index : value.length\n\n lines.push(\n // Any sequence of collapsible spaces and tabs immediately preceding or\n // following a segment break is removed.\n trimAndCollapseSpacesAndTabs(\n // […] ignoring bidi formatting characters (characters with the\n // Bidi_Control property [UAX9]: ALM, LTR, RTL, LRE-RLO, LRI-PDI) as if\n // they were not there.\n value\n .slice(start, end)\n .replace(/[\\u061C\\u200E\\u200F\\u202A-\\u202E\\u2066-\\u2069]/g, ''),\n start === 0 ? info.breakBefore : true,\n end === value.length ? info.breakAfter : true\n )\n )\n\n start = end + 1\n }\n\n // Collapsible segment breaks are transformed for rendering according to the\n // segment break transformation rules.\n // So here we jump to 4.1.2 of [CSSTEXT]:\n // Any collapsible segment break immediately following another collapsible\n // segment break is removed\n let index = -1\n /** @type {BreakNumber | undefined} */\n let join\n\n while (++index < lines.length) {\n // * If the character immediately before or immediately after the segment\n // break is the zero-width space character (U+200B), then the break is\n // removed, leaving behind the zero-width space.\n if (\n lines[index].charCodeAt(lines[index].length - 1) === 0x20_0b /* ZWSP */ ||\n (index < lines.length - 1 &&\n lines[index + 1].charCodeAt(0) === 0x20_0b) /* ZWSP */\n ) {\n result.push(lines[index])\n join = undefined\n }\n\n // * Otherwise, if the East Asian Width property [UAX11] of both the\n // character before and after the segment break is Fullwidth, Wide, or\n // Halfwidth (not Ambiguous), and neither side is Hangul, then the\n // segment break is removed.\n //\n // Note: ignored.\n // * Otherwise, if the writing system of the segment break is Chinese,\n // Japanese, or Yi, and the character before or after the segment break\n // is punctuation or a symbol (Unicode general category P* or S*) and\n // has an East Asian Width property of Ambiguous, and the character on\n // the other side of the segment break is Fullwidth, Wide, or Halfwidth,\n // and not Hangul, then the segment break is removed.\n //\n // Note: ignored.\n\n // * Otherwise, the segment break is converted to a space (U+0020).\n else if (lines[index]) {\n if (typeof join === 'number') result.push(join)\n result.push(lines[index])\n join = 0\n } else if (index === 0 || index === lines.length - 1) {\n // If this line is empty, and it’s the first or last, add a space.\n // Note that this function is only called in normal whitespace, so we\n // don’t worry about `pre`.\n result.push(0)\n }\n }\n\n return result\n}\n\n/**\n * Collect a text node as “pre” whitespace.\n *\n * @param {Text} node\n * Text node.\n * @returns {Array<BreakNumber | string>}\n * Result.\n */\nfunction collectPreText(node) {\n return [String(node.value)]\n}\n\n/**\n * 3. Every collapsible tab is converted to a collapsible space (U+0020).\n * 4. Any collapsible space immediately following another collapsible\n * space—even one outside the boundary of the inline containing that\n * space, provided both spaces are within the same inline formatting\n * context—is collapsed to have zero advance width. (It is invisible,\n * but retains its soft wrap opportunity, if any.)\n *\n * @param {string} value\n * Value to collapse.\n * @param {BreakBefore} breakBefore\n * Whether there was a break before.\n * @param {BreakAfter} breakAfter\n * Whether there was a break after.\n * @returns {string}\n * Result.\n */\nfunction trimAndCollapseSpacesAndTabs(value, breakBefore, breakAfter) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n /** @type {number | undefined} */\n let end\n\n while (start < value.length) {\n searchTabOrSpaces.lastIndex = start\n const match = searchTabOrSpaces.exec(value)\n end = match ? match.index : value.length\n\n // If we’re not directly after a segment break, but there was white space,\n // add an empty value that will be turned into a space.\n if (!start && !end && match && !breakBefore) {\n result.push('')\n }\n\n if (start !== end) {\n result.push(value.slice(start, end))\n }\n\n start = match ? end + match[0].length : end\n }\n\n // If we reached the end, there was trailing white space, and there’s no\n // segment break after this node, add an empty value that will be turned\n // into a space.\n if (start !== end && !breakAfter) {\n result.push('')\n }\n\n return result.join(' ')\n}\n\n/**\n * Figure out the whitespace of a node.\n *\n * We don’t support void elements here (so `nobr wbr` -> `normal` is ignored).\n *\n * @param {Nodes} node\n * Node (typically `Element`).\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Whitespace}\n * Applied whitespace.\n */\nfunction inferWhitespace(node, info) {\n if (node.type === 'element') {\n const properties = node.properties || {}\n switch (node.tagName) {\n case 'listing':\n case 'plaintext':\n case 'xmp': {\n return 'pre'\n }\n\n case 'nobr': {\n return 'nowrap'\n }\n\n case 'pre': {\n return properties.wrap ? 'pre-wrap' : 'pre'\n }\n\n case 'td':\n case 'th': {\n return properties.noWrap ? 'nowrap' : info.whitespace\n }\n\n case 'textarea': {\n return 'pre-wrap'\n }\n\n default:\n }\n }\n\n return info.whitespace\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {properties: {hidden: true}}}\n */\nfunction hidden(node) {\n return Boolean((node.properties || {}).hidden)\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {tagName: 'td' | 'th'}}\n */\nfunction isCell(node) {\n return node.tagName === 'td' || node.tagName === 'th'\n}\n\n/**\n * @type {TestFunction}\n */\nfunction closedDialog(node) {\n return node.tagName === 'dialog' && !(node.properties || {}).open\n}\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: { keyframePosition: \"from to\" },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\" },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' },\n { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: { built_in: \"url data-uri\" },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nexport { css as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/\n\n\n/**\n * Allows recursive regex expressions to a given depth\n *\n * ie: recurRegex(\"(abc~~~)\", /~~~/g, 2) becomes:\n * (abc(abc(abc)))\n *\n * @param {string} re\n * @param {RegExp} substitution (should be a g mode regex)\n * @param {number} depth\n * @returns {string}``\n */\nfunction recurRegex(re, substitution, depth) {\n if (depth === -1) return \"\";\n\n return re.replace(substitution, _ => {\n return recurRegex(re, substitution, depth - 1);\n });\n}\n\n/** @type LanguageFn */\nfunction java(hljs) {\n const regex = hljs.regex;\n const JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n const GENERIC_IDENT_RE = JAVA_IDENT_RE\n + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\\\s*,\\\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);\n const MAIN_KEYWORDS = [\n 'synchronized',\n 'abstract',\n 'private',\n 'var',\n 'static',\n 'if',\n 'const ',\n 'for',\n 'while',\n 'strictfp',\n 'finally',\n 'protected',\n 'import',\n 'native',\n 'final',\n 'void',\n 'enum',\n 'else',\n 'break',\n 'transient',\n 'catch',\n 'instanceof',\n 'volatile',\n 'case',\n 'assert',\n 'package',\n 'default',\n 'public',\n 'try',\n 'switch',\n 'continue',\n 'throws',\n 'protected',\n 'public',\n 'private',\n 'module',\n 'requires',\n 'exports',\n 'do',\n 'sealed',\n 'yield',\n 'permits',\n 'goto',\n 'when'\n ];\n\n const BUILT_INS = [\n 'super',\n 'this'\n ];\n\n const LITERALS = [\n 'false',\n 'true',\n 'null'\n ];\n\n const TYPES = [\n 'char',\n 'boolean',\n 'long',\n 'float',\n 'int',\n 'byte',\n 'short',\n 'double'\n ];\n\n const KEYWORDS = {\n keyword: MAIN_KEYWORDS,\n literal: LITERALS,\n type: TYPES,\n built_in: BUILT_INS\n };\n\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [ \"self\" ] // allow nested () inside our annotation\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [ hljs.C_BLOCK_COMMENT_MODE ],\n endsParent: true\n };\n\n return {\n name: 'Java',\n aliases: [ 'jsp' ],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n match: [\n /\\b(?:class|interface|enum|extends|implements|new)/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n // Exceptions for hyphenated keywords\n match: /non-sealed/,\n scope: \"keyword\"\n },\n {\n begin: [\n regex.concat(/(?!else)/, JAVA_IDENT_RE),\n /\\s+/,\n JAVA_IDENT_RE,\n /\\s+/,\n /=(?!=)/\n ],\n className: {\n 1: \"type\",\n 3: \"variable\",\n 5: \"operator\"\n }\n },\n {\n begin: [\n /record/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n contains: [\n PARAMS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n begin: [\n '(?:' + GENERIC_IDENT_RE + '\\\\s+)',\n hljs.UNDERSCORE_IDENT_RE,\n /\\s*(?=\\()/\n ],\n className: { 2: \"title.function\" },\n keywords: KEYWORDS,\n contains: [\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMERIC,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMERIC,\n ANNOTATION\n ]\n };\n}\n\nexport { java as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n Website: https://kotlinlang.org\n Category: common\n */\n\n\nfunction kotlin(hljs) {\n const KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline '\n + 'crossinline dynamic final enum if else do while for when throw try catch finally '\n + 'import package is in fun override companion reified inline lateinit init '\n + 'interface annotation data sealed internal infix operator out by constructor super '\n + 'tailrec where const inner suspend typealias external expect actual',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n const KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: { contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ] }\n };\n const LABEL = {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n const SUBST = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [ hljs.C_NUMBER_MODE ]\n };\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'',\n end: '\\'',\n illegal: /\\n/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n\n const ANNOTATION_USE_SITE = {\n className: 'meta',\n begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, { className: 'string' }),\n \"self\"\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\n '/\\\\*', '\\\\*/',\n { contains: [ hljs.C_BLOCK_COMMENT_MODE ] }\n );\n const KOTLIN_PAREN_TYPE = { variants: [\n {\n className: 'type',\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ] };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\n\n return {\n name: 'Kotlin',\n aliases: [\n 'kt',\n 'kts'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun',\n end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'type',\n begin: /</,\n end: />/,\n keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n begin: [\n /class|interface|trait/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n beginScope: {\n 3: \"title.class\"\n },\n keywords: 'class interface trait',\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n { beginKeywords: 'public protected internal private constructor' },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/,\n end: /[<\\(,){\\s]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\",\n end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\nexport { kotlin as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n// some grammars use them all as a single group\nconst PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS).sort().reverse();\n\n/*\nLanguage: Less\nDescription: It's CSS, with just a little more.\nAuthor: Max Mikhailov <seven.phases.max@gmail.com>\nWebsite: http://lesscss.org\nCategory: common, css, web\n*/\n\n\n/** @type LanguageFn */\nfunction less(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;\n\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\\\{' + IDENT_RE + '\\\\})';\n\n /* Generic Modes */\n\n const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes\n\n const STRING_MODE = function(c) {\n return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string',\n begin: '~?' + c + '.*?' + c\n };\n };\n\n const IDENT_MODE = function(name, begin, relevance) {\n return {\n className: name,\n begin: begin,\n relevance: relevance\n };\n };\n\n const AT_KEYWORDS = {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n };\n\n const PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(',\n end: '\\\\)',\n contains: VALUE_MODES,\n keywords: AT_KEYWORDS,\n relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE_MODES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n modes.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {\n className: 'string',\n end: '[\\\\)\\\\n]',\n excludeEnd: true\n }\n },\n modes.HEXCOLOR,\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute',\n begin: IDENT_RE + '\\\\s*:',\n end: ':',\n returnBegin: true,\n excludeEnd: true\n },\n modes.IMPORTANT,\n { beginKeywords: 'and not' },\n modes.FUNCTION_DISPATCH\n );\n\n const VALUE_WITH_RULESETS = VALUE_MODES.concat({\n begin: /\\{/,\n end: /\\}/,\n contains: RULES\n });\n\n const MIXIN_GUARD_MODE = {\n beginKeywords: 'when',\n endsWithParent: true,\n contains: [ { beginKeywords: 'and not' } ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n const RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n end: /[;}]/,\n relevance: 0,\n contains: [\n { begin: /-(webkit|moz|ms|o)-/ },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b',\n end: /(?=:)/,\n starts: {\n endsWithParent: true,\n illegal: '[<=$]',\n relevance: 0,\n contains: VALUE_MODES\n }\n }\n ]\n };\n\n const AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {\n end: '[;{}]',\n keywords: AT_KEYWORDS,\n returnEnd: true,\n contains: VALUE_MODES,\n relevance: 0\n }\n };\n\n // variable definitions and calls\n const VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {\n begin: '@' + IDENT_RE + '\\\\s*:',\n relevance: 15\n },\n { begin: '@' + IDENT_RE }\n ],\n starts: {\n end: '[;}]',\n returnEnd: true,\n contains: VALUE_WITH_RULESETS\n }\n };\n\n const SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [\n {\n begin: '[\\\\.#:&\\\\[>]',\n end: '[;{}]' // mixin calls end with ';'\n },\n {\n begin: INTERP_IDENT_RE,\n end: /\\{/\n }\n ],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'), // otherwise it’s identified as tag\n \n {\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n className: 'selector-tag'\n },\n modes.CSS_NUMBER_MODE,\n IDENT_MODE('selector-tag', INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')'\n },\n {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n contains: VALUE_WITH_RULESETS\n }, // argument list of parametric mixins\n { begin: '!important' }, // eat !important after mixin call or it will be colored as tag\n modes.FUNCTION_DISPATCH\n ]\n };\n\n const PSEUDO_SELECTOR_MODE = {\n begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`,\n returnBegin: true,\n contains: [ SELECTOR_MODE ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n PSEUDO_SELECTOR_MODE,\n RULE_MODE,\n SELECTOR_MODE,\n MIXIN_GUARD_MODE,\n modes.FUNCTION_DISPATCH\n );\n\n return {\n name: 'Less',\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n}\n\nexport { less as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch <kurt@kurtemch.com>\nWebsite: https://sass-lang.com\nCategory: common, css, web\n*/\n\n\n/** @type LanguageFn */\nfunction scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n\n const AT_IDENTIFIER = '@[a-z-]+'; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b',\n relevance: 0\n };\n\n return {\n name: 'SCSS',\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: '#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n // was there, before, but why?\n relevance: 0\n },\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')'\n },\n VARIABLE,\n { // pseudo-selector params\n begin: /\\(/,\n end: /\\)/,\n contains: [ modes.CSS_NUMBER_MODE ]\n },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n { begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b' },\n {\n begin: /:/,\n end: /[;}{]/,\n relevance: 0,\n contains: [\n modes.BLOCK_COMMENT,\n VARIABLE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT,\n modes.FUNCTION_DISPATCH\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: '@(page|font-face)',\n keywords: {\n $pattern: AT_IDENTIFIER,\n keyword: '@page @font-face'\n }\n },\n {\n begin: '@',\n end: '[{;]',\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n}\n\nexport { scss as default };\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\nconst keywordWrapper = keyword => concat(\n /\\b/,\n keyword,\n /\\w$/.test(keyword) ? /\\b/ : /\\B/\n);\n\n// Keywords that require a leading dot.\nconst dotKeywords = [\n 'Protocol', // contextual\n 'Type' // contextual\n].map(keywordWrapper);\n\n// Keywords that may have a leading dot.\nconst optionalDotKeywords = [\n 'init',\n 'self'\n].map(keywordWrapper);\n\n// should register as keyword, not type\nconst keywordTypes = [\n 'Any',\n 'Self'\n];\n\n// Regular keywords and literals.\nconst keywords = [\n // strings below will be fed into the regular `keywords` engine while regex\n // will result in additional modes being created to scan for those keywords to\n // avoid conflicts with other rules\n 'actor',\n 'any', // contextual\n 'associatedtype',\n 'async',\n 'await',\n /as\\?/, // operator\n /as!/, // operator\n 'as', // operator\n 'borrowing', // contextual\n 'break',\n 'case',\n 'catch',\n 'class',\n 'consume', // contextual\n 'consuming', // contextual\n 'continue',\n 'convenience', // contextual\n 'copy', // contextual\n 'default',\n 'defer',\n 'deinit',\n 'didSet', // contextual\n 'distributed',\n 'do',\n 'dynamic', // contextual\n 'each',\n 'else',\n 'enum',\n 'extension',\n 'fallthrough',\n /fileprivate\\(set\\)/,\n 'fileprivate',\n 'final', // contextual\n 'for',\n 'func',\n 'get', // contextual\n 'guard',\n 'if',\n 'import',\n 'indirect', // contextual\n 'infix', // contextual\n /init\\?/,\n /init!/,\n 'inout',\n /internal\\(set\\)/,\n 'internal',\n 'in',\n 'is', // operator\n 'isolated', // contextual\n 'nonisolated', // contextual\n 'lazy', // contextual\n 'let',\n 'macro',\n 'mutating', // contextual\n 'nonmutating', // contextual\n /open\\(set\\)/, // contextual\n 'open', // contextual\n 'operator',\n 'optional', // contextual\n 'override', // contextual\n 'package',\n 'postfix', // contextual\n 'precedencegroup',\n 'prefix', // contextual\n /private\\(set\\)/,\n 'private',\n 'protocol',\n /public\\(set\\)/,\n 'public',\n 'repeat',\n 'required', // contextual\n 'rethrows',\n 'return',\n 'set', // contextual\n 'some', // contextual\n 'static',\n 'struct',\n 'subscript',\n 'super',\n 'switch',\n 'throws',\n 'throw',\n /try\\?/, // operator\n /try!/, // operator\n 'try', // operator\n 'typealias',\n /unowned\\(safe\\)/, // contextual\n /unowned\\(unsafe\\)/, // contextual\n 'unowned', // contextual\n 'var',\n 'weak', // contextual\n 'where',\n 'while',\n 'willSet' // contextual\n];\n\n// NOTE: Contextual keywords are reserved only in specific contexts.\n// Ideally, these should be matched using modes to avoid false positives.\n\n// Literals.\nconst literals = [\n 'false',\n 'nil',\n 'true'\n];\n\n// Keywords used in precedence groups.\nconst precedencegroupKeywords = [\n 'assignment',\n 'associativity',\n 'higherThan',\n 'left',\n 'lowerThan',\n 'none',\n 'right'\n];\n\n// Keywords that start with a number sign (#).\n// #(un)available is handled separately.\nconst numberSignKeywords = [\n '#colorLiteral',\n '#column',\n '#dsohandle',\n '#else',\n '#elseif',\n '#endif',\n '#error',\n '#file',\n '#fileID',\n '#fileLiteral',\n '#filePath',\n '#function',\n '#if',\n '#imageLiteral',\n '#keyPath',\n '#line',\n '#selector',\n '#sourceLocation',\n '#warning'\n];\n\n// Global functions in the Standard Library.\nconst builtIns = [\n 'abs',\n 'all',\n 'any',\n 'assert',\n 'assertionFailure',\n 'debugPrint',\n 'dump',\n 'fatalError',\n 'getVaList',\n 'isKnownUniquelyReferenced',\n 'max',\n 'min',\n 'numericCast',\n 'pointwiseMax',\n 'pointwiseMin',\n 'precondition',\n 'preconditionFailure',\n 'print',\n 'readLine',\n 'repeatElement',\n 'sequence',\n 'stride',\n 'swap',\n 'swift_unboxFromSwiftValueWithType',\n 'transcode',\n 'type',\n 'unsafeBitCast',\n 'unsafeDowncast',\n 'withExtendedLifetime',\n 'withUnsafeMutablePointer',\n 'withUnsafePointer',\n 'withVaList',\n 'withoutActuallyEscaping',\n 'zip'\n];\n\n// Valid first characters for operators.\nconst operatorHead = either(\n /[/=\\-+!*%<>&|^~?]/,\n /[\\u00A1-\\u00A7]/,\n /[\\u00A9\\u00AB]/,\n /[\\u00AC\\u00AE]/,\n /[\\u00B0\\u00B1]/,\n /[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/,\n /[\\u2016-\\u2017]/,\n /[\\u2020-\\u2027]/,\n /[\\u2030-\\u203E]/,\n /[\\u2041-\\u2053]/,\n /[\\u2055-\\u205E]/,\n /[\\u2190-\\u23FF]/,\n /[\\u2500-\\u2775]/,\n /[\\u2794-\\u2BFF]/,\n /[\\u2E00-\\u2E7F]/,\n /[\\u3001-\\u3003]/,\n /[\\u3008-\\u3020]/,\n /[\\u3030]/\n);\n\n// Valid characters for operators.\nconst operatorCharacter = either(\n operatorHead,\n /[\\u0300-\\u036F]/,\n /[\\u1DC0-\\u1DFF]/,\n /[\\u20D0-\\u20FF]/,\n /[\\uFE00-\\uFE0F]/,\n /[\\uFE20-\\uFE2F]/\n // TODO: The following characters are also allowed, but the regex isn't supported yet.\n // /[\\u{E0100}-\\u{E01EF}]/u\n);\n\n// Valid operator.\nconst operator = concat(operatorHead, operatorCharacter, '*');\n\n// Valid first characters for identifiers.\nconst identifierHead = either(\n /[a-zA-Z_]/,\n /[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/,\n /[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/,\n /[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/,\n /[\\u1E00-\\u1FFF]/,\n /[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/,\n /[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/,\n /[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/,\n /[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/,\n /[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/,\n /[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/ // Should be /[\\uFE47-\\uFFFD]/, but we have to exclude FEFF.\n // The following characters are also allowed, but the regexes aren't supported yet.\n // /[\\u{10000}-\\u{1FFFD}\\u{20000-\\u{2FFFD}\\u{30000}-\\u{3FFFD}\\u{40000}-\\u{4FFFD}]/u,\n // /[\\u{50000}-\\u{5FFFD}\\u{60000-\\u{6FFFD}\\u{70000}-\\u{7FFFD}\\u{80000}-\\u{8FFFD}]/u,\n // /[\\u{90000}-\\u{9FFFD}\\u{A0000-\\u{AFFFD}\\u{B0000}-\\u{BFFFD}\\u{C0000}-\\u{CFFFD}]/u,\n // /[\\u{D0000}-\\u{DFFFD}\\u{E0000-\\u{EFFFD}]/u\n);\n\n// Valid characters for identifiers.\nconst identifierCharacter = either(\n identifierHead,\n /\\d/,\n /[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/\n);\n\n// Valid identifier.\nconst identifier = concat(identifierHead, identifierCharacter, '*');\n\n// Valid type identifier.\nconst typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*');\n\n// Built-in attributes, which are highlighted as keywords.\n// @available is handled separately.\n// https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes\nconst keywordAttributes = [\n 'attached',\n 'autoclosure',\n concat(/convention\\(/, either('swift', 'block', 'c'), /\\)/),\n 'discardableResult',\n 'dynamicCallable',\n 'dynamicMemberLookup',\n 'escaping',\n 'freestanding',\n 'frozen',\n 'GKInspectable',\n 'IBAction',\n 'IBDesignable',\n 'IBInspectable',\n 'IBOutlet',\n 'IBSegueAction',\n 'inlinable',\n 'main',\n 'nonobjc',\n 'NSApplicationMain',\n 'NSCopying',\n 'NSManaged',\n concat(/objc\\(/, identifier, /\\)/),\n 'objc',\n 'objcMembers',\n 'propertyWrapper',\n 'requires_stored_property_inits',\n 'resultBuilder',\n 'Sendable',\n 'testable',\n 'UIApplicationMain',\n 'unchecked',\n 'unknown',\n 'usableFromInline',\n 'warn_unqualified_access'\n];\n\n// Contextual keywords used in @available and #(un)available.\nconst availabilityKeywords = [\n 'iOS',\n 'iOSApplicationExtension',\n 'macOS',\n 'macOSApplicationExtension',\n 'macCatalyst',\n 'macCatalystApplicationExtension',\n 'watchOS',\n 'watchOSApplicationExtension',\n 'tvOS',\n 'tvOSApplicationExtension',\n 'swift'\n];\n\n/*\nLanguage: Swift\nDescription: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.\nAuthor: Steven Van Impe <steven.vanimpe@icloud.com>\nContributors: Chris Eidhof <chris@eidhof.nl>, Nate Cook <natecook@gmail.com>, Alexander Lichter <manniL@gmx.net>, Richard Gibson <gibson042@github>\nWebsite: https://swift.org\nCategory: common, system\n*/\n\n\n/** @type LanguageFn */\nfunction swift(hljs) {\n const WHITESPACE = {\n match: /\\s+/,\n relevance: 0\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411\n const BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [ 'self' ] }\n );\n const COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html\n const DOT_KEYWORD = {\n match: [\n /\\./,\n either(...dotKeywords, ...optionalDotKeywords)\n ],\n className: { 2: \"keyword\" }\n };\n const KEYWORD_GUARD = {\n // Consume .keyword to prevent highlighting properties and methods as keywords.\n match: concat(/\\./, either(...keywords)),\n relevance: 0\n };\n const PLAIN_KEYWORDS = keywords\n .filter(kw => typeof kw === 'string')\n .concat([ \"_|0\" ]); // seems common, so 0 relevance\n const REGEX_KEYWORDS = keywords\n .filter(kw => typeof kw !== 'string') // find regex\n .concat(keywordTypes)\n .map(keywordWrapper);\n const KEYWORD = { variants: [\n {\n className: 'keyword',\n match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)\n }\n ] };\n // find all the regular keywords\n const KEYWORDS = {\n $pattern: either(\n /\\b\\w+/, // regular keywords\n /#\\w+/ // number keywords\n ),\n keyword: PLAIN_KEYWORDS\n .concat(numberSignKeywords),\n literal: literals\n };\n const KEYWORD_MODES = [\n DOT_KEYWORD,\n KEYWORD_GUARD,\n KEYWORD\n ];\n\n // https://github.com/apple/swift/tree/main/stdlib/public/core\n const BUILT_IN_GUARD = {\n // Consume .built_in to prevent highlighting properties and methods.\n match: concat(/\\./, either(...builtIns)),\n relevance: 0\n };\n const BUILT_IN = {\n className: 'built_in',\n match: concat(/\\b/, either(...builtIns), /(?=\\()/)\n };\n const BUILT_INS = [\n BUILT_IN_GUARD,\n BUILT_IN\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418\n const OPERATOR_GUARD = {\n // Prevent -> from being highlighting as an operator.\n match: /->/,\n relevance: 0\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n variants: [\n { match: operator },\n {\n // dot-operator: only operators that start with a dot are allowed to use dots as\n // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more\n // characters that may also include dots.\n match: `\\\\.(\\\\.|${operatorCharacter})+` }\n ]\n };\n const OPERATORS = [\n OPERATOR_GUARD,\n OPERATOR\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal\n // TODO: Update for leading `-` after lookbehind is supported everywhere\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n { match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b` },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n { match: `\\\\b0x(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b` },\n // octal-literal\n { match: /\\b0o([0-7]_*)+\\b/ },\n // binary-literal\n { match: /\\b0b([01]_*)+\\b/ }\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal\n const ESCAPED_CHARACTER = (rawDelimiter = \"\") => ({\n className: 'subst',\n variants: [\n { match: concat(/\\\\/, rawDelimiter, /[0\\\\tnr\"']/) },\n { match: concat(/\\\\/, rawDelimiter, /u\\{[0-9a-fA-F]{1,8}\\}/) }\n ]\n });\n const ESCAPED_NEWLINE = (rawDelimiter = \"\") => ({\n className: 'subst',\n match: concat(/\\\\/, rawDelimiter, /[\\t ]*(?:[\\r\\n]|\\r\\n)/)\n });\n const INTERPOLATION = (rawDelimiter = \"\") => ({\n className: 'subst',\n label: \"interpol\",\n begin: concat(/\\\\/, rawDelimiter, /\\(/),\n end: /\\)/\n });\n const MULTILINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"\"\"/),\n end: concat(/\"\"\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n ESCAPED_NEWLINE(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const SINGLE_LINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"/),\n end: concat(/\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const STRING = {\n className: 'string',\n variants: [\n MULTILINE_STRING(),\n MULTILINE_STRING(\"#\"),\n MULTILINE_STRING(\"##\"),\n MULTILINE_STRING(\"###\"),\n SINGLE_LINE_STRING(),\n SINGLE_LINE_STRING(\"#\"),\n SINGLE_LINE_STRING(\"##\"),\n SINGLE_LINE_STRING(\"###\")\n ]\n };\n\n const REGEXP_CONTENTS = [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ];\n\n const BARE_REGEXP_LITERAL = {\n begin: /\\/[^\\s](?=[^/\\n]*\\/)/,\n end: /\\//,\n contains: REGEXP_CONTENTS\n };\n\n const EXTENDED_REGEXP_LITERAL = (rawDelimiter) => {\n const begin = concat(rawDelimiter, /\\//);\n const end = concat(/\\//, rawDelimiter);\n return {\n begin,\n end,\n contains: [\n ...REGEXP_CONTENTS,\n {\n scope: \"comment\",\n begin: `#(?!.*${end})`,\n end: /$/,\n },\n ],\n };\n };\n\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Regular-Expression-Literals\n const REGEXP = {\n scope: \"regexp\",\n variants: [\n EXTENDED_REGEXP_LITERAL('###'),\n EXTENDED_REGEXP_LITERAL('##'),\n EXTENDED_REGEXP_LITERAL('#'),\n BARE_REGEXP_LITERAL\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412\n const QUOTED_IDENTIFIER = { match: concat(/`/, identifier, /`/) };\n const IMPLICIT_PARAMETER = {\n className: 'variable',\n match: /\\$\\d+/\n };\n const PROPERTY_WRAPPER_PROJECTION = {\n className: 'variable',\n match: `\\\\$${identifierCharacter}+`\n };\n const IDENTIFIERS = [\n QUOTED_IDENTIFIER,\n IMPLICIT_PARAMETER,\n PROPERTY_WRAPPER_PROJECTION\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html\n const AVAILABLE_ATTRIBUTE = {\n match: /(@|#(un)?)available/,\n scope: 'keyword',\n starts: { contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: availabilityKeywords,\n contains: [\n ...OPERATORS,\n NUMBER,\n STRING\n ]\n }\n ] }\n };\n\n const KEYWORD_ATTRIBUTE = {\n scope: 'keyword',\n match: concat(/@/, either(...keywordAttributes), lookahead(either(/\\(/, /\\s+/))),\n };\n\n const USER_DEFINED_ATTRIBUTE = {\n scope: 'meta',\n match: concat(/@/, identifier)\n };\n\n const ATTRIBUTES = [\n AVAILABLE_ATTRIBUTE,\n KEYWORD_ATTRIBUTE,\n USER_DEFINED_ATTRIBUTE\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Types.html\n const TYPE = {\n match: lookahead(/\\b[A-Z]/),\n relevance: 0,\n contains: [\n { // Common Apple frameworks, for relevance boost\n className: 'type',\n match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+')\n },\n { // Type identifier\n className: 'type',\n match: typeIdentifier,\n relevance: 0\n },\n { // Optional type\n match: /[?!]+/,\n relevance: 0\n },\n { // Variadic parameter\n match: /\\.\\.\\./,\n relevance: 0\n },\n { // Protocol composition\n match: concat(/\\s+&\\s+/, lookahead(typeIdentifier)),\n relevance: 0\n }\n ]\n };\n const GENERIC_ARGUMENTS = {\n begin: /</,\n end: />/,\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...ATTRIBUTES,\n OPERATOR_GUARD,\n TYPE\n ]\n };\n TYPE.contains.push(GENERIC_ARGUMENTS);\n\n // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552\n // Prevents element names from being highlighted as keywords.\n const TUPLE_ELEMENT_NAME = {\n match: concat(identifier, /\\s*:/),\n keywords: \"_|0\",\n relevance: 0\n };\n // Matches tuples as well as the parameter list of a function type.\n const TUPLE = {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n 'self',\n TUPLE_ELEMENT_NAME,\n ...COMMENTS,\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE\n ]\n };\n\n const GENERIC_PARAMETERS = {\n begin: /</,\n end: />/,\n keywords: 'repeat each',\n contains: [\n ...COMMENTS,\n TYPE\n ]\n };\n const FUNCTION_PARAMETER_NAME = {\n begin: either(\n lookahead(concat(identifier, /\\s*:/)),\n lookahead(concat(identifier, /\\s+/, identifier, /\\s*:/))\n ),\n end: /:/,\n relevance: 0,\n contains: [\n {\n className: 'keyword',\n match: /\\b_\\b/\n },\n {\n className: 'params',\n match: identifier\n }\n ]\n };\n const FUNCTION_PARAMETERS = {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n FUNCTION_PARAMETER_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ],\n endsParent: true,\n illegal: /[\"']/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/declarations/#Macro-Declaration\n const FUNCTION_OR_MACRO = {\n match: [\n /(func|macro)/,\n /\\s+/,\n either(QUOTED_IDENTIFIER.match, identifier, operator)\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: [\n /\\[/,\n /%/\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379\n const INIT_SUBSCRIPT = {\n match: [\n /\\b(?:subscript|init[?!]?)/,\n /\\s*(?=[<(])/,\n ],\n className: { 1: \"keyword\" },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: /\\[|%/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380\n const OPERATOR_DECLARATION = {\n match: [\n /operator/,\n /\\s+/,\n operator\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n }\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550\n const PRECEDENCEGROUP = {\n begin: [\n /precedencegroup/,\n /\\s+/,\n typeIdentifier\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n },\n contains: [ TYPE ],\n keywords: [\n ...precedencegroupKeywords,\n ...literals\n ],\n end: /}/\n };\n\n const CLASS_FUNC_DECLARATION = {\n match: [\n /class\\b/, \n /\\s+/,\n /func\\b/,\n /\\s+/,\n /\\b[A-Za-z_][A-Za-z0-9_]*\\b/ \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\",\n 5: \"title.function\"\n }\n };\n\n const CLASS_VAR_DECLARATION = {\n match: [\n /class\\b/,\n /\\s+/, \n /var\\b/, \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\"\n }\n };\n\n const TYPE_DECLARATION = {\n begin: [\n /(struct|protocol|class|extension|enum|actor)/,\n /\\s+/,\n identifier,\n /\\s*/,\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n keywords: KEYWORDS,\n contains: [\n GENERIC_PARAMETERS,\n ...KEYWORD_MODES,\n {\n begin: /:/,\n end: /\\{/,\n keywords: KEYWORDS,\n contains: [\n {\n scope: \"title.class.inherited\",\n match: typeIdentifier,\n },\n ...KEYWORD_MODES,\n ],\n relevance: 0,\n },\n ]\n };\n\n // Add supported submodes to string interpolation.\n for (const variant of STRING.variants) {\n const interpolation = variant.contains.find(mode => mode.label === \"interpol\");\n // TODO: Interpolation can contain any expression, so there's room for improvement here.\n interpolation.keywords = KEYWORDS;\n const submodes = [\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS\n ];\n interpolation.contains = [\n ...submodes,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n ...submodes\n ]\n }\n ];\n }\n\n return {\n name: 'Swift',\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n FUNCTION_OR_MACRO,\n INIT_SUBSCRIPT,\n CLASS_FUNC_DECLARATION,\n CLASS_VAR_DECLARATION,\n TYPE_DECLARATION,\n OPERATOR_DECLARATION,\n PRECEDENCEGROUP,\n {\n beginKeywords: 'import',\n end: /$/,\n contains: [ ...COMMENTS ],\n relevance: 0\n },\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ]\n };\n}\n\nexport { swift as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nContributors: Ike Ku <dempfi@yahoo.com>\nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const regex = hljs.regex;\n const tsLanguage = javascript(hljs);\n\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"symbol\",\n \"bigint\",\n \"unknown\"\n ];\n const NAMESPACE = {\n begin: [\n /namespace/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n };\n const INTERFACE = {\n beginKeywords: 'interface',\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: 'interface extends',\n built_in: TYPES\n },\n contains: [ tsLanguage.exports.CLASS_REFERENCE ]\n };\n const USE_STRICT = {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n // \"namespace\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\",\n \"enum\",\n \"override\",\n \"satisfies\"\n ];\n /*\n namespace is a TS keyword but it's fine to use it as a variable name too.\n const message = 'foo';\n const namespace = 'bar';\n */\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n const DECORATOR = {\n className: 'meta',\n begin: '@' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error(\"can not find mode to replace\"); }\n\n mode.contains.splice(indx, 1, replacement);\n };\n\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n\n // highlight the function params\n const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === \"attr\");\n\n // take default attr rule and extend it to support optionals\n const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({},\n ATTRIBUTE_HIGHLIGHT,\n { match: regex.concat(IDENT_RE$1, regex.lookahead(/\\s*\\?:/)) }\n );\n tsLanguage.exports.PARAMS_CONTAINS.push([\n tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types\n ATTRIBUTE_HIGHLIGHT, // highlight the params key\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // Add the optional property assignment highlighting for objects or classes\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.label === \"func.def\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: 'TypeScript',\n aliases: [\n 'ts',\n 'tsx',\n 'mts',\n 'cts'\n ]\n });\n\n return tsLanguage;\n}\n\nexport { typescript as default };\n","/**\n * @import {LanguageFn} from 'highlight.js'\n */\n\nimport arduino from 'highlight.js/lib/languages/arduino'\nimport bash from 'highlight.js/lib/languages/bash'\nimport c from 'highlight.js/lib/languages/c'\nimport cpp from 'highlight.js/lib/languages/cpp'\nimport csharp from 'highlight.js/lib/languages/csharp'\nimport css from 'highlight.js/lib/languages/css'\nimport diff from 'highlight.js/lib/languages/diff'\nimport go from 'highlight.js/lib/languages/go'\nimport graphql from 'highlight.js/lib/languages/graphql'\nimport ini from 'highlight.js/lib/languages/ini'\nimport java from 'highlight.js/lib/languages/java'\nimport javascript from 'highlight.js/lib/languages/javascript'\nimport json from 'highlight.js/lib/languages/json'\nimport kotlin from 'highlight.js/lib/languages/kotlin'\nimport less from 'highlight.js/lib/languages/less'\nimport lua from 'highlight.js/lib/languages/lua'\nimport makefile from 'highlight.js/lib/languages/makefile'\nimport markdown from 'highlight.js/lib/languages/markdown'\nimport objectivec from 'highlight.js/lib/languages/objectivec'\nimport perl from 'highlight.js/lib/languages/perl'\nimport php from 'highlight.js/lib/languages/php'\nimport phpTemplate from 'highlight.js/lib/languages/php-template'\nimport plaintext from 'highlight.js/lib/languages/plaintext'\nimport python from 'highlight.js/lib/languages/python'\nimport pythonRepl from 'highlight.js/lib/languages/python-repl'\nimport r from 'highlight.js/lib/languages/r'\nimport ruby from 'highlight.js/lib/languages/ruby'\nimport rust from 'highlight.js/lib/languages/rust'\nimport scss from 'highlight.js/lib/languages/scss'\nimport shell from 'highlight.js/lib/languages/shell'\nimport sql from 'highlight.js/lib/languages/sql'\nimport swift from 'highlight.js/lib/languages/swift'\nimport typescript from 'highlight.js/lib/languages/typescript'\nimport vbnet from 'highlight.js/lib/languages/vbnet'\nimport wasm from 'highlight.js/lib/languages/wasm'\nimport xml from 'highlight.js/lib/languages/xml'\nimport yaml from 'highlight.js/lib/languages/yaml'\n\n/**\n * Map of grammars.\n *\n * @type {Record<string, LanguageFn>}\n */\nexport const grammars = {\n arduino,\n bash,\n c,\n cpp,\n csharp,\n css,\n diff,\n go,\n graphql,\n ini,\n java,\n javascript,\n json,\n kotlin,\n less,\n lua,\n makefile,\n markdown,\n objectivec,\n perl,\n php,\n 'php-template': phpTemplate,\n plaintext,\n python,\n 'python-repl': pythonRepl,\n r,\n ruby,\n rust,\n scss,\n shell,\n sql,\n swift,\n typescript,\n vbnet,\n wasm,\n xml,\n yaml\n}\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cPlusPlus(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n // Floating-point literal.\n { begin:\n \"[+-]?(?:\" // Leading sign.\n // Decimal.\n + \"(?:\"\n +\"[0-9](?:'?[0-9])*\\\\.(?:[0-9](?:'?[0-9])*)?\"\n + \"|\\\\.[0-9](?:'?[0-9])*\"\n + \")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?\"\n + \"|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*\"\n // Hexadecimal.\n + \"|0[Xx](?:\"\n +\"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?\"\n + \"|\\\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*\"\n + \")[Pp][+-]?[0-9](?:'?[0-9])*\"\n + \")(?:\" // Literal suffixes.\n + \"[Ff](?:16|32|64|128)?\"\n + \"|(BF|bf)16\"\n + \"|[Ll]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n },\n // Integer literal.\n { begin:\n \"[+-]?\\\\b(?:\" // Leading sign.\n + \"0[Bb][01](?:'?[01])*\" // Binary.\n + \"|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*\" // Hexadecimal.\n + \"|0(?:'?[0-7])*\" // Octal or just a lone zero.\n + \"|[1-9](?:'?[0-9])*\" // Decimal.\n + \")(?:\" // Literal suffixes.\n + \"[Uu](?:LL?|ll?)\"\n + \"|[Uu][Zz]?\"\n + \"|(?:LL?|ll?)[Uu]?\"\n + \"|[Zz][Uu]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the\n // literal highlight actually makes it stand out more.\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'flat_map',\n 'flat_set',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: { 'function.dispatch': 'built_in' },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\n/*\nLanguage: Arduino\nAuthor: Stefania Mellai <s.mellai@arduino.cc>\nDescription: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.\nWebsite: https://www.arduino.cc\nCategory: system\n*/\n\n\n/** @type LanguageFn */\nfunction arduino(hljs) {\n const ARDUINO_KW = {\n type: [\n \"boolean\",\n \"byte\",\n \"word\",\n \"String\"\n ],\n built_in: [\n \"KeyboardController\",\n \"MouseController\",\n \"SoftwareSerial\",\n \"EthernetServer\",\n \"EthernetClient\",\n \"LiquidCrystal\",\n \"RobotControl\",\n \"GSMVoiceCall\",\n \"EthernetUDP\",\n \"EsploraTFT\",\n \"HttpClient\",\n \"RobotMotor\",\n \"WiFiClient\",\n \"GSMScanner\",\n \"FileSystem\",\n \"Scheduler\",\n \"GSMServer\",\n \"YunClient\",\n \"YunServer\",\n \"IPAddress\",\n \"GSMClient\",\n \"GSMModem\",\n \"Keyboard\",\n \"Ethernet\",\n \"Console\",\n \"GSMBand\",\n \"Esplora\",\n \"Stepper\",\n \"Process\",\n \"WiFiUDP\",\n \"GSM_SMS\",\n \"Mailbox\",\n \"USBHost\",\n \"Firmata\",\n \"PImage\",\n \"Client\",\n \"Server\",\n \"GSMPIN\",\n \"FileIO\",\n \"Bridge\",\n \"Serial\",\n \"EEPROM\",\n \"Stream\",\n \"Mouse\",\n \"Audio\",\n \"Servo\",\n \"File\",\n \"Task\",\n \"GPRS\",\n \"WiFi\",\n \"Wire\",\n \"TFT\",\n \"GSM\",\n \"SPI\",\n \"SD\"\n ],\n _hints: [\n \"setup\",\n \"loop\",\n \"runShellCommandAsynchronously\",\n \"analogWriteResolution\",\n \"retrieveCallingNumber\",\n \"printFirmwareVersion\",\n \"analogReadResolution\",\n \"sendDigitalPortPair\",\n \"noListenOnLocalhost\",\n \"readJoystickButton\",\n \"setFirmwareVersion\",\n \"readJoystickSwitch\",\n \"scrollDisplayRight\",\n \"getVoiceCallStatus\",\n \"scrollDisplayLeft\",\n \"writeMicroseconds\",\n \"delayMicroseconds\",\n \"beginTransmission\",\n \"getSignalStrength\",\n \"runAsynchronously\",\n \"getAsynchronously\",\n \"listenOnLocalhost\",\n \"getCurrentCarrier\",\n \"readAccelerometer\",\n \"messageAvailable\",\n \"sendDigitalPorts\",\n \"lineFollowConfig\",\n \"countryNameWrite\",\n \"runShellCommand\",\n \"readStringUntil\",\n \"rewindDirectory\",\n \"readTemperature\",\n \"setClockDivider\",\n \"readLightSensor\",\n \"endTransmission\",\n \"analogReference\",\n \"detachInterrupt\",\n \"countryNameRead\",\n \"attachInterrupt\",\n \"encryptionType\",\n \"readBytesUntil\",\n \"robotNameWrite\",\n \"readMicrophone\",\n \"robotNameRead\",\n \"cityNameWrite\",\n \"userNameWrite\",\n \"readJoystickY\",\n \"readJoystickX\",\n \"mouseReleased\",\n \"openNextFile\",\n \"scanNetworks\",\n \"noInterrupts\",\n \"digitalWrite\",\n \"beginSpeaker\",\n \"mousePressed\",\n \"isActionDone\",\n \"mouseDragged\",\n \"displayLogos\",\n \"noAutoscroll\",\n \"addParameter\",\n \"remoteNumber\",\n \"getModifiers\",\n \"keyboardRead\",\n \"userNameRead\",\n \"waitContinue\",\n \"processInput\",\n \"parseCommand\",\n \"printVersion\",\n \"readNetworks\",\n \"writeMessage\",\n \"blinkVersion\",\n \"cityNameRead\",\n \"readMessage\",\n \"setDataMode\",\n \"parsePacket\",\n \"isListening\",\n \"setBitOrder\",\n \"beginPacket\",\n \"isDirectory\",\n \"motorsWrite\",\n \"drawCompass\",\n \"digitalRead\",\n \"clearScreen\",\n \"serialEvent\",\n \"rightToLeft\",\n \"setTextSize\",\n \"leftToRight\",\n \"requestFrom\",\n \"keyReleased\",\n \"compassRead\",\n \"analogWrite\",\n \"interrupts\",\n \"WiFiServer\",\n \"disconnect\",\n \"playMelody\",\n \"parseFloat\",\n \"autoscroll\",\n \"getPINUsed\",\n \"setPINUsed\",\n \"setTimeout\",\n \"sendAnalog\",\n \"readSlider\",\n \"analogRead\",\n \"beginWrite\",\n \"createChar\",\n \"motorsStop\",\n \"keyPressed\",\n \"tempoWrite\",\n \"readButton\",\n \"subnetMask\",\n \"debugPrint\",\n \"macAddress\",\n \"writeGreen\",\n \"randomSeed\",\n \"attachGPRS\",\n \"readString\",\n \"sendString\",\n \"remotePort\",\n \"releaseAll\",\n \"mouseMoved\",\n \"background\",\n \"getXChange\",\n \"getYChange\",\n \"answerCall\",\n \"getResult\",\n \"voiceCall\",\n \"endPacket\",\n \"constrain\",\n \"getSocket\",\n \"writeJSON\",\n \"getButton\",\n \"available\",\n \"connected\",\n \"findUntil\",\n \"readBytes\",\n \"exitValue\",\n \"readGreen\",\n \"writeBlue\",\n \"startLoop\",\n \"IPAddress\",\n \"isPressed\",\n \"sendSysex\",\n \"pauseMode\",\n \"gatewayIP\",\n \"setCursor\",\n \"getOemKey\",\n \"tuneWrite\",\n \"noDisplay\",\n \"loadImage\",\n \"switchPIN\",\n \"onRequest\",\n \"onReceive\",\n \"changePIN\",\n \"playFile\",\n \"noBuffer\",\n \"parseInt\",\n \"overflow\",\n \"checkPIN\",\n \"knobRead\",\n \"beginTFT\",\n \"bitClear\",\n \"updateIR\",\n \"bitWrite\",\n \"position\",\n \"writeRGB\",\n \"highByte\",\n \"writeRed\",\n \"setSpeed\",\n \"readBlue\",\n \"noStroke\",\n \"remoteIP\",\n \"transfer\",\n \"shutdown\",\n \"hangCall\",\n \"beginSMS\",\n \"endWrite\",\n \"attached\",\n \"maintain\",\n \"noCursor\",\n \"checkReg\",\n \"checkPUK\",\n \"shiftOut\",\n \"isValid\",\n \"shiftIn\",\n \"pulseIn\",\n \"connect\",\n \"println\",\n \"localIP\",\n \"pinMode\",\n \"getIMEI\",\n \"display\",\n \"noBlink\",\n \"process\",\n \"getBand\",\n \"running\",\n \"beginSD\",\n \"drawBMP\",\n \"lowByte\",\n \"setBand\",\n \"release\",\n \"bitRead\",\n \"prepare\",\n \"pointTo\",\n \"readRed\",\n \"setMode\",\n \"noFill\",\n \"remove\",\n \"listen\",\n \"stroke\",\n \"detach\",\n \"attach\",\n \"noTone\",\n \"exists\",\n \"buffer\",\n \"height\",\n \"bitSet\",\n \"circle\",\n \"config\",\n \"cursor\",\n \"random\",\n \"IRread\",\n \"setDNS\",\n \"endSMS\",\n \"getKey\",\n \"micros\",\n \"millis\",\n \"begin\",\n \"print\",\n \"write\",\n \"ready\",\n \"flush\",\n \"width\",\n \"isPIN\",\n \"blink\",\n \"clear\",\n \"press\",\n \"mkdir\",\n \"rmdir\",\n \"close\",\n \"point\",\n \"yield\",\n \"image\",\n \"BSSID\",\n \"click\",\n \"delay\",\n \"read\",\n \"text\",\n \"move\",\n \"peek\",\n \"beep\",\n \"rect\",\n \"line\",\n \"open\",\n \"seek\",\n \"fill\",\n \"size\",\n \"turn\",\n \"stop\",\n \"home\",\n \"find\",\n \"step\",\n \"tone\",\n \"sqrt\",\n \"RSSI\",\n \"SSID\",\n \"end\",\n \"bit\",\n \"tan\",\n \"cos\",\n \"sin\",\n \"pow\",\n \"map\",\n \"abs\",\n \"max\",\n \"min\",\n \"get\",\n \"run\",\n \"put\"\n ],\n literal: [\n \"DIGITAL_MESSAGE\",\n \"FIRMATA_STRING\",\n \"ANALOG_MESSAGE\",\n \"REPORT_DIGITAL\",\n \"REPORT_ANALOG\",\n \"INPUT_PULLUP\",\n \"SET_PIN_MODE\",\n \"INTERNAL2V56\",\n \"SYSTEM_RESET\",\n \"LED_BUILTIN\",\n \"INTERNAL1V1\",\n \"SYSEX_START\",\n \"INTERNAL\",\n \"EXTERNAL\",\n \"DEFAULT\",\n \"OUTPUT\",\n \"INPUT\",\n \"HIGH\",\n \"LOW\"\n ]\n };\n\n const ARDUINO = cPlusPlus(hljs);\n\n const kws = /** @type {Record<string,any>} */ (ARDUINO.keywords);\n\n kws.type = [\n ...kws.type,\n ...ARDUINO_KW.type\n ];\n kws.literal = [\n ...kws.literal,\n ...ARDUINO_KW.literal\n ];\n kws.built_in = [\n ...kws.built_in,\n ...ARDUINO_KW.built_in\n ];\n kws._hints = ARDUINO_KW._hints;\n\n ARDUINO.name = 'Arduino';\n ARDUINO.aliases = [ 'ino' ];\n ARDUINO.supersetOf = \"cpp\";\n\n return ARDUINO;\n}\n\nexport { arduino as default };\n","/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const regex = hljs.regex;\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR, {\n className: 'variable',\n variants: [\n { begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: 'subst',\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const COMMENT = hljs.inherit(\n hljs.COMMENT(),\n {\n match: [\n /(^|\\s)/,\n /#.*$/\n ],\n scope: {\n 2: 'comment'\n }\n }\n );\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: { contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: 'string'\n })\n ] }\n };\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n match: /\\\\\"/\n };\n const APOS_STRING = {\n className: 'string',\n begin: /'/,\n end: /'/\n };\n const ESCAPED_APOS = {\n match: /\\\\'/\n };\n const ARITHMETIC = {\n begin: /\\$?\\(\\(/,\n end: /\\)\\)/,\n contains: [\n {\n begin: /\\d+#[0-9a-f]+/,\n className: \"number\"\n },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\\w[\\w\\d_]*/ }) ],\n relevance: 0\n };\n\n const KEYWORDS = [\n \"if\",\n \"then\",\n \"else\",\n \"elif\",\n \"fi\",\n \"time\",\n \"for\",\n \"while\",\n \"until\",\n \"in\",\n \"do\",\n \"done\",\n \"case\",\n \"esac\",\n \"coproc\",\n \"function\",\n \"select\"\n ];\n\n const LITERALS = [\n \"true\",\n \"false\"\n ];\n\n // to consume paths to prevent keyword matches inside them\n const PATH_MODE = { match: /(\\/[a-z._-]+)+/ };\n\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n const SHELL_BUILT_INS = [\n \"break\",\n \"cd\",\n \"continue\",\n \"eval\",\n \"exec\",\n \"exit\",\n \"export\",\n \"getopts\",\n \"hash\",\n \"pwd\",\n \"readonly\",\n \"return\",\n \"shift\",\n \"test\",\n \"times\",\n \"trap\",\n \"umask\",\n \"unset\"\n ];\n\n const BASH_BUILT_INS = [\n \"alias\",\n \"bind\",\n \"builtin\",\n \"caller\",\n \"command\",\n \"declare\",\n \"echo\",\n \"enable\",\n \"help\",\n \"let\",\n \"local\",\n \"logout\",\n \"mapfile\",\n \"printf\",\n \"read\",\n \"readarray\",\n \"source\",\n \"sudo\",\n \"type\",\n \"typeset\",\n \"ulimit\",\n \"unalias\"\n ];\n\n const ZSH_BUILT_INS = [\n \"autoload\",\n \"bg\",\n \"bindkey\",\n \"bye\",\n \"cap\",\n \"chdir\",\n \"clone\",\n \"comparguments\",\n \"compcall\",\n \"compctl\",\n \"compdescribe\",\n \"compfiles\",\n \"compgroups\",\n \"compquote\",\n \"comptags\",\n \"comptry\",\n \"compvalues\",\n \"dirs\",\n \"disable\",\n \"disown\",\n \"echotc\",\n \"echoti\",\n \"emulate\",\n \"fc\",\n \"fg\",\n \"float\",\n \"functions\",\n \"getcap\",\n \"getln\",\n \"history\",\n \"integer\",\n \"jobs\",\n \"kill\",\n \"limit\",\n \"log\",\n \"noglob\",\n \"popd\",\n \"print\",\n \"pushd\",\n \"pushln\",\n \"rehash\",\n \"sched\",\n \"setcap\",\n \"setopt\",\n \"stat\",\n \"suspend\",\n \"ttyctl\",\n \"unfunction\",\n \"unhash\",\n \"unlimit\",\n \"unsetopt\",\n \"vared\",\n \"wait\",\n \"whence\",\n \"where\",\n \"which\",\n \"zcompile\",\n \"zformat\",\n \"zftp\",\n \"zle\",\n \"zmodload\",\n \"zparseopts\",\n \"zprof\",\n \"zpty\",\n \"zregexparse\",\n \"zsocket\",\n \"zstyle\",\n \"ztcp\"\n ];\n\n const GNU_CORE_UTILS = [\n \"chcon\",\n \"chgrp\",\n \"chown\",\n \"chmod\",\n \"cp\",\n \"dd\",\n \"df\",\n \"dir\",\n \"dircolors\",\n \"ln\",\n \"ls\",\n \"mkdir\",\n \"mkfifo\",\n \"mknod\",\n \"mktemp\",\n \"mv\",\n \"realpath\",\n \"rm\",\n \"rmdir\",\n \"shred\",\n \"sync\",\n \"touch\",\n \"truncate\",\n \"vdir\",\n \"b2sum\",\n \"base32\",\n \"base64\",\n \"cat\",\n \"cksum\",\n \"comm\",\n \"csplit\",\n \"cut\",\n \"expand\",\n \"fmt\",\n \"fold\",\n \"head\",\n \"join\",\n \"md5sum\",\n \"nl\",\n \"numfmt\",\n \"od\",\n \"paste\",\n \"ptx\",\n \"pr\",\n \"sha1sum\",\n \"sha224sum\",\n \"sha256sum\",\n \"sha384sum\",\n \"sha512sum\",\n \"shuf\",\n \"sort\",\n \"split\",\n \"sum\",\n \"tac\",\n \"tail\",\n \"tr\",\n \"tsort\",\n \"unexpand\",\n \"uniq\",\n \"wc\",\n \"arch\",\n \"basename\",\n \"chroot\",\n \"date\",\n \"dirname\",\n \"du\",\n \"echo\",\n \"env\",\n \"expr\",\n \"factor\",\n // \"false\", // keyword literal already\n \"groups\",\n \"hostid\",\n \"id\",\n \"link\",\n \"logname\",\n \"nice\",\n \"nohup\",\n \"nproc\",\n \"pathchk\",\n \"pinky\",\n \"printenv\",\n \"printf\",\n \"pwd\",\n \"readlink\",\n \"runcon\",\n \"seq\",\n \"sleep\",\n \"stat\",\n \"stdbuf\",\n \"stty\",\n \"tee\",\n \"test\",\n \"timeout\",\n // \"true\", // keyword literal already\n \"tty\",\n \"uname\",\n \"unlink\",\n \"uptime\",\n \"users\",\n \"who\",\n \"whoami\",\n \"yes\"\n ];\n\n return {\n name: 'Bash',\n aliases: [\n 'sh',\n 'zsh'\n ],\n keywords: {\n $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: [\n ...SHELL_BUILT_INS,\n ...BASH_BUILT_INS,\n // Shell modifiers\n \"set\",\n \"shopt\",\n ...ZSH_BUILT_INS,\n ...GNU_CORE_UTILS\n ]\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n COMMENT,\n HERE_DOC,\n PATH_MODE,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n ESCAPED_APOS,\n VAR\n ]\n };\n}\n\nexport { bash as default };\n","/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n\n const TYPES = {\n className: 'type',\n variants: [\n { begin: '\\\\b[a-z\\\\d_]*_t\\\\b' },\n { match: /\\batomic_[a-z]{3,6}\\b/ }\n ]\n\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { match: /\\b(0b[01']+)/ }, \n { match: /(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/ }, \n { match: /(-?)\\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/ }, \n { match: /(-?)\\b\\d+(?:'\\d+)*(?:\\.\\d*(?:'\\d*)*)?(?:[eE][-+]?\\d+)?/ } \n ],\n relevance: 0\n }; \n \n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef elifdef elifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const C_KEYWORDS = [\n \"asm\",\n \"auto\",\n \"break\",\n \"case\",\n \"continue\",\n \"default\",\n \"do\",\n \"else\",\n \"enum\",\n \"extern\",\n \"for\",\n \"fortran\",\n \"goto\",\n \"if\",\n \"inline\",\n \"register\",\n \"restrict\",\n \"return\",\n \"sizeof\",\n \"typeof\",\n \"typeof_unqual\",\n \"struct\",\n \"switch\",\n \"typedef\",\n \"union\",\n \"volatile\",\n \"while\",\n \"_Alignas\",\n \"_Alignof\",\n \"_Atomic\",\n \"_Generic\",\n \"_Noreturn\",\n \"_Static_assert\",\n \"_Thread_local\",\n // aliases\n \"alignas\",\n \"alignof\",\n \"noreturn\",\n \"static_assert\",\n \"thread_local\",\n // not a C keyword but is, for all intents and purposes, treated exactly like one.\n \"_Pragma\"\n ];\n\n const C_TYPES = [\n \"float\",\n \"double\",\n \"signed\",\n \"unsigned\",\n \"int\",\n \"short\",\n \"long\",\n \"char\",\n \"void\",\n \"_Bool\",\n \"_BitInt\",\n \"_Complex\",\n \"_Imaginary\",\n \"_Decimal32\",\n \"_Decimal64\",\n \"_Decimal96\",\n \"_Decimal128\",\n \"_Decimal64x\",\n \"_Decimal128x\",\n \"_Float16\",\n \"_Float32\",\n \"_Float64\",\n \"_Float128\",\n \"_Float32x\",\n \"_Float64x\",\n \"_Float128x\",\n // modifiers\n \"const\",\n \"static\",\n \"constexpr\",\n // aliases\n \"complex\",\n \"bool\",\n \"imaginary\"\n ];\n\n const KEYWORDS = {\n keyword: C_KEYWORDS,\n type: C_TYPES,\n literal: 'true false NULL',\n // TODO: apply hinting work similar to what was done in cpp.js\n built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream '\n + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set '\n + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos '\n + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp '\n + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper '\n + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow '\n + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp '\n + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan '\n + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n };\n\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ hljs.inherit(TITLE_MODE, { className: \"title.function\" }) ],\n relevance: 0\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES\n ]\n }\n ]\n },\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: \"C\",\n aliases: [ 'h' ],\n keywords: KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: '</',\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n { beginKeywords: \"final class struct\" },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: KEYWORDS\n }\n };\n}\n\nexport { c as default };\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cpp(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n // Floating-point literal.\n { begin:\n \"[+-]?(?:\" // Leading sign.\n // Decimal.\n + \"(?:\"\n +\"[0-9](?:'?[0-9])*\\\\.(?:[0-9](?:'?[0-9])*)?\"\n + \"|\\\\.[0-9](?:'?[0-9])*\"\n + \")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?\"\n + \"|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*\"\n // Hexadecimal.\n + \"|0[Xx](?:\"\n +\"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?\"\n + \"|\\\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*\"\n + \")[Pp][+-]?[0-9](?:'?[0-9])*\"\n + \")(?:\" // Literal suffixes.\n + \"[Ff](?:16|32|64|128)?\"\n + \"|(BF|bf)16\"\n + \"|[Ll]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n },\n // Integer literal.\n { begin:\n \"[+-]?\\\\b(?:\" // Leading sign.\n + \"0[Bb][01](?:'?[01])*\" // Binary.\n + \"|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*\" // Hexadecimal.\n + \"|0(?:'?[0-7])*\" // Octal or just a lone zero.\n + \"|[1-9](?:'?[0-9])*\" // Decimal.\n + \")(?:\" // Literal suffixes.\n + \"[Uu](?:LL?|ll?)\"\n + \"|[Uu][Zz]?\"\n + \"|(?:LL?|ll?)[Uu]?\"\n + \"|[Zz][Uu]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the\n // literal highlight actually makes it stand out more.\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'flat_map',\n 'flat_set',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: { 'function.dispatch': 'built_in' },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\nexport { cpp as default };\n","/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nContributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>\nWebsite: https://docs.microsoft.com/dotnet/csharp/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'bool',\n 'byte',\n 'char',\n 'decimal',\n 'delegate',\n 'double',\n 'dynamic',\n 'enum',\n 'float',\n 'int',\n 'long',\n 'nint',\n 'nuint',\n 'object',\n 'sbyte',\n 'short',\n 'string',\n 'ulong',\n 'uint',\n 'ushort'\n ];\n const FUNCTION_MODIFIERS = [\n 'public',\n 'private',\n 'protected',\n 'static',\n 'internal',\n 'protected',\n 'abstract',\n 'async',\n 'extern',\n 'override',\n 'unsafe',\n 'virtual',\n 'new',\n 'sealed',\n 'partial'\n ];\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'base',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'event',\n 'explicit',\n 'extern',\n 'finally',\n 'fixed',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'namespace',\n 'new',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'record',\n 'ref',\n 'return',\n 'scoped',\n 'sealed',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'unchecked',\n 'unsafe',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while'\n ];\n const CONTEXTUAL_KEYWORDS = [\n 'add',\n 'alias',\n 'and',\n 'ascending',\n 'args',\n 'async',\n 'await',\n 'by',\n 'descending',\n 'dynamic',\n 'equals',\n 'file',\n 'from',\n 'get',\n 'global',\n 'group',\n 'init',\n 'into',\n 'join',\n 'let',\n 'nameof',\n 'not',\n 'notnull',\n 'on',\n 'or',\n 'orderby',\n 'partial',\n 'record',\n 'remove',\n 'required',\n 'scoped',\n 'select',\n 'set',\n 'unmanaged',\n 'value|0',\n 'var',\n 'when',\n 'where',\n 'with',\n 'yield'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\\\.?\\\\w)*' });\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n const RAW_STRING = {\n className: 'string',\n begin: /\"\"\"(\"*)(?!\")(.|\\n)*?\"\"\"\\1/,\n relevance: 1\n };\n const VERBATIM_STRING = {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [ { begin: '\"\"' } ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\\n/ });\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\\n/ });\n const INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\\n/ })\n ];\n const STRING = { variants: [\n RAW_STRING,\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ] };\n\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n { beginKeywords: \"in out\" },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n\n return {\n name: 'C#',\n aliases: [\n 'cs',\n 'c#'\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///',\n relevance: 0\n },\n { begin: '<!--|-->' },\n {\n begin: '</?',\n end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n { beginKeywords: \"where class\" },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'record',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[(?=[\\\\w])',\n excludeBegin: true,\n end: '\\\\]',\n excludeEnd: true,\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n { match: /\\(\\)/ },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\nexport { csharp as default };\n","/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction diff(hljs) {\n const regex = hljs.regex;\n return {\n name: 'Diff',\n aliases: [ 'patch' ],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n match: regex.either(\n /^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/,\n /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/,\n /^--- +\\d+,\\d+ +----$/\n )\n },\n {\n className: 'comment',\n variants: [\n {\n begin: regex.either(\n /Index: /,\n /^index/,\n /={3,}/,\n /^-{3}/,\n /^\\*{3} /,\n /^\\+{3}/,\n /^diff --git/\n ),\n end: /$/\n },\n { match: /^\\*{15}$/ }\n ]\n },\n {\n className: 'addition',\n begin: /^\\+/,\n end: /$/\n },\n {\n className: 'deletion',\n begin: /^-/,\n end: /$/\n },\n {\n className: 'addition',\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\nexport { diff as default };\n","/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/\n\nfunction go(hljs) {\n const LITERALS = [\n \"true\",\n \"false\",\n \"iota\",\n \"nil\"\n ];\n const BUILT_INS = [\n \"append\",\n \"cap\",\n \"close\",\n \"complex\",\n \"copy\",\n \"imag\",\n \"len\",\n \"make\",\n \"new\",\n \"panic\",\n \"print\",\n \"println\",\n \"real\",\n \"recover\",\n \"delete\"\n ];\n const TYPES = [\n \"bool\",\n \"byte\",\n \"complex64\",\n \"complex128\",\n \"error\",\n \"float32\",\n \"float64\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"int64\",\n \"string\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"uint64\",\n \"int\",\n \"uint\",\n \"uintptr\",\n \"rune\"\n ];\n const KWS = [\n \"break\",\n \"case\",\n \"chan\",\n \"const\",\n \"continue\",\n \"default\",\n \"defer\",\n \"else\",\n \"fallthrough\",\n \"for\",\n \"func\",\n \"go\",\n \"goto\",\n \"if\",\n \"import\",\n \"interface\",\n \"map\",\n \"package\",\n \"range\",\n \"return\",\n \"select\",\n \"struct\",\n \"switch\",\n \"type\",\n \"var\",\n ];\n const KEYWORDS = {\n keyword: KWS,\n type: TYPES,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n return {\n name: 'Go',\n aliases: [ 'golang' ],\n keywords: KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n },\n {\n className: 'number',\n variants: [\n {\n match: /-?\\b0[xX]\\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\\d(_?\\d)*i?/, // hex without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b0[xX](_?[a-fA-F0-9])+((\\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\\d(_?\\d)*)?i?/, // hex with a present digit before . (making a digit afterwards optional)\n relevance: 0\n },\n {\n match: /-?\\b0[oO](_?[0-7])*i?/, // leading 0o octal\n relevance: 0\n },\n {\n match: /-?\\.\\d(_?\\d)*([eE][+-]?\\d(_?\\d)*)?i?/, // decimal without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b\\d(_?\\d)*(\\.(\\d(_?\\d)*)?)?([eE][+-]?\\d(_?\\d)*)?i?/, // decimal with a present digit before . (making a digit afterwards optional)\n relevance: 0\n }\n ]\n },\n { begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func',\n end: '\\\\s*(\\\\{|$)',\n excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n}\n\nexport { go as default };\n","/*\n Language: GraphQL\n Author: John Foster (GH jf990), and others\n Description: GraphQL is a query language for APIs\n Category: web, common\n*/\n\n/** @type LanguageFn */\nfunction graphql(hljs) {\n const regex = hljs.regex;\n const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/;\n return {\n name: \"GraphQL\",\n aliases: [ \"gql\" ],\n case_insensitive: true,\n disableAutodetect: false,\n keywords: {\n keyword: [\n \"query\",\n \"mutation\",\n \"subscription\",\n \"type\",\n \"input\",\n \"schema\",\n \"directive\",\n \"interface\",\n \"union\",\n \"scalar\",\n \"fragment\",\n \"enum\",\n \"on\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"null\"\n ]\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n scope: \"punctuation\",\n match: /[.]{3}/,\n relevance: 0\n },\n {\n scope: \"punctuation\",\n begin: /[\\!\\(\\)\\:\\=\\[\\]\\{\\|\\}]{1}/,\n relevance: 0\n },\n {\n scope: \"variable\",\n begin: /\\$/,\n end: /\\W/,\n excludeEnd: true,\n relevance: 0\n },\n {\n scope: \"meta\",\n match: /@\\w+/,\n excludeEnd: true\n },\n {\n scope: \"symbol\",\n begin: regex.concat(GQL_NAME, regex.lookahead(/\\s*:/)),\n relevance: 0\n }\n ],\n illegal: [\n /[;<']/,\n /BEGIN/\n ]\n };\n}\n\nexport { graphql as default };\n","/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez <guillaume1.gomez@gmail.com>\nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/\n\nfunction ini(hljs) {\n const regex = hljs.regex;\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n variants: [\n { begin: /([+-]+)?[\\d]+_[\\d_]+/ },\n { begin: hljs.NUMBER_RE }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: 'variable',\n variants: [\n { begin: /\\$[\\w\\d\"][\\w\\d_]*/ },\n { begin: /\\$\\{(.*?)\\}/ }\n ]\n };\n const LITERALS = {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n 'self'\n ],\n relevance: 0\n };\n\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = regex.either(\n BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE\n );\n const DOTTED_KEY = regex.concat(\n ANY_KEY, '(\\\\s*\\\\.\\\\s*', ANY_KEY, ')*',\n regex.lookahead(/\\s*=\\s*[^#\\s]/)\n );\n\n return {\n name: 'TOML, also INI',\n aliases: [ 'toml' ],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: 'section',\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: 'attr',\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\nexport { ini as default };\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n aliases: ['jsonc'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nexport { json as default };\n","/*\nLanguage: Lua\nDescription: Lua is a powerful, efficient, lightweight, embeddable scripting language.\nAuthor: Andrew Fedorov <dmmdrs@mail.ru>\nCategory: common, gaming, scripting\nWebsite: https://www.lua.org\n*/\n\nfunction lua(hljs) {\n const OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n const CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n const LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [ 'self' ]\n };\n const COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [ LONG_BRACKETS ],\n relevance: 10\n }\n )\n ];\n return {\n name: 'Lua',\n aliases: ['pluto'],\n keywords: {\n $pattern: hljs.UNDERSCORE_IDENT_RE,\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n // Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len '\n + '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert '\n // Standard methods and properties:\n + 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring '\n + 'module next pairs pcall print rawequal rawget rawset require select setfenv '\n + 'setmetatable tonumber tostring type unpack xpcall arg self '\n // Library methods and properties (one line per library):\n + 'coroutine resume yield status wrap create running debug getupvalue '\n + 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv '\n + 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile '\n + 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan '\n + 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall '\n + 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower '\n + 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function',\n end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*' }),\n {\n className: 'params',\n begin: '\\\\(',\n endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [ LONG_BRACKETS ],\n relevance: 5\n }\n ])\n };\n}\n\nexport { lua as default };\n","/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Joël Porquet <joel@porquet.org>\nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common, build-system\n*/\n\nfunction makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n { begin: /\\$[@%<?\\^\\+\\*]/ }\n ]\n };\n /* Quoted string with variables inside */\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE\n ]\n };\n /* Function: $(func arg,...) */\n const FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/,\n end: /\\)/,\n keywords: { built_in:\n 'subst patsubst strip findstring filter filter-out sort '\n + 'word wordlist firstword lastword dir notdir suffix basename '\n + 'addsuffix addprefix join wildcard realpath abspath error warning '\n + 'shell origin flavor foreach if or and call eval file value' },\n contains: [ \n VARIABLE,\n QUOTE_STRING // Added QUOTE_STRING as they can be a part of functions\n ]\n };\n /* Variable assignment */\n const ASSIGNMENT = { begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*(?=[:+?]?=)' };\n /* Meta targets (.PHONY) */\n const META = {\n className: 'meta',\n begin: /^\\.PHONY:/,\n end: /$/,\n keywords: {\n $pattern: /[\\.\\w]+/,\n keyword: '.PHONY'\n }\n };\n /* Targets */\n const TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/,\n end: /$/,\n contains: [ VARIABLE ]\n };\n return {\n name: 'Makefile',\n aliases: [\n 'mk',\n 'mak',\n 'make',\n ],\n keywords: {\n $pattern: /[\\w-]+/,\n keyword: 'define endef undefine ifdef ifndef ifeq ifneq else endif '\n + 'include -include sinclude override export unexport private vpath'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n ASSIGNMENT,\n META,\n TARGET\n ]\n };\n}\n\nexport { makefile as default };\n","/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/\n\nfunction markdown(hljs) {\n const regex = hljs.regex;\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: '^[-\\\\*]{3,}',\n end: '$'\n };\n const CODE = {\n className: 'code',\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n { begin: '(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*' },\n { begin: '(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*' },\n // needed to allow markdown as a sublanguage to work\n {\n begin: '```',\n end: '```+[ ]*$'\n },\n {\n begin: '~~~',\n end: '~~~+[ ]*$'\n },\n { begin: '`.+?`' },\n {\n begin: '(?=^( {4}|\\\\t))',\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: '^( {4}|\\\\t)',\n end: '(\\\\n)$'\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: 'bullet',\n begin: '^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)',\n end: '\\\\s+',\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: regex.concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.*?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n // empty strings for alt or link text\n match: /\\[(?=\\])/ },\n {\n className: 'string',\n relevance: 0,\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: 'link',\n relevance: 0,\n begin: '\\\\]\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: '\\\\]\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: 'strong',\n contains: [], // defined later\n variants: [\n {\n begin: /_{2}(?!\\s)/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}(?!\\s)/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: 'emphasis',\n contains: [], // defined later\n variants: [\n {\n begin: /\\*(?![*\\s])/,\n end: /\\*/\n },\n {\n begin: /_(?![_\\s])/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n\n // 3 level deep nesting is not allowed because it would create confusion\n // in cases like `***testing***` because where we don't know if the last\n // `***` is starting a new bold/italic or finishing the last one\n const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] });\n const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] });\n BOLD.contains.push(ITALIC_WITHOUT_BOLD);\n ITALIC.contains.push(BOLD_WITHOUT_ITALIC);\n\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n\n [\n BOLD,\n ITALIC,\n BOLD_WITHOUT_ITALIC,\n ITALIC_WITHOUT_BOLD\n ].forEach(m => {\n m.contains = m.contains.concat(CONTAINABLE);\n });\n\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n\n const HEADER = {\n className: 'section',\n variants: [\n {\n begin: '^#{1,6}',\n end: '$',\n contains: CONTAINABLE\n },\n {\n begin: '(?=^.+?\\\\n[=-]{2,}$)',\n contains: [\n { begin: '^[=-]*$' },\n {\n begin: '^',\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n\n const BLOCKQUOTE = {\n className: 'quote',\n begin: '^>\\\\s+',\n contains: CONTAINABLE,\n end: '$'\n };\n\n const ENTITY = {\n //https://spec.commonmark.org/0.31.2/#entity-references\n scope: 'literal',\n match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/\n };\n\n return {\n name: 'Markdown',\n aliases: [\n 'md',\n 'mkdown',\n 'mkd'\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE,\n ENTITY\n ]\n };\n}\n\nexport { markdown as default };\n","/*\nLanguage: Objective-C\nAuthor: Valerii Hiora <valerii.hiora@gmail.com>\nContributors: Angel G. Olloqui <angelgarcia.mail@gmail.com>, Matt Diephouse <matt@diephouse.com>, Andrew Farmer <ahfarmer@gmail.com>, Minh Nguyễn <mxn@1ec5.org>\nWebsite: https://developer.apple.com/documentation/objectivec\nCategory: common\n*/\n\nfunction objectivec(hljs) {\n const API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+'\n };\n const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;\n const TYPES = [\n \"int\",\n \"float\",\n \"char\",\n \"unsigned\",\n \"signed\",\n \"short\",\n \"long\",\n \"double\",\n \"wchar_t\",\n \"unichar\",\n \"void\",\n \"bool\",\n \"BOOL\",\n \"id|0\",\n \"_Bool\"\n ];\n const KWS = [\n \"while\",\n \"export\",\n \"sizeof\",\n \"typedef\",\n \"const\",\n \"struct\",\n \"for\",\n \"union\",\n \"volatile\",\n \"static\",\n \"mutable\",\n \"if\",\n \"do\",\n \"return\",\n \"goto\",\n \"enum\",\n \"else\",\n \"break\",\n \"extern\",\n \"asm\",\n \"case\",\n \"default\",\n \"register\",\n \"explicit\",\n \"typename\",\n \"switch\",\n \"continue\",\n \"inline\",\n \"readonly\",\n \"assign\",\n \"readwrite\",\n \"self\",\n \"@synchronized\",\n \"id\",\n \"typeof\",\n \"nonatomic\",\n \"IBOutlet\",\n \"IBAction\",\n \"strong\",\n \"weak\",\n \"copy\",\n \"in\",\n \"out\",\n \"inout\",\n \"bycopy\",\n \"byref\",\n \"oneway\",\n \"__strong\",\n \"__weak\",\n \"__block\",\n \"__autoreleasing\",\n \"@private\",\n \"@protected\",\n \"@public\",\n \"@try\",\n \"@property\",\n \"@end\",\n \"@throw\",\n \"@catch\",\n \"@finally\",\n \"@autoreleasepool\",\n \"@synthesize\",\n \"@dynamic\",\n \"@selector\",\n \"@optional\",\n \"@required\",\n \"@encode\",\n \"@package\",\n \"@import\",\n \"@defs\",\n \"@compatibility_alias\",\n \"__bridge\",\n \"__bridge_transfer\",\n \"__bridge_retained\",\n \"__bridge_retain\",\n \"__covariant\",\n \"__contravariant\",\n \"__kindof\",\n \"_Nonnull\",\n \"_Nullable\",\n \"_Null_unspecified\",\n \"__FUNCTION__\",\n \"__PRETTY_FUNCTION__\",\n \"__attribute__\",\n \"getter\",\n \"setter\",\n \"retain\",\n \"unsafe_unretained\",\n \"nonnull\",\n \"nullable\",\n \"null_unspecified\",\n \"null_resettable\",\n \"class\",\n \"instancetype\",\n \"NS_DESIGNATED_INITIALIZER\",\n \"NS_UNAVAILABLE\",\n \"NS_REQUIRES_SUPER\",\n \"NS_RETURNS_INNER_POINTER\",\n \"NS_INLINE\",\n \"NS_AVAILABLE\",\n \"NS_DEPRECATED\",\n \"NS_ENUM\",\n \"NS_OPTIONS\",\n \"NS_SWIFT_UNAVAILABLE\",\n \"NS_ASSUME_NONNULL_BEGIN\",\n \"NS_ASSUME_NONNULL_END\",\n \"NS_REFINED_FOR_SWIFT\",\n \"NS_SWIFT_NAME\",\n \"NS_SWIFT_NOTHROW\",\n \"NS_DURING\",\n \"NS_HANDLER\",\n \"NS_ENDHANDLER\",\n \"NS_VALUERETURN\",\n \"NS_VOIDRETURN\"\n ];\n const LITERALS = [\n \"false\",\n \"true\",\n \"FALSE\",\n \"TRUE\",\n \"nil\",\n \"YES\",\n \"NO\",\n \"NULL\"\n ];\n const BUILT_INS = [\n \"dispatch_once_t\",\n \"dispatch_queue_t\",\n \"dispatch_sync\",\n \"dispatch_async\",\n \"dispatch_once\"\n ];\n const KEYWORDS = {\n \"variable.language\": [\n \"this\",\n \"super\"\n ],\n $pattern: IDENTIFIER_RE,\n keyword: KWS,\n literal: LITERALS,\n built_in: BUILT_INS,\n type: TYPES\n };\n const CLASS_KEYWORDS = {\n $pattern: IDENTIFIER_RE,\n keyword: [\n \"@interface\",\n \"@class\",\n \"@protocol\",\n \"@implementation\"\n ]\n };\n return {\n name: 'Objective-C',\n aliases: [\n 'mm',\n 'objc',\n 'obj-c',\n 'obj-c++',\n 'objective-c++'\n ],\n keywords: KEYWORDS,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n },\n {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/,\n end: /$/,\n illegal: '\\\\n'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.keyword.join('|') + ')\\\\b',\n end: /(\\{|$)/,\n excludeEnd: true,\n keywords: CLASS_KEYWORDS,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n begin: '\\\\.' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n}\n\nexport { objectivec as default };\n","/*\nLanguage: Perl\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nWebsite: https://www.perl.org\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction perl(hljs) {\n const regex = hljs.regex;\n const KEYWORDS = [\n 'abs',\n 'accept',\n 'alarm',\n 'and',\n 'atan2',\n 'bind',\n 'binmode',\n 'bless',\n 'break',\n 'caller',\n 'chdir',\n 'chmod',\n 'chomp',\n 'chop',\n 'chown',\n 'chr',\n 'chroot',\n 'class',\n 'close',\n 'closedir',\n 'connect',\n 'continue',\n 'cos',\n 'crypt',\n 'dbmclose',\n 'dbmopen',\n 'defined',\n 'delete',\n 'die',\n 'do',\n 'dump',\n 'each',\n 'else',\n 'elsif',\n 'endgrent',\n 'endhostent',\n 'endnetent',\n 'endprotoent',\n 'endpwent',\n 'endservent',\n 'eof',\n 'eval',\n 'exec',\n 'exists',\n 'exit',\n 'exp',\n 'fcntl',\n 'field',\n 'fileno',\n 'flock',\n 'for',\n 'foreach',\n 'fork',\n 'format',\n 'formline',\n 'getc',\n 'getgrent',\n 'getgrgid',\n 'getgrnam',\n 'gethostbyaddr',\n 'gethostbyname',\n 'gethostent',\n 'getlogin',\n 'getnetbyaddr',\n 'getnetbyname',\n 'getnetent',\n 'getpeername',\n 'getpgrp',\n 'getpriority',\n 'getprotobyname',\n 'getprotobynumber',\n 'getprotoent',\n 'getpwent',\n 'getpwnam',\n 'getpwuid',\n 'getservbyname',\n 'getservbyport',\n 'getservent',\n 'getsockname',\n 'getsockopt',\n 'given',\n 'glob',\n 'gmtime',\n 'goto',\n 'grep',\n 'gt',\n 'hex',\n 'if',\n 'index',\n 'int',\n 'ioctl',\n 'join',\n 'keys',\n 'kill',\n 'last',\n 'lc',\n 'lcfirst',\n 'length',\n 'link',\n 'listen',\n 'local',\n 'localtime',\n 'log',\n 'lstat',\n 'lt',\n 'ma',\n 'map',\n 'method',\n 'mkdir',\n 'msgctl',\n 'msgget',\n 'msgrcv',\n 'msgsnd',\n 'my',\n 'ne',\n 'next',\n 'no',\n 'not',\n 'oct',\n 'open',\n 'opendir',\n 'or',\n 'ord',\n 'our',\n 'pack',\n 'package',\n 'pipe',\n 'pop',\n 'pos',\n 'print',\n 'printf',\n 'prototype',\n 'push',\n 'q|0',\n 'qq',\n 'quotemeta',\n 'qw',\n 'qx',\n 'rand',\n 'read',\n 'readdir',\n 'readline',\n 'readlink',\n 'readpipe',\n 'recv',\n 'redo',\n 'ref',\n 'rename',\n 'require',\n 'reset',\n 'return',\n 'reverse',\n 'rewinddir',\n 'rindex',\n 'rmdir',\n 'say',\n 'scalar',\n 'seek',\n 'seekdir',\n 'select',\n 'semctl',\n 'semget',\n 'semop',\n 'send',\n 'setgrent',\n 'sethostent',\n 'setnetent',\n 'setpgrp',\n 'setpriority',\n 'setprotoent',\n 'setpwent',\n 'setservent',\n 'setsockopt',\n 'shift',\n 'shmctl',\n 'shmget',\n 'shmread',\n 'shmwrite',\n 'shutdown',\n 'sin',\n 'sleep',\n 'socket',\n 'socketpair',\n 'sort',\n 'splice',\n 'split',\n 'sprintf',\n 'sqrt',\n 'srand',\n 'stat',\n 'state',\n 'study',\n 'sub',\n 'substr',\n 'symlink',\n 'syscall',\n 'sysopen',\n 'sysread',\n 'sysseek',\n 'system',\n 'syswrite',\n 'tell',\n 'telldir',\n 'tie',\n 'tied',\n 'time',\n 'times',\n 'tr',\n 'truncate',\n 'uc',\n 'ucfirst',\n 'umask',\n 'undef',\n 'unless',\n 'unlink',\n 'unpack',\n 'unshift',\n 'untie',\n 'until',\n 'use',\n 'utime',\n 'values',\n 'vec',\n 'wait',\n 'waitpid',\n 'wantarray',\n 'warn',\n 'when',\n 'while',\n 'write',\n 'x|0',\n 'xor',\n 'y|0'\n ];\n\n // https://perldoc.perl.org/perlre#Modifiers\n const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12\n const PERL_KEYWORDS = {\n $pattern: /[\\w.]+/,\n keyword: KEYWORDS.join(\" \")\n };\n const SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{',\n end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n const METHOD = {\n begin: /->\\{/,\n end: /\\}/\n // contains defined later\n };\n const ATTR = {\n scope: 'attr',\n match: /\\s+:\\s*\\w+(\\s*\\(.*?\\))?/,\n };\n const VAR = {\n scope: 'variable',\n variants: [\n { begin: /\\$\\d/ },\n { begin: regex.concat(\n /[$%@](?!\")(\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z])(?![@$%])`\n )\n },\n {\n // Only $= is a special Perl variable and one can't declare @= or %=.\n begin: /[$%@](?!\")[^\\s\\w{=]|\\$=/,\n relevance: 0\n }\n ],\n contains: [ ATTR ],\n };\n const NUMBER = {\n className: 'number',\n variants: [\n // decimal numbers:\n // include the case where a number starts with a dot (eg. .9), and\n // the leading 0? avoids mixing the first and second match on 0.x cases\n { match: /0?\\.[0-9][0-9_]+\\b/ },\n // include the special versioned number (eg. v5.38)\n { match: /\\bv?(0|[1-9][0-9_]*(\\.[0-9_]+)?|[1-9][0-9_]*)\\b/ },\n // non-decimal numbers:\n { match: /\\b0[0-7][0-7_]*\\b/ },\n { match: /\\b0x[0-9a-fA-F][0-9a-fA-F_]*\\b/ },\n { match: /\\b0b[0-1][0-1_]*\\b/ },\n ],\n relevance: 0\n };\n const STRING_CONTAINS = [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n VAR\n ];\n const REGEX_DELIMS = [\n /!/,\n /\\//,\n /\\|/,\n /\\?/,\n /'/,\n /\"/, // valid but infrequent and weird\n /#/ // valid but infrequent and weird\n ];\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_DOUBLE_RE = (prefix, open, close = '\\\\1') => {\n const middle = (close === '\\\\1')\n ? close\n : regex.concat(close, open);\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n middle,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_RE = (prefix, open, close) => {\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n const PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n /^=\\w/,\n /=cut/,\n { endsWithParent: true }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(',\n end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[',\n end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{',\n end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|',\n end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*<',\n end: '>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q',\n end: 'q',\n relevance: 5\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: '`',\n end: '`',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\\{\\w+\\}/,\n relevance: 0\n },\n {\n begin: '-?\\\\w+\\\\s*=>',\n relevance: 0\n }\n ]\n },\n NUMBER,\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n variants: [\n // allow matching common delimiters\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", regex.either(...REGEX_DELIMS, { capture: true })) },\n // and then paired delmis\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\(\", \"\\\\)\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\[\", \"\\\\]\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\{\", \"\\\\}\") }\n ],\n relevance: 2\n },\n {\n className: 'regexp',\n variants: [\n {\n // could be a comment in many languages so do not count\n // as relevant\n begin: /(m|qr)\\/\\//,\n relevance: 0\n },\n // prefix is optional with /regex/\n { begin: PAIRED_RE(\"(?:m|qr)?\", /\\//, /\\//) },\n // allow matching common delimiters\n { begin: PAIRED_RE(\"m|qr\", regex.either(...REGEX_DELIMS, { capture: true }), /\\1/) },\n // allow common paired delmins\n { begin: PAIRED_RE(\"m|qr\", /\\(/, /\\)/) },\n { begin: PAIRED_RE(\"m|qr\", /\\[/, /\\]/) },\n { begin: PAIRED_RE(\"m|qr\", /\\{/, /\\}/) }\n ]\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub method',\n end: '(\\\\s*\\\\(.*?\\\\))?[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR, NUMBER ]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n name: 'Perl',\n aliases: [\n 'pl',\n 'pm'\n ],\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n}\n\nexport { perl as default };\n","/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(\n /[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/,\n NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(\n /(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/,\n NOT_PERL_ETC);\n const UPCASE_NAME_RE = regex.concat(\n /[A-Z]+/,\n NOT_PERL_ETC);\n const VARIABLE = {\n scope: 'variable',\n match: '\\\\$+' + IDENT_RE,\n };\n const PREPROCESSOR = {\n scope: \"meta\",\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?=/ },\n // less relevant per PSR-1 which says not to use short-tags\n { begin: /<\\?/, relevance: 0.1 },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n scope: 'subst',\n variants: [\n { begin: /\\$\\w+/ },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; },\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); },\n };\n\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*'(\\w+)'\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = '[ \\t\\n]';\n const STRING = {\n scope: 'string',\n variants: [\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC,\n NOWDOC\n ]\n };\n const NUMBER = {\n scope: 'number',\n variants: [\n { begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const LITERALS = [\n \"false\",\n \"null\",\n \"true\"\n ];\n const KWS = [\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n \"__CLASS__\",\n \"__DIR__\",\n \"__FILE__\",\n \"__FUNCTION__\",\n \"__COMPILER_HALT_OFFSET__\",\n \"__LINE__\",\n \"__METHOD__\",\n \"__NAMESPACE__\",\n \"__TRAIT__\",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n \"die\",\n \"echo\",\n \"exit\",\n \"include\",\n \"include_once\",\n \"print\",\n \"require\",\n \"require_once\",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n \"array\",\n \"abstract\",\n \"and\",\n \"as\",\n \"binary\",\n \"bool\",\n \"boolean\",\n \"break\",\n \"callable\",\n \"case\",\n \"catch\",\n \"class\",\n \"clone\",\n \"const\",\n \"continue\",\n \"declare\",\n \"default\",\n \"do\",\n \"double\",\n \"else\",\n \"elseif\",\n \"empty\",\n \"enddeclare\",\n \"endfor\",\n \"endforeach\",\n \"endif\",\n \"endswitch\",\n \"endwhile\",\n \"enum\",\n \"eval\",\n \"extends\",\n \"final\",\n \"finally\",\n \"float\",\n \"for\",\n \"foreach\",\n \"from\",\n \"global\",\n \"goto\",\n \"if\",\n \"implements\",\n \"instanceof\",\n \"insteadof\",\n \"int\",\n \"integer\",\n \"interface\",\n \"isset\",\n \"iterable\",\n \"list\",\n \"match|0\",\n \"mixed\",\n \"new\",\n \"never\",\n \"object\",\n \"or\",\n \"private\",\n \"protected\",\n \"public\",\n \"readonly\",\n \"real\",\n \"return\",\n \"string\",\n \"switch\",\n \"throw\",\n \"trait\",\n \"try\",\n \"unset\",\n \"use\",\n \"var\",\n \"void\",\n \"while\",\n \"xor\",\n \"yield\"\n ];\n\n const BUILT_INS = [\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n \"Error|0\",\n \"AppendIterator\",\n \"ArgumentCountError\",\n \"ArithmeticError\",\n \"ArrayIterator\",\n \"ArrayObject\",\n \"AssertionError\",\n \"BadFunctionCallException\",\n \"BadMethodCallException\",\n \"CachingIterator\",\n \"CallbackFilterIterator\",\n \"CompileError\",\n \"Countable\",\n \"DirectoryIterator\",\n \"DivisionByZeroError\",\n \"DomainException\",\n \"EmptyIterator\",\n \"ErrorException\",\n \"Exception\",\n \"FilesystemIterator\",\n \"FilterIterator\",\n \"GlobIterator\",\n \"InfiniteIterator\",\n \"InvalidArgumentException\",\n \"IteratorIterator\",\n \"LengthException\",\n \"LimitIterator\",\n \"LogicException\",\n \"MultipleIterator\",\n \"NoRewindIterator\",\n \"OutOfBoundsException\",\n \"OutOfRangeException\",\n \"OuterIterator\",\n \"OverflowException\",\n \"ParentIterator\",\n \"ParseError\",\n \"RangeException\",\n \"RecursiveArrayIterator\",\n \"RecursiveCachingIterator\",\n \"RecursiveCallbackFilterIterator\",\n \"RecursiveDirectoryIterator\",\n \"RecursiveFilterIterator\",\n \"RecursiveIterator\",\n \"RecursiveIteratorIterator\",\n \"RecursiveRegexIterator\",\n \"RecursiveTreeIterator\",\n \"RegexIterator\",\n \"RuntimeException\",\n \"SeekableIterator\",\n \"SplDoublyLinkedList\",\n \"SplFileInfo\",\n \"SplFileObject\",\n \"SplFixedArray\",\n \"SplHeap\",\n \"SplMaxHeap\",\n \"SplMinHeap\",\n \"SplObjectStorage\",\n \"SplObserver\",\n \"SplPriorityQueue\",\n \"SplQueue\",\n \"SplStack\",\n \"SplSubject\",\n \"SplTempFileObject\",\n \"TypeError\",\n \"UnderflowException\",\n \"UnexpectedValueException\",\n \"UnhandledMatchError\",\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n \"ArrayAccess\",\n \"BackedEnum\",\n \"Closure\",\n \"Fiber\",\n \"Generator\",\n \"Iterator\",\n \"IteratorAggregate\",\n \"Serializable\",\n \"Stringable\",\n \"Throwable\",\n \"Traversable\",\n \"UnitEnum\",\n \"WeakReference\",\n \"WeakMap\",\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n \"Directory\",\n \"__PHP_Incomplete_Class\",\n \"parent\",\n \"php_user_filter\",\n \"self\",\n \"static\",\n \"stdClass\"\n ];\n\n /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */\n const dualCase = (items) => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS,\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = (items) => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n\n const CONSTRUCTOR_CALL = { variants: [\n {\n match: [\n /new/,\n regex.concat(WHITESPACE, \"+\"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat(\"(?!\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n PASCAL_CASE_CLASS_NAME_RE,\n ],\n scope: {\n 1: \"keyword\",\n 4: \"title.class\",\n },\n }\n ] };\n\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, \"\\\\b(?!\\\\()\");\n\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [\n {\n match: [\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: { 2: \"variable.constant\", },\n },\n {\n match: [\n /::/,\n /class/,\n ],\n scope: { 2: \"variable.language\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.constant\",\n },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n \"::\",\n regex.lookahead(/(?!class\\b)/)\n ),\n ],\n scope: { 1: \"title.class\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n /::/,\n /class/,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.language\",\n },\n }\n ] };\n\n const NAMED_ARGUMENT = {\n scope: 'attr',\n match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)),\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n NAMED_ARGUMENT,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ],\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [\n /\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat(\"(?!fn\\\\b|function\\\\b|\", normalizeKeywords(KWS).join(\"\\\\b|\"), \"|\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n IDENT_RE,\n regex.concat(WHITESPACE, \"*\"),\n regex.lookahead(/(?=\\()/)\n ],\n scope: { 3: \"title.function.invoke\", },\n contains: [ PARAMS_MODE ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n\n const ATTRIBUTE_CONTAINS = [\n NAMED_ARGUMENT,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ];\n\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*\\\\?/,\n regex.either(\n PASCAL_CASE_CLASS_NAME_RE,\n UPCASE_NAME_RE\n )\n ),\n beginScope: \"meta\",\n end: /]/,\n endScope: \"meta\",\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n {\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n 'self',\n ...ATTRIBUTE_CONTAINS,\n ]\n },\n ...ATTRIBUTE_CONTAINS,\n {\n scope: 'meta',\n variants: [\n { match: PASCAL_CASE_CLASS_NAME_RE },\n { match: UPCASE_NAME_RE }\n ]\n }\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$'),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [\n {\n scope: 'doctag',\n match: '@[A-Za-z]+'\n }\n ] }\n ),\n {\n match: /__halt_compiler\\(\\);/,\n keywords: '__halt_compiler',\n starts: {\n scope: \"comment\",\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n match: /\\?>/,\n scope: \"meta\",\n endsParent: true\n }\n ]\n }\n },\n PREPROCESSOR,\n {\n scope: 'variable.language',\n match: /\\$this\\b/\n },\n VARIABLE,\n FUNCTION_INVOKE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n {\n match: [\n /const/,\n /\\s/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"variable.constant\",\n },\n },\n CONSTRUCTOR_CALL,\n {\n scope: 'function',\n relevance: 0,\n beginKeywords: 'fn function',\n end: /[;{]/,\n excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [\n { beginKeywords: 'use', },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: '=>', // No markup, just a relevance booster\n endsParent: true\n },\n {\n scope: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n ATTRIBUTES,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n },\n ]\n },\n {\n scope: 'class',\n variants: [\n {\n beginKeywords: \"enum\",\n illegal: /[($\"]/\n },\n {\n beginKeywords: \"class interface trait\",\n illegal: /[:($\"]/\n }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n // both use and namespace still use \"old style\" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: \"title.class\" }) ]\n },\n {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: \"keyword\"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n STRING,\n NUMBER,\n ]\n };\n}\n\nexport { php as default };\n","/*\nLanguage: PHP Template\nRequires: xml.js, php.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nWebsite: https://www.php.net\nCategory: common\n*/\n\nfunction phpTemplate(hljs) {\n return {\n name: \"PHP template\",\n subLanguage: 'xml',\n contains: [\n {\n begin: /<\\?(php|=)?/,\n end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {\n begin: '/\\\\*',\n end: '\\\\*/',\n skip: true\n },\n {\n begin: 'b\"',\n end: '\"',\n skip: true\n },\n {\n begin: 'b\\'',\n end: '\\'',\n skip: true\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n })\n ]\n }\n ]\n };\n}\n\nexport { phpTemplate as default };\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nexport { plaintext as default };\n","/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/\n\nfunction python(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /[\\p{XID_Start}_]\\p{XID_Continue}*/u;\n const RESERVED_WORDS = [\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'case',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'match',\n 'nonlocal|10',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield'\n ];\n\n const BUILT_INS = [\n '__import__',\n 'abs',\n 'all',\n 'any',\n 'ascii',\n 'bin',\n 'bool',\n 'breakpoint',\n 'bytearray',\n 'bytes',\n 'callable',\n 'chr',\n 'classmethod',\n 'compile',\n 'complex',\n 'delattr',\n 'dict',\n 'dir',\n 'divmod',\n 'enumerate',\n 'eval',\n 'exec',\n 'filter',\n 'float',\n 'format',\n 'frozenset',\n 'getattr',\n 'globals',\n 'hasattr',\n 'hash',\n 'help',\n 'hex',\n 'id',\n 'input',\n 'int',\n 'isinstance',\n 'issubclass',\n 'iter',\n 'len',\n 'list',\n 'locals',\n 'map',\n 'max',\n 'memoryview',\n 'min',\n 'next',\n 'object',\n 'oct',\n 'open',\n 'ord',\n 'pow',\n 'print',\n 'property',\n 'range',\n 'repr',\n 'reversed',\n 'round',\n 'set',\n 'setattr',\n 'slice',\n 'sorted',\n 'staticmethod',\n 'str',\n 'sum',\n 'super',\n 'tuple',\n 'type',\n 'vars',\n 'zip'\n ];\n\n const LITERALS = [\n '__debug__',\n 'Ellipsis',\n 'False',\n 'None',\n 'NotImplemented',\n 'True'\n ];\n\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n\n const PROMPT = {\n className: 'meta',\n begin: /^(>>>|\\.\\.\\.) /\n };\n\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = '[0-9](_?[0-9])*';\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n // Whitespace after a number (or any lexical token) is needed only if its absence\n // would change the tokenization\n // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens\n // We deviate slightly, requiring a word boundary or a keyword\n // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`)\n const lookahead = `\\\\b|${RESERVED_WORDS.join('|')}`;\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[bB](_?[01])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})`\n },\n\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ](?=${lookahead})`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: regex.lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n { // prevent keywords from coloring `type`\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n\n return {\n name: 'Python',\n aliases: [\n 'py',\n 'gyp',\n 'ipython'\n ],\n unicodeRegex: true,\n keywords: KEYWORDS,\n illegal: /(<\\/|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n scope: 'variable.language',\n match: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n { match: /\\bor\\b/, scope: \"keyword\" },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n match: [\n /\\bdef/, /\\s+/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [ PARAMS ]\n },\n {\n variants: [\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE, /\\s*/,\n /\\(\\s*/, IDENT_RE,/\\s*\\)/\n ],\n },\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE\n ],\n }\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 6: \"title.class.inherited\",\n }\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\nexport { python as default };\n","/*\nLanguage: Python REPL\nRequires: python.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nCategory: common\n*/\n\nfunction pythonRepl(hljs) {\n return {\n aliases: [ 'pycon' ],\n contains: [\n {\n className: 'meta.prompt',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'python'\n }\n },\n variants: [\n { begin: /^>>>(?=[ ]|$)/ },\n { begin: /^\\.\\.\\.(?=[ ]|$)/ }\n ]\n }\n ]\n };\n}\n\nexport { pythonRepl as default };\n","/*\nLanguage: R\nDescription: R is a free software environment for statistical computing and graphics.\nAuthor: Joe Cheng <joe@rstudio.org>\nContributors: Konrad Rudolph <konrad.rudolph@gmail.com>\nWebsite: https://www.r-project.org\nCategory: common,scientific\n*/\n\n/** @type LanguageFn */\nfunction r(hljs) {\n const regex = hljs.regex;\n // Identifiers in R cannot start with `_`, but they can start with `.` if it\n // is not immediately followed by a digit.\n // R also supports quoted identifiers, which are near-arbitrary sequences\n // delimited by backticks (`…`), which may contain escape sequences. These are\n // handled in a separate mode. See `test/markup/r/names.txt` for examples.\n // FIXME: Support Unicode identifiers.\n const IDENT_RE = /(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;\n const NUMBER_TYPES_RE = regex.either(\n // Special case: only hexadecimal binary powers can contain fractions\n /0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/,\n // Hexadecimal numbers without fraction and optional binary power\n /0[xX][0-9a-fA-F]+(?:[pP][+-]?\\d+)?[Li]?/,\n // Decimal numbers\n /(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?[Li]?/\n );\n const OPERATORS_RE = /[=!<>:]=|\\|\\||&&|:::?|<-|<<-|->>|->|\\|>|[-+*\\/?!$&|:<=>@^~]|\\*\\*/;\n const PUNCTUATION_RE = regex.either(\n /[()]/,\n /[{}]/,\n /\\[\\[/,\n /[[\\]]/,\n /\\\\/,\n /,/\n );\n\n return {\n name: 'R',\n\n keywords: {\n $pattern: IDENT_RE,\n keyword:\n 'function if in break next repeat else for while',\n literal:\n 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 '\n + 'NA_character_|10 NA_complex_|10',\n built_in:\n // Builtin constants\n 'LETTERS letters month.abb month.name pi T F '\n // Primitive functions\n // These are all the functions in `base` that are implemented as a\n // `.Primitive`, minus those functions that are also keywords.\n + 'abs acos acosh all any anyNA Arg as.call as.character '\n + 'as.complex as.double as.environment as.integer as.logical '\n + 'as.null.default as.numeric as.raw asin asinh atan atanh attr '\n + 'attributes baseenv browser c call ceiling class Conj cos cosh '\n + 'cospi cummax cummin cumprod cumsum digamma dim dimnames '\n + 'emptyenv exp expression floor forceAndCall gamma gc.time '\n + 'globalenv Im interactive invisible is.array is.atomic is.call '\n + 'is.character is.complex is.double is.environment is.expression '\n + 'is.finite is.function is.infinite is.integer is.language '\n + 'is.list is.logical is.matrix is.na is.name is.nan is.null '\n + 'is.numeric is.object is.pairlist is.raw is.recursive is.single '\n + 'is.symbol lazyLoadDBfetch length lgamma list log max min '\n + 'missing Mod names nargs nzchar oldClass on.exit pos.to.env '\n + 'proc.time prod quote range Re rep retracemem return round '\n + 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt '\n + 'standardGeneric substitute sum switch tan tanh tanpi tracemem '\n + 'trigamma trunc unclass untracemem UseMethod xtfrm',\n },\n\n contains: [\n // Roxygen comments\n hljs.COMMENT(\n /#'/,\n /$/,\n { contains: [\n {\n // Handle `@examples` separately to cause all subsequent code\n // until the next `@`-tag on its own line to be kept as-is,\n // preventing highlighting. This code is example R code, so nested\n // doctags shouldn’t be treated as such. See\n // `test/markup/r/roxygen.txt` for an example.\n scope: 'doctag',\n match: /@examples/,\n starts: {\n end: regex.lookahead(regex.either(\n // end if another doc comment\n /\\n^#'\\s*(?=@[a-zA-Z]+)/,\n // or a line with no comment\n /\\n^(?!#')/\n )),\n endsParent: true\n }\n },\n {\n // Handle `@param` to highlight the parameter name following\n // after.\n scope: 'doctag',\n begin: '@param',\n end: /$/,\n contains: [\n {\n scope: 'variable',\n variants: [\n { match: IDENT_RE },\n { match: /`(?:\\\\.|[^`\\\\])+`/ }\n ],\n endsParent: true\n }\n ]\n },\n {\n scope: 'doctag',\n match: /@[a-zA-Z]+/\n },\n {\n scope: 'keyword',\n match: /\\\\[a-zA-Z]+/\n }\n ] }\n ),\n\n hljs.HASH_COMMENT_MODE,\n\n {\n scope: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\(/,\n end: /\\)(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\{/,\n end: /\\}(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\[/,\n end: /\\](-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\(/,\n end: /\\)(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\{/,\n end: /\\}(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\[/,\n end: /\\](-*)'/\n }),\n {\n begin: '\"',\n end: '\"',\n relevance: 0\n },\n {\n begin: \"'\",\n end: \"'\",\n relevance: 0\n }\n ],\n },\n\n // Matching numbers immediately following punctuation and operators is\n // tricky since we need to look at the character ahead of a number to\n // ensure the number is not part of an identifier, and we cannot use\n // negative look-behind assertions. So instead we explicitly handle all\n // possible combinations of (operator|punctuation), number.\n // TODO: replace with negative look-behind when available\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/ },\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/ },\n // { begin: /(?<![a-zA-Z0-9._])(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/ }\n {\n relevance: 0,\n variants: [\n {\n scope: {\n 1: 'operator',\n 2: 'number'\n },\n match: [\n OPERATORS_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: 'operator',\n 2: 'number'\n },\n match: [\n /%[^%]*%/,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: 'punctuation',\n 2: 'number'\n },\n match: [\n PUNCTUATION_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: { 2: 'number' },\n match: [\n /[^a-zA-Z0-9._]|^/, // not part of an identifier, or start of document\n NUMBER_TYPES_RE\n ]\n }\n ]\n },\n\n // Operators/punctuation when they're not directly followed by numbers\n {\n // Relevance boost for the most common assignment form.\n scope: { 3: 'operator' },\n match: [\n IDENT_RE,\n /\\s+/,\n /<-/,\n /\\s+/\n ]\n },\n\n {\n scope: 'operator',\n relevance: 0,\n variants: [\n { match: OPERATORS_RE },\n { match: /%[^%]*%/ }\n ]\n },\n\n {\n scope: 'punctuation',\n relevance: 0,\n match: PUNCTUATION_RE\n },\n\n {\n // Escaped identifier\n begin: '`',\n end: '`',\n contains: [ { begin: /\\\\./ } ]\n }\n ]\n };\n}\n\nexport { r as default };\n","/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common, scripting\n*/\n\nfunction ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(\n /\\b([A-Z]+[a-z0-9]+)+/,\n // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/,\n )\n ;\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\n \"include\",\n \"extend\",\n \"prepend\",\n \"public\",\n \"private\",\n \"protected\",\n \"raise\",\n \"throw\"\n ];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\n \"__FILE__\",\n \"__LINE__\",\n \"__ENCODING__\"\n ],\n \"variable.language\": [\n \"self\",\n \"super\",\n ],\n keyword: [\n \"alias\",\n \"and\",\n \"begin\",\n \"BEGIN\",\n \"break\",\n \"case\",\n \"class\",\n \"defined\",\n \"do\",\n \"else\",\n \"elsif\",\n \"end\",\n \"END\",\n \"ensure\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"require\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"then\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n ...PSEUDO_KWS\n ],\n built_in: [\n \"proc\",\n \"lambda\",\n \"attr_accessor\",\n \"attr_reader\",\n \"attr_writer\",\n \"define_method\",\n \"private_constant\",\n \"module_function\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"nil\"\n ]\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n { contains: [ YARDOCTAG ] }\n ),\n hljs.COMMENT(\n '^=begin',\n '^=end',\n {\n contains: [ YARDOCTAG ],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE)\n ];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n { begin: /\\B\\?(\\\\\\d{1,3})/ },\n { begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/ },\n { begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/ },\n { begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\?\\S/ },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(\n /<<[-~]?'?/,\n regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)\n ),\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n { begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b` },\n\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n { begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\" },\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\" },\n\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n { begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\" }\n ]\n };\n\n const PARAMS = {\n variants: [\n {\n match: /\\(\\)/,\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS,\n }\n ]\n };\n\n const INCLUDE_EXTEND = {\n match: [\n /(include|extend)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const CLASS_DEFINITION = {\n variants: [\n {\n match: [\n /class\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\s+<\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n },\n {\n match: [\n /\\b(class|module)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n }\n ],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n const METHOD_DEFINITION = {\n match: [\n /def/, /\\s+/,\n RUBY_METHOD_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n const OBJECT_CREATION = {\n relevance: 0,\n match: [\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\.new[. (]/\n ],\n scope: {\n 1: \"title.class\"\n }\n };\n\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n CLASS_DEFINITION,\n INCLUDE_EXTEND,\n OBJECT_CREATION,\n UPPER_CASE_CONSTANT,\n CLASS_REFERENCE,\n METHOD_DEFINITION,\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::' },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [\n STRING,\n { begin: RUBY_METHOD_RE }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: 'params',\n begin: /\\|(?!=)/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0, // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n },\n {\n begin: '%r!',\n end: '![a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta.prompt',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n COMMENT_MODES.unshift(IRB_OBJECT);\n\n return {\n name: 'Ruby',\n aliases: [\n 'rb',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb'\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [ hljs.SHEBANG({ binary: \"ruby\" }) ]\n .concat(IRB_DEFAULT)\n .concat(COMMENT_MODES)\n .concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\nexport { ruby as default };\n","/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/\n\n/** @type LanguageFn */\n\nfunction rust(hljs) {\n const regex = hljs.regex;\n // ============================================\n // Added to support the r# keyword, which is a raw identifier in Rust.\n const RAW_IDENTIFIER = /(r#)?/;\n const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE);\n const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE);\n // ============================================\n const FUNCTION_INVOKE = {\n className: \"title.function.invoke\",\n relevance: 0,\n begin: regex.concat(\n /\\b/,\n /(?!let|for|while|if|else|match\\b)/,\n IDENT_RE,\n regex.lookahead(/\\s*\\(/))\n };\n const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n const KEYWORDS = [\n \"abstract\",\n \"as\",\n \"async\",\n \"await\",\n \"become\",\n \"box\",\n \"break\",\n \"const\",\n \"continue\",\n \"crate\",\n \"do\",\n \"dyn\",\n \"else\",\n \"enum\",\n \"extern\",\n \"false\",\n \"final\",\n \"fn\",\n \"for\",\n \"if\",\n \"impl\",\n \"in\",\n \"let\",\n \"loop\",\n \"macro\",\n \"match\",\n \"mod\",\n \"move\",\n \"mut\",\n \"override\",\n \"priv\",\n \"pub\",\n \"ref\",\n \"return\",\n \"self\",\n \"Self\",\n \"static\",\n \"struct\",\n \"super\",\n \"trait\",\n \"true\",\n \"try\",\n \"type\",\n \"typeof\",\n \"union\",\n \"unsafe\",\n \"unsized\",\n \"use\",\n \"virtual\",\n \"where\",\n \"while\",\n \"yield\"\n ];\n const LITERALS = [\n \"true\",\n \"false\",\n \"Some\",\n \"None\",\n \"Ok\",\n \"Err\"\n ];\n const BUILTINS = [\n // functions\n 'drop ',\n // traits\n \"Copy\",\n \"Send\",\n \"Sized\",\n \"Sync\",\n \"Drop\",\n \"Fn\",\n \"FnMut\",\n \"FnOnce\",\n \"ToOwned\",\n \"Clone\",\n \"Debug\",\n \"PartialEq\",\n \"PartialOrd\",\n \"Eq\",\n \"Ord\",\n \"AsRef\",\n \"AsMut\",\n \"Into\",\n \"From\",\n \"Default\",\n \"Iterator\",\n \"Extend\",\n \"IntoIterator\",\n \"DoubleEndedIterator\",\n \"ExactSizeIterator\",\n \"SliceConcatExt\",\n \"ToString\",\n // macros\n \"assert!\",\n \"assert_eq!\",\n \"bitflags!\",\n \"bytes!\",\n \"cfg!\",\n \"col!\",\n \"concat!\",\n \"concat_idents!\",\n \"debug_assert!\",\n \"debug_assert_eq!\",\n \"env!\",\n \"eprintln!\",\n \"panic!\",\n \"file!\",\n \"format!\",\n \"format_args!\",\n \"include_bytes!\",\n \"include_str!\",\n \"line!\",\n \"local_data_key!\",\n \"module_path!\",\n \"option_env!\",\n \"print!\",\n \"println!\",\n \"select!\",\n \"stringify!\",\n \"try!\",\n \"unimplemented!\",\n \"unreachable!\",\n \"vec!\",\n \"write!\",\n \"writeln!\",\n \"macro_rules!\",\n \"assert_ne!\",\n \"debug_assert_ne!\"\n ];\n const TYPES = [\n \"i8\",\n \"i16\",\n \"i32\",\n \"i64\",\n \"i128\",\n \"isize\",\n \"u8\",\n \"u16\",\n \"u32\",\n \"u64\",\n \"u128\",\n \"usize\",\n \"f32\",\n \"f64\",\n \"str\",\n \"char\",\n \"bool\",\n \"Box\",\n \"Option\",\n \"Result\",\n \"String\",\n \"Vec\"\n ];\n return {\n name: 'Rust',\n aliases: [ 'rs' ],\n keywords: {\n $pattern: hljs.IDENT_RE + '!?',\n type: TYPES,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTINS\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', { contains: [ 'self' ] }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: /b?\"/,\n illegal: null\n }),\n {\n className: 'symbol',\n // negative lookahead to avoid matching `'`\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*(?!')/\n },\n {\n scope: 'string',\n variants: [\n { begin: /b?r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n {\n begin: /b?'/,\n end: /'/,\n contains: [\n {\n scope: \"char.escape\",\n match: /\\\\('|\\w|x\\w{2}|u\\w{4}|U\\w{8})/\n }\n ]\n }\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'\n + NUMBER_SUFFIX }\n ],\n relevance: 0\n },\n {\n begin: [\n /fn/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n },\n {\n className: 'meta',\n begin: '#!?\\\\[',\n end: '\\\\]',\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n }\n ]\n },\n {\n begin: [\n /let/,\n /\\s+/,\n /(?:mut\\s+)?/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"keyword\",\n 4: \"variable\"\n }\n },\n // must come before impl/for rule later\n {\n begin: [\n /for/,\n /\\s+/,\n UNDERSCORE_IDENT_RE,\n /\\s+/,\n /in/\n ],\n className: {\n 1: \"keyword\",\n 3: \"variable\",\n 5: \"keyword\"\n }\n },\n {\n begin: [\n /type/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: [\n /(?:trait|enum|struct|union|impl|for)/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {\n keyword: \"Self\",\n built_in: BUILTINS,\n type: TYPES\n }\n },\n {\n className: \"punctuation\",\n begin: '->'\n },\n FUNCTION_INVOKE\n ]\n };\n}\n\nexport { rust as default };\n","/*\nLanguage: Shell Session\nRequires: bash.js\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction shell(hljs) {\n return {\n name: 'Shell Session',\n aliases: [\n 'console',\n 'shellsession'\n ],\n contains: [\n {\n className: 'meta.prompt',\n // We cannot add \\s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.\n // For instance, in the following example, it would match \"echo /path/to/home >\" as a prompt:\n // echo /path/to/home > t.exe\n begin: /^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#][ ]?/,\n starts: {\n end: /[^\\\\](?=\\s*$)/,\n subLanguage: 'bash'\n }\n }\n ]\n };\n}\n\nexport { shell as default };\n","/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */\n\n/*\n\nGoals:\n\nSQL is intended to highlight basic/common SQL keywords and expressions\n\n- If pretty much every single SQL server includes supports, then it's a canidate.\n- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL,\n PostgreSQL) although the list of data types is purposely a bit more expansive.\n- For more specific SQL grammars please see:\n - PostgreSQL and PL/pgSQL - core\n - T-SQL - https://github.com/highlightjs/highlightjs-tsql\n - sql_more (core)\n\n */\n\nfunction sql(hljs) {\n const regex = hljs.regex;\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const STRING = {\n scope: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ { match: /''/ } ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [ { match: /\"\"/ } ]\n };\n\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n\n const TYPES = [\n 'bigint',\n 'binary',\n 'blob',\n 'boolean',\n 'char',\n 'character',\n 'clob',\n 'date',\n 'dec',\n 'decfloat',\n 'decimal',\n 'float',\n 'int',\n 'integer',\n 'interval',\n 'nchar',\n 'nclob',\n 'national',\n 'numeric',\n 'real',\n 'row',\n 'smallint',\n 'time',\n 'timestamp',\n 'varchar',\n 'varying', // modifier (character varying)\n 'varbinary'\n ];\n\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update\",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\",\n ];\n\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\",\n ];\n\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n\n const FUNCTIONS = RESERVED_FUNCTIONS;\n\n const KEYWORDS = [\n ...RESERVED_WORDS,\n ...NON_RESERVED_WORDS\n ].filter((keyword) => {\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n\n const VARIABLE = {\n scope: \"variable\",\n match: /@[a-z0-9][a-z0-9_]*/,\n };\n\n const OPERATOR = {\n scope: \"operator\",\n match: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0,\n };\n\n const FUNCTION_CALL = {\n match: regex.concat(/\\b/, regex.either(...FUNCTIONS), /\\s*\\(/),\n relevance: 0,\n keywords: { built_in: FUNCTIONS }\n };\n\n // turns a multi-word keyword combo into a regex that doesn't\n // care about extra whitespace etc.\n // input: \"START QUERY\"\n // output: /\\bSTART\\s+QUERY\\b/\n function kws_to_regex(list) {\n return regex.concat(\n /\\b/,\n regex.either(...list.map((kw) => {\n return kw.replace(/\\s+/, \"\\\\s+\")\n })),\n /\\b/\n )\n }\n\n const MULTI_WORD_KEYWORDS = {\n scope: \"keyword\",\n match: kws_to_regex(COMBOS),\n relevance: 0,\n };\n\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, {\n exceptions, when\n } = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item) => {\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n\n return {\n name: 'SQL',\n case_insensitive: true,\n // does not include {} or HTML tags `</`\n illegal: /[{}]|<\\//,\n keywords: {\n $pattern: /\\b[\\w\\.]+/,\n keyword:\n reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n scope: \"type\",\n match: kws_to_regex(MULTI_WORD_TYPES)\n },\n MULTI_WORD_KEYWORDS,\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\nexport { sql as default };\n","/*\nLanguage: Visual Basic .NET\nDescription: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework.\nAuthors: Poren Chiang <ren.chiang@gmail.com>, Jan Pilzer\nWebsite: https://docs.microsoft.com/dotnet/visual-basic/getting-started\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction vbnet(hljs) {\n const regex = hljs.regex;\n /**\n * Character Literal\n * Either a single character (\"a\"C) or an escaped double quote (\"\"\"\"C).\n */\n const CHARACTER = {\n className: 'string',\n begin: /\"(\"\"|[^/n])\"C\\b/\n };\n\n const STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n illegal: /\\n/,\n contains: [\n {\n // double quote escape\n begin: /\"\"/ }\n ]\n };\n\n /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */\n const MM_DD_YYYY = /\\d{1,2}\\/\\d{1,2}\\/\\d{4}/;\n const YYYY_MM_DD = /\\d{4}-\\d{1,2}-\\d{1,2}/;\n const TIME_12H = /(\\d|1[012])(:\\d+){0,2} *(AM|PM)/;\n const TIME_24H = /\\d{1,2}(:\\d{1,2}){1,2}/;\n const DATE = {\n className: 'literal',\n variants: [\n {\n // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date)\n begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / *#/) },\n {\n // #H:mm[:ss]# (24h Time)\n begin: regex.concat(/# */, TIME_24H, / *#/) },\n {\n // #h[:mm[:ss]] A# (12h Time)\n begin: regex.concat(/# */, TIME_12H, / *#/) },\n {\n // date plus time\n begin: regex.concat(\n /# */,\n regex.either(YYYY_MM_DD, MM_DD_YYYY),\n / +/,\n regex.either(TIME_12H, TIME_24H),\n / *#/\n ) }\n ]\n };\n\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // Float\n begin: /\\b\\d[\\d_]*((\\.[\\d_]+(E[+-]?[\\d_]+)?)|(E[+-]?[\\d_]+))[RFD@!#]?/ },\n {\n // Integer (base 10)\n begin: /\\b\\d[\\d_]*((U?[SIL])|[%&])?/ },\n {\n // Integer (base 16)\n begin: /&H[\\dA-F_]+((U?[SIL])|[%&])?/ },\n {\n // Integer (base 8)\n begin: /&O[0-7_]+((U?[SIL])|[%&])?/ },\n {\n // Integer (base 2)\n begin: /&B[01_]+((U?[SIL])|[%&])?/ }\n ]\n };\n\n const LABEL = {\n className: 'label',\n begin: /^\\w+:/\n };\n\n const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, { contains: [\n {\n className: 'doctag',\n begin: /<\\/?/,\n end: />/\n }\n ] });\n\n const COMMENT = hljs.COMMENT(null, /$/, { variants: [\n { begin: /'/ },\n {\n // TODO: Use multi-class for leading spaces\n begin: /([\\t ]|^)REM(?=\\s)/ }\n ] });\n\n const DIRECTIVES = {\n className: 'meta',\n // TODO: Use multi-class for indentation once available\n begin: /[\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\b/,\n end: /$/,\n keywords: { keyword:\n 'const disable else elseif enable end externalsource if region then' },\n contains: [ COMMENT ]\n };\n\n return {\n name: 'Visual Basic .NET',\n aliases: [ 'vb' ],\n case_insensitive: true,\n classNameAliases: { label: 'symbol' },\n keywords: {\n keyword:\n 'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' /* a-b */\n + 'call case catch class compare const continue custom declare default delegate dim distinct do ' /* c-d */\n + 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' /* e-f */\n + 'get global goto group handles if implements imports in inherits interface into iterator ' /* g-i */\n + 'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' /* j-m */\n + 'namespace narrowing new next notinheritable notoverridable ' /* n */\n + 'of off on operator option optional order overloads overridable overrides ' /* o */\n + 'paramarray partial preserve private property protected public ' /* p */\n + 'raiseevent readonly redim removehandler resume return ' /* r */\n + 'select set shadows shared skip static step stop structure strict sub synclock ' /* s */\n + 'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */,\n built_in:\n // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators\n 'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor '\n // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions\n + 'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort',\n type:\n // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types\n 'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort',\n literal: 'true false nothing'\n },\n illegal:\n '//|\\\\{|\\\\}|endif|gosub|variant|wend|^\\\\$ ' /* reserved deprecated keywords */,\n contains: [\n CHARACTER,\n STRING,\n DATE,\n NUMBER,\n LABEL,\n DOC_COMMENT,\n COMMENT,\n DIRECTIVES\n ]\n };\n}\n\nexport { vbnet as default };\n","/*\nLanguage: WebAssembly\nWebsite: https://webassembly.org\nDescription: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.\nCategory: web, common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction wasm(hljs) {\n hljs.regex;\n const BLOCK_COMMENT = hljs.COMMENT(/\\(;/, /;\\)/);\n BLOCK_COMMENT.contains.push(\"self\");\n const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);\n\n const KWS = [\n \"anyfunc\",\n \"block\",\n \"br\",\n \"br_if\",\n \"br_table\",\n \"call\",\n \"call_indirect\",\n \"data\",\n \"drop\",\n \"elem\",\n \"else\",\n \"end\",\n \"export\",\n \"func\",\n \"global.get\",\n \"global.set\",\n \"local.get\",\n \"local.set\",\n \"local.tee\",\n \"get_global\",\n \"get_local\",\n \"global\",\n \"if\",\n \"import\",\n \"local\",\n \"loop\",\n \"memory\",\n \"memory.grow\",\n \"memory.size\",\n \"module\",\n \"mut\",\n \"nop\",\n \"offset\",\n \"param\",\n \"result\",\n \"return\",\n \"select\",\n \"set_global\",\n \"set_local\",\n \"start\",\n \"table\",\n \"tee_local\",\n \"then\",\n \"type\",\n \"unreachable\"\n ];\n\n const FUNCTION_REFERENCE = {\n begin: [\n /(?:func|call|call_indirect)/,\n /\\s+/,\n /\\$[^\\s)]+/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n };\n\n const ARGUMENT = {\n className: \"variable\",\n begin: /\\$[\\w_]+/\n };\n\n const PARENS = {\n match: /(\\((?!;)|\\))+/,\n className: \"punctuation\",\n relevance: 0\n };\n\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n // borrowed from Prism, TODO: split out into variants\n match: /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/\n };\n\n const TYPE = {\n // look-ahead prevents us from gobbling up opcodes\n match: /(i32|i64|f32|f64)(?!\\.)/,\n className: \"type\"\n };\n\n const MATH_OPERATIONS = {\n className: \"keyword\",\n // borrowed from Prism, TODO: split out into variants\n match: /\\b(f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))\\b/\n };\n\n const OFFSET_ALIGN = {\n match: [\n /(?:offset|align)/,\n /\\s*/,\n /=/\n ],\n className: {\n 1: \"keyword\",\n 3: \"operator\"\n }\n };\n\n return {\n name: 'WebAssembly',\n keywords: {\n $pattern: /[\\w.]+/,\n keyword: KWS\n },\n contains: [\n LINE_COMMENT,\n BLOCK_COMMENT,\n OFFSET_ALIGN,\n ARGUMENT,\n PARENS,\n FUNCTION_REFERENCE,\n hljs.QUOTE_STRING_MODE,\n TYPE,\n MATH_OPERATIONS,\n NUMBER\n ]\n };\n}\n\nexport { wasm as default };\n","/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [ XML_ENTITIES ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [ XML_ENTITIES ]\n },\n { begin: /[^\\s\"'=<>`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n /<!--/,\n /-->/,\n { relevance: 10 }\n ),\n {\n begin: /<!\\[CDATA\\[/,\n end: /\\]\\]>/,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending bracket.\n */\n begin: /<style(?=\\s|>)/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: /<script(?=\\s|>)/,\n end: />/,\n keywords: { name: 'script' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/script>/,\n returnEnd: true,\n subLanguage: [\n 'javascript',\n 'handlebars',\n 'xml'\n ]\n }\n },\n // we need this for now for jSX\n {\n className: 'tag',\n begin: /<>|<\\/>/\n },\n // open tag\n {\n className: 'tag',\n begin: regex.concat(\n /</,\n regex.lookahead(regex.concat(\n TAG_NAME_RE,\n // <tag/>\n // <tag>\n // <tag ...\n regex.either(/\\/>/, />/, /\\s/)\n ))\n ),\n end: /\\/?>/,\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0,\n starts: TAG_INTERNALS\n }\n ]\n },\n // close tag\n {\n className: 'tag',\n begin: regex.concat(\n /<\\//,\n regex.lookahead(regex.concat(\n TAG_NAME_RE, />/\n ))\n ),\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0\n },\n {\n begin: />/,\n relevance: 0,\n endsParent: true\n }\n ]\n }\n ]\n };\n}\n\nexport { xml as default };\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n const LITERALS = 'true false yes no null';\n\n // YAML spec allows non-reserved URI characters in tags.\n const URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n const KEY = {\n className: 'attr',\n variants: [\n // added brackets support and special char support\n { begin: /[\\w*@][\\w*@ :()\\./-]*:(?=[ \\t]|$)/ },\n { // double quoted keys - with brackets and special char support\n begin: /\"[\\w*@][\\w*@ :()\\./-]*\":(?=[ \\t]|$)/ },\n { // single quoted keys - with brackets and special char support\n begin: /'[\\w*@][\\w*@ :()\\./-]*':(?=[ \\t]|$)/ },\n ]\n };\n \n const TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { // jinja templates Ansible\n begin: /\\{\\{/,\n end: /\\}\\}/\n },\n { // Ruby i18n\n begin: /%\\{/,\n end: /\\}/\n }\n ]\n };\n\n const SINGLE_QUOTE_STRING = {\n className: 'string',\n relevance: 0,\n begin: /'/,\n end: /'/,\n contains: [\n {\n match: /''/,\n scope: 'char.escape',\n relevance: 0\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /\\S+/ }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n const CONTAINER_STRING = hljs.inherit(STRING, { variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [\n {\n begin: /''/,\n relevance: 0\n }\n ]\n },\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /[^\\s,{}[\\]]+/ }\n ] });\n\n const DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n const TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n const FRACTION_RE = '(\\\\.[0-9]*)?';\n const ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n const TIMESTAMP = {\n className: 'number',\n begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n };\n\n const VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n const OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n const ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n\n const MODES = [\n KEY,\n {\n className: 'meta',\n begin: '^---\\\\s*$',\n relevance: 10\n },\n { // multi line string\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: 'string',\n begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // named tags\n className: 'type',\n begin: '!\\\\w+!' + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n { // verbatim tags\n className: 'type',\n begin: '!<' + URI_CHARACTERS + \">\"\n },\n { // primary tags\n className: 'type',\n begin: '!' + URI_CHARACTERS\n },\n { // secondary tags\n className: 'type',\n begin: '!!' + URI_CHARACTERS\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: '-(?=[ ]|$)',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: { literal: LITERALS }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE + '\\\\b',\n relevance: 0\n },\n OBJECT,\n ARRAY,\n SINGLE_QUOTE_STRING,\n STRING\n ];\n\n const VALUE_MODES = [ ...MODES ];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n\n return {\n name: 'YAML',\n case_insensitive: true,\n aliases: [ 'yml' ],\n contains: MODES\n };\n}\n\nexport { yaml as default };\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/core.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","/**\n * @import {ElementContent, Element, RootData, Root} from 'hast'\n * @import {Emitter, HLJSOptions as HljsOptions, HighlightResult, LanguageFn} from 'highlight.js'\n */\n\n/**\n * @typedef {Object} ExtraOptions\n * Extra fields.\n * @property {ReadonlyArray<string> | null | undefined} [subset]\n * List of allowed languages (default: all registered languages).\n *\n * @typedef Options\n * Configuration for `highlight`.\n * @property {string | null | undefined} [prefix='hljs-']\n * Class prefix (default: `'hljs-'`).\n *\n * @typedef {Options & ExtraOptions} AutoOptions\n * Configuration for `highlightAuto`.\n */\n\nimport {ok as assert} from 'devlop'\nimport HighlightJs from 'highlight.js/lib/core'\n\n/** @type {AutoOptions} */\nconst emptyOptions = {}\n\nconst defaultPrefix = 'hljs-'\n\n/**\n * Create a `lowlight` instance.\n *\n * @param {Readonly<Record<string, LanguageFn>> | null | undefined} [grammars]\n * Grammars to add (optional).\n * @returns\n * Lowlight.\n */\nexport function createLowlight(grammars) {\n const high = HighlightJs.newInstance()\n\n if (grammars) {\n register(grammars)\n }\n\n return {\n highlight,\n highlightAuto,\n listLanguages,\n register,\n registerAlias,\n registered\n }\n\n /**\n * Highlight `value` (code) as `language` (name).\n *\n * @example\n * ```js\n * import {common, createLowlight} from 'lowlight'\n *\n * const lowlight = createLowlight(common)\n *\n * console.log(lowlight.highlight('css', 'em { color: red }'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'css', relevance: 3}}\n * ```\n *\n * @param {string} language\n * Programming language name.\n * @param {string} value\n * Code to highlight.\n * @param {Readonly<Options> | null | undefined} [options={}]\n * Configuration (optional).\n * @returns {Root}\n * Tree; with the following `data` fields: `language` (`string`), detected\n * programming language name; `relevance` (`number`), how sure lowlight is\n * that the given code is in the language.\n */\n function highlight(language, value, options) {\n assert(typeof language === 'string', 'expected `string` as `name`')\n assert(typeof value === 'string', 'expected `string` as `value`')\n const settings = options || emptyOptions\n const prefix =\n typeof settings.prefix === 'string' ? settings.prefix : defaultPrefix\n\n if (!high.getLanguage(language)) {\n throw new Error('Unknown language: `' + language + '` is not registered')\n }\n\n // See: <https://github.com/highlightjs/highlight.js/issues/3621#issuecomment-1528841888>\n high.configure({__emitter: HastEmitter, classPrefix: prefix})\n\n const result = /** @type {HighlightResult & {_emitter: HastEmitter}} */ (\n high.highlight(value, {ignoreIllegals: true, language})\n )\n\n // `highlight.js` seems to use this (currently) for broken grammars, so let’s\n // keep it in there just to be sure.\n /* c8 ignore next 5 */\n if (result.errorRaised) {\n throw new Error('Could not highlight with `Highlight.js`', {\n cause: result.errorRaised\n })\n }\n\n const root = result._emitter.root\n\n // Cast because it is always defined.\n const data = /** @type {RootData} */ (root.data)\n\n data.language = result.language\n data.relevance = result.relevance\n\n return root\n }\n\n /**\n * Highlight `value` (code) and guess its programming language.\n *\n * @example\n * ```js\n * import {common, createLowlight} from 'lowlight'\n *\n * const lowlight = createLowlight(common)\n *\n * console.log(lowlight.highlightAuto('\"hello, \" + name + \"!\"'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'arduino', relevance: 2}}\n * ```\n *\n * @param {string} value\n * Code to highlight.\n * @param {Readonly<AutoOptions> | null | undefined} [options={}]\n * Configuration (optional).\n * @returns {Root}\n * Tree; with the following `data` fields: `language` (`string`), detected\n * programming language name; `relevance` (`number`), how sure lowlight is\n * that the given code is in the language.\n */\n function highlightAuto(value, options) {\n assert(typeof value === 'string', 'expected `string` as `value`')\n const settings = options || emptyOptions\n const subset = settings.subset || listLanguages()\n\n let index = -1\n let relevance = 0\n /** @type {Root | undefined} */\n let result\n\n while (++index < subset.length) {\n const name = subset[index]\n\n if (!high.getLanguage(name)) continue\n\n const current = highlight(name, value, options)\n\n if (\n current.data &&\n current.data.relevance !== undefined &&\n current.data.relevance > relevance\n ) {\n relevance = current.data.relevance\n result = current\n }\n }\n\n return (\n result || {\n type: 'root',\n children: [],\n data: {language: undefined, relevance}\n }\n )\n }\n\n /**\n * List registered languages.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import markdown from 'highlight.js/lib/languages/markdown'\n *\n * const lowlight = createLowlight()\n *\n * console.log(lowlight.listLanguages()) // => []\n *\n * lowlight.register({markdown})\n *\n * console.log(lowlight.listLanguages()) // => ['markdown']\n * ```\n *\n * @returns {Array<string>}\n * Names of registered language.\n */\n function listLanguages() {\n return high.listLanguages()\n }\n\n /**\n * Register languages.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import xml from 'highlight.js/lib/languages/xml'\n *\n * const lowlight = createLowlight()\n *\n * lowlight.register({xml})\n *\n * // Note: `html` is an alias for `xml`.\n * console.log(lowlight.highlight('html', '<em>Emphasis</em>'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'html', relevance: 2}}\n * ```\n *\n * @overload\n * @param {Readonly<Record<string, LanguageFn>>} grammars\n * @returns {undefined}\n *\n * @overload\n * @param {string} name\n * @param {LanguageFn} grammar\n * @returns {undefined}\n *\n * @param {Readonly<Record<string, LanguageFn>> | string} grammarsOrName\n * Grammars or programming language name.\n * @param {LanguageFn | undefined} [grammar]\n * Grammar, if with name.\n * @returns {undefined}\n * Nothing.\n */\n function register(grammarsOrName, grammar) {\n if (typeof grammarsOrName === 'string') {\n assert(grammar !== undefined, 'expected `grammar`')\n high.registerLanguage(grammarsOrName, grammar)\n } else {\n /** @type {string} */\n let name\n\n for (name in grammarsOrName) {\n if (Object.hasOwn(grammarsOrName, name)) {\n high.registerLanguage(name, grammarsOrName[name])\n }\n }\n }\n }\n\n /**\n * Register aliases.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import markdown from 'highlight.js/lib/languages/markdown'\n *\n * const lowlight = createLowlight()\n *\n * lowlight.register({markdown})\n *\n * // lowlight.highlight('mdown', '<em>Emphasis</em>')\n * // ^ would throw: Error: Unknown language: `mdown` is not registered\n *\n * lowlight.registerAlias({markdown: ['mdown', 'mkdn', 'mdwn', 'ron']})\n * lowlight.highlight('mdown', '<em>Emphasis</em>')\n * // ^ Works!\n * ```\n *\n * @overload\n * @param {Readonly<Record<string, ReadonlyArray<string> | string>>} aliases\n * @returns {undefined}\n *\n * @overload\n * @param {string} language\n * @param {ReadonlyArray<string> | string} alias\n * @returns {undefined}\n *\n * @param {Readonly<Record<string, ReadonlyArray<string> | string>> | string} aliasesOrName\n * Map of programming language names to one or more aliases, or programming\n * language name.\n * @param {ReadonlyArray<string> | string | undefined} [alias]\n * One or more aliases for the programming language, if with `name`.\n * @returns {undefined}\n * Nothing.\n */\n function registerAlias(aliasesOrName, alias) {\n if (typeof aliasesOrName === 'string') {\n assert(alias !== undefined)\n high.registerAliases(\n // Note: copy needed because hljs doesn’t accept readonly arrays yet.\n typeof alias === 'string' ? alias : [...alias],\n {languageName: aliasesOrName}\n )\n } else {\n /** @type {string} */\n let key\n\n for (key in aliasesOrName) {\n if (Object.hasOwn(aliasesOrName, key)) {\n const aliases = aliasesOrName[key]\n high.registerAliases(\n // Note: copy needed because hljs doesn’t accept readonly arrays yet.\n typeof aliases === 'string' ? aliases : [...aliases],\n {languageName: key}\n )\n }\n }\n }\n }\n\n /**\n * Check whether an alias or name is registered.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import javascript from 'highlight.js/lib/languages/javascript'\n *\n * const lowlight = createLowlight({javascript})\n *\n * console.log(lowlight.registered('funkyscript')) // => `false`\n *\n * lowlight.registerAlias({javascript: 'funkyscript'})\n * console.log(lowlight.registered('funkyscript')) // => `true`\n * ```\n *\n * @param {string} aliasOrName\n * Name of a language or alias for one.\n * @returns {boolean}\n * Whether `aliasOrName` is registered.\n */\n function registered(aliasOrName) {\n return Boolean(high.getLanguage(aliasOrName))\n }\n}\n\n/** @type {Emitter} */\nclass HastEmitter {\n /**\n * @param {Readonly<HljsOptions>} options\n * Configuration.\n * @returns\n * Instance.\n */\n constructor(options) {\n /** @type {HljsOptions} */\n this.options = options\n /** @type {Root} */\n this.root = {\n type: 'root',\n children: [],\n data: {language: undefined, relevance: 0}\n }\n /** @type {[Root, ...Array<Element>]} */\n this.stack = [this.root]\n }\n\n /**\n * @param {string} value\n * Text to add.\n * @returns {undefined}\n * Nothing.\n *\n */\n addText(value) {\n if (value === '') return\n\n const current = this.stack[this.stack.length - 1]\n const tail = current.children[current.children.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += value\n } else {\n current.children.push({type: 'text', value})\n }\n }\n\n /**\n *\n * @param {unknown} rawName\n * Name to add.\n * @returns {undefined}\n * Nothing.\n */\n startScope(rawName) {\n this.openNode(String(rawName))\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n endScope() {\n this.closeNode()\n }\n\n /**\n * @param {HastEmitter} other\n * Other emitter.\n * @param {string} name\n * Name of the sublanguage.\n * @returns {undefined}\n * Nothing.\n */\n __addSublanguage(other, name) {\n const current = this.stack[this.stack.length - 1]\n // Assume only element content.\n const results = /** @type {Array<ElementContent>} */ (other.root.children)\n\n if (name) {\n current.children.push({\n type: 'element',\n tagName: 'span',\n properties: {className: [name]},\n children: results\n })\n } else {\n current.children.push(...results)\n }\n }\n\n /**\n * @param {string} name\n * Name to add.\n * @returns {undefined}\n * Nothing.\n */\n openNode(name) {\n const self = this\n // First “class” gets the prefix. Rest gets a repeated underscore suffix.\n // See: <https://github.com/highlightjs/highlight.js/commit/51806aa>\n // See: <https://github.com/wooorm/lowlight/issues/43>\n const className = name.split('.').map(function (d, i) {\n return i ? d + '_'.repeat(i) : self.options.classPrefix + d\n })\n const current = this.stack[this.stack.length - 1]\n /** @type {Element} */\n const child = {\n type: 'element',\n tagName: 'span',\n properties: {className},\n children: []\n }\n\n current.children.push(child)\n this.stack.push(child)\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n closeNode() {\n this.stack.pop()\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n finalize() {}\n\n /**\n * @returns {string}\n * Nothing.\n */\n toHTML() {\n return ''\n }\n}\n","/**\n * @import {ElementContent, Element, Root} from 'hast'\n * @import {LanguageFn} from 'lowlight'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {Readonly<Record<string, ReadonlyArray<string> | string>> | null | undefined} [aliases={}]\n * Register more aliases (optional);\n * passed to `lowlight.registerAlias`.\n * @property {boolean | null | undefined} [detect=false]\n * Highlight code without language classes by guessing its programming\n * language (default: `false`).\n * @property {Readonly<Record<string, LanguageFn>> | null | undefined} [languages]\n * Register languages (default: `common`);\n * passed to `lowlight.register`.\n * @property {ReadonlyArray<string> | null | undefined} [plainText=[]]\n * List of language names to not highlight (optional);\n * note you can also add `no-highlight` classes.\n * @property {string | null | undefined} [prefix='hljs-']\n * Class prefix (default: `'hljs-'`).\n * @property {ReadonlyArray<string> | null | undefined} [subset]\n * Names of languages to check when detecting (default: all registered\n * languages).\n */\n\nimport {toText} from 'hast-util-to-text'\nimport {common, createLowlight} from 'lowlight'\nimport {visit} from 'unist-util-visit'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Apply syntax highlighting.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeHighlight(options) {\n const settings = options || emptyOptions\n const aliases = settings.aliases\n const detect = settings.detect || false\n const languages = settings.languages || common\n const plainText = settings.plainText\n const prefix = settings.prefix\n const subset = settings.subset\n let name = 'hljs'\n\n const lowlight = createLowlight(languages)\n\n if (aliases) {\n lowlight.registerAlias(aliases)\n }\n\n if (prefix) {\n const pos = prefix.indexOf('-')\n name = pos === -1 ? prefix : prefix.slice(0, pos)\n }\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree, file) {\n visit(tree, 'element', function (node, _, parent) {\n if (\n node.tagName !== 'code' ||\n !parent ||\n parent.type !== 'element' ||\n parent.tagName !== 'pre'\n ) {\n return\n }\n\n const lang = language(node)\n\n if (\n lang === false ||\n (!lang && !detect) ||\n (lang && plainText && plainText.includes(lang))\n ) {\n return\n }\n\n if (!Array.isArray(node.properties.className)) {\n node.properties.className = []\n }\n\n if (!node.properties.className.includes(name)) {\n node.properties.className.unshift(name)\n }\n\n const text = toText(node, {whitespace: 'pre'})\n /** @type {Root} */\n let result\n\n try {\n result = lang\n ? lowlight.highlight(lang, text, {prefix})\n : lowlight.highlightAuto(text, {prefix, subset})\n } catch (error) {\n const cause = /** @type {Error} */ (error)\n\n if (lang && /Unknown language/.test(cause.message)) {\n file.message(\n 'Cannot highlight as `' + lang + '`, it’s not registered',\n {\n ancestors: [parent, node],\n cause,\n place: node.position,\n ruleId: 'missing-language',\n source: 'rehype-highlight'\n }\n )\n\n /* c8 ignore next 5 -- throw arbitrary hljs errors */\n return\n }\n\n throw cause\n }\n\n if (!lang && result.data && result.data.language) {\n node.properties.className.push('language-' + result.data.language)\n }\n\n if (result.children.length > 0) {\n node.children = /** @type {Array<ElementContent>} */ (result.children)\n }\n })\n }\n}\n\n/**\n * Get the programming language of `node`.\n *\n * @param {Element} node\n * Node.\n * @returns {false | string | undefined}\n * Language or `undefined`, or `false` when an explikcit `no-highlight` class\n * is used.\n */\nfunction language(node) {\n const list = node.properties.className\n let index = -1\n\n if (!Array.isArray(list)) {\n return\n }\n\n /** @type {string | undefined} */\n let name\n\n while (++index < list.length) {\n const value = String(list[index])\n\n if (value === 'no-highlight' || value === 'nohighlight') {\n return false\n }\n\n if (!name && value.slice(0, 5) === 'lang-') {\n name = value.slice(5)\n }\n\n if (!name && value.slice(0, 9) === 'language-') {\n name = value.slice(9)\n }\n }\n\n return name\n}\n"],"names":["deepFreeze","obj","Map","clear","delete","set","Error","Set","add","Object","freeze","getOwnPropertyNames","forEach","name","prop","type","isFrozen","Response","constructor","mode","undefined","data","this","isMatchIgnored","ignoreMatch","escapeHTML","value","replace","inherit$1","original","objects","result","create","key","emitsWrappingTags","node","scope","HTMLRenderer","parseTree","options","buffer","classPrefix","walk","addText","text","openNode","className","prefix","startsWith","includes","pieces","split","shift","map","x","i","repeat","join","scopeToCSSClass","span","closeNode","newNode","opts","children","assign","TokenTree","rootNode","stack","top","length","root","push","pop","closeAllNodes","toJSON","JSON","stringify","builder","_walk","child","_collapse","every","el","TokenTreeEmitter","super","startScope","endScope","__addSublanguage","emitter","toHTML","finalize","source","re","lookahead","concat","anyNumberOfTimes","optional","args","either","splice","stripOptionsFromArgs","capture","countMatchGroups","RegExp","toString","exec","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","regex","offset","out","match","substring","index","String","Number","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","end","illegal","contains","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","END_SAME_AS_BEGIN","m","resp","_beginMatch","MATCH_NOTHING_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","skipIfHasPrecedingDot","response","input","scopeClassName","_parent","beginKeywords","parent","__beforeBegin","keywords","compileIllegal","Array","isArray","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","keys","endsParent","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","toLowerCase","keyword","pair","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","error","message","console","warn","log","deprecated","version","MultiClassError","remapScopeNames","regexes","scopeNames","emit","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","skip","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","global","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","position","addRule","compile","terminators","matcherRe","lastIndex","s","findIndex","matchData","ResumableMultiRegex","rules","multiRegexes","count","regexIndex","getMatcher","matcher","slice","resumingScanAtSamePosition","considerAll","m2","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","c","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","term","rule","buildModeRegex","HTMLInjectionError","reason","html","escape","inherit","NO_MATCH","Symbol","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","test","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","code","context","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","word","matchText","kind","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","highlightAuto","_emitter","processSubLanguage","emitMultiClass","max","klass","startNewMode","endOfMode","matchPlusRemainder","matched","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","err","badRule","newMode","beforeCallbacks","cb","doBeginMatch","processed","iterations","getLanguage","md","list","current","unshift","item","processContinuations","__emitTokens","processedCount","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","filter","autoDetection","sorted","sort","a","b","supersetOf","best","secondBest","highlightElement","element","block","classes","parentNode","find","_class","blockLanguage","dataset","highlighted","innerHTML","textContent","currentLang","resultLang","classList","updateClassName","wantsHighlight","highlightAll","document","readyState","window","addEventListener","querySelectorAll","registerAliases","aliasList","alias","lang","event","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","bind","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","indexOf","debugMode","safeMode","versionString","newInstance","module","exports","HighlightJS","default","findAfter","is","POSITIVE_INFINITY","searchLineFeeds","searchTabOrSpaces","br","cell","tagName","p","row","notRendered","Boolean","properties","hidden","open","blockOrCaption","renderedTextCollection","info","whitespace","inferWhitespace","suffix","items","breakBefore","breakAfter","collectElement","collectText","collectPreText","lines","start","trimAndCollapseSpacesAndTabs","charCodeAt","wrap","noWrap","TAGS","MEDIA_FEATURES","reverse","PSEUDO_CLASSES","PSEUDO_ELEMENTS","ATTRIBUTES","decimalDigits","frac","hexDigits","NUMERIC","recurRegex","substitution","depth","_","KEYWORDS","LITERALS","TYPES","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","PSEUDO_SELECTORS","keywordWrapper","dotKeywords","optionalDotKeywords","keywordTypes","literals","precedencegroupKeywords","numberSignKeywords","builtIns","operatorHead","operatorCharacter","operator","identifierHead","identifierCharacter","identifier","typeIdentifier","keywordAttributes","availabilityKeywords","grammars","arduino","ARDUINO_KW","built_in","_hints","literal","ARDUINO","DECLTYPE_AUTO_RE","NAMESPACE_RE","FUNCTION_TYPE_RE","CPP_PRIMITIVE_TYPES","STRINGS","NUMBERS","PREPROCESSOR","FUNCTION_TITLE","CPP_KEYWORDS","_type_hints","FUNCTION_DISPATCH","_hint","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","cPlusPlus","kws","bash","VAR","BRACED_VAR","SUBST","HERE_DOC","QUOTE_STRING","ARITHMETIC","KNOWN_SHEBANG","FUNCTION","preprocessor","strings","cpp","csharp","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","STRING","GENERIC_MODIFIER","TYPE_IDENT_RE","AT_IDENTIFIER","css","modes","IMPORTANT","BLOCK_COMMENT","HEXCOLOR","ATTRIBUTE_SELECTOR_MODE","CSS_NUMBER_MODE","CSS_VARIABLE","keyframePosition","attribute","diff","go","graphql","ini","COMMENTS","VARIABLES","ARRAY","ANY_KEY","java","JAVA_IDENT_RE","GENERIC_IDENT_RE","ANNOTATION","PARAMS","javascript","IDENT_RE$1","FRAGMENT","XML_TAG","isTrulyOpeningTag","afterMatchIndex","nextChar","after","tag","hasClosingTag","afterMatch","KEYWORDS$1","decimalInteger","NUMBER","HTML_TEMPLATE","CSS_TEMPLATE","GRAPHQL_TEMPLATE","TEMPLATE_STRING","SUBST_INTERNALS","SUBST_AND_COMMENTS","PARAMS_CONTAINS","CLASS_OR_EXTENDS","CLASS_REFERENCE","FUNCTION_DEFINITION","label","FUNCTION_CALL","PROPERTY_ACCESS","GETTER_OR_SETTER","FUNC_LEAD_IN_RE","FUNCTION_VARIABLE","json","LITERALS_MODE","kotlin","LABEL","VARIABLE","ANNOTATION_USE_SITE","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","less","PSEUDO_SELECTORS$1","INTERP_IDENT_RE","RULES","VALUE_MODES","STRING_MODE","IDENT_MODE","AT_KEYWORDS","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","PSEUDO_SELECTOR_MODE","lua","OPENING_LONG_BRACKET","CLOSING_LONG_BRACKET","LONG_BRACKETS","makefile","FUNC","ASSIGNMENT","TARGET","markdown","INLINE_HTML","LINK","BOLD","ITALIC","BOLD_WITHOUT_ITALIC","ITALIC_WITHOUT_BOLD","CONTAINABLE","objectivec","IDENTIFIER_RE","CLASS_KEYWORDS","perl","REGEX_MODIFIERS","PERL_KEYWORDS","METHOD","ATTR","STRING_CONTAINS","REGEX_DELIMS","PAIRED_DOUBLE_RE","close","middle","PAIRED_RE","PERL_DEFAULT_CONTAINS","php","NOT_PERL_ETC","PASCAL_CASE_CLASS_NAME_RE","UPCASE_NAME_RE","SINGLE_QUOTED","WHITESPACE","KWS","toUpperCase","dualCase","normalizeKeywords","CONSTRUCTOR_CALL","CONSTANT_REFERENCE","LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON","NAMED_ARGUMENT","PARAMS_MODE","FUNCTION_INVOKE","ATTRIBUTE_CONTAINS","python","RESERVED_WORDS","PROMPT","LITERAL_BRACKET","digitpart","pointfloat","COMMENT_TYPE","r","NUMBER_TYPES_RE","OPERATORS_RE","PUNCTUATION_RE","ruby","RUBY_METHOD_RE","CLASS_NAME_RE","CLASS_NAME_WITH_NAMESPACE_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","COMMENT_MODES","digits","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","rust","RAW_IDENTIFIER","NUMBER_SUFFIX","BUILTINS","scss","PSEUDO_ELEMENTS$1","PSEUDO_CLASSES$1","shell","sql","COMMENT_MODE","RESERVED_FUNCTIONS","FUNCTIONS","kws_to_regex","kw","MULTI_WORD_KEYWORDS","exceptions","when","qualifyFn","reduceRelevancy","swift","DOT_KEYWORD","KEYWORD_GUARD","PLAIN_KEYWORDS","KEYWORD","KEYWORD_MODES","OPERATOR_GUARD","OPERATORS","ESCAPED_CHARACTER","rawDelimiter","ESCAPED_NEWLINE","INTERPOLATION","MULTILINE_STRING","SINGLE_LINE_STRING","REGEXP_CONTENTS","BARE_REGEXP_LITERAL","EXTENDED_REGEXP_LITERAL","REGEXP","QUOTED_IDENTIFIER","IDENTIFIERS","TYPE","GENERIC_ARGUMENTS","TUPLE","GENERIC_PARAMETERS","FUNCTION_PARAMETERS","FUNCTION_OR_MACRO","INIT_SUBSCRIPT","OPERATOR_DECLARATION","PRECEDENCEGROUP","TYPE_DECLARATION","interpolation","submodes","typescript","tsLanguage","NAMESPACE","INTERFACE","DECORATOR","swapMode","replacement","indx","ATTRIBUTE_HIGHLIGHT","OPTIONAL_KEY_OR_ARGUMENT","vbnet","MM_DD_YYYY","YYYY_MM_DD","TIME_12H","TIME_24H","DATE","DOC_COMMENT","wasm","xml","TAG_NAME_RE","XML_ENTITIES","XML_META_KEYWORDS","XML_META_PAR_KEYWORDS","APOS_META_STRING_MODE","QUOTE_META_STRING_MODE","TAG_INTERNALS","yaml","URI_CHARACTERS","CONTAINER_STRING","TIMESTAMP","VALUE_CONTAINER","OBJECT","emptyOptions","defaultPrefix","HastEmitter","tail","rawName","other","self","d","rehypeHighlight","settings","detect","plainText","subset","lowlight","high","register","registerAlias","aliasesOrName","hasOwn","registered","aliasOrName","cause","grammarsOrName","grammar","createLowlight","pos","tree","file","options_","toText","ancestors","place","ruleId"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"recommendations-vendors-node_modules_rehype-highlight_index_js.js?v=70a4778e6219bb956045","mappings":"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T,IAAK,MACH,OAAOK,EAAWmB,KAAO,WAAa,MAGxC,IAAK,KACL,IAAK,KACH,OAAOnB,EAAWoB,OAAS,SAAWf,EAAKC,WAG7C,IAAK,WACH,MAAO,WAKb,CAEA,OAAOD,EAAKC,UACd,CC/lBA,MAyKMe,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWIC,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACA7F,OAAO8F,UAGHC,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA/F,OAAO8F,UAGHE,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACAhG,OAAO8F,UAEHG,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACAjG,OAAO8F,UCzyBT,IAAII,EAAgB,kBAChBC,EAAO,OAAOD,KACdE,EAAY,8BACZC,EAAU,CACZta,UAAW,SACXyN,SAAU,CAGR,CAAE1I,MAAO,QAAQoV,OAAmBC,aAAgBA,gBACrCD,gBAEf,CAAEpV,MAAO,OAAOoV,OAAmBC,iCACnC,CAAErV,MAAO,IAAIqV,gBACb,CAAErV,MAAO,OAAOoV,eAGhB,CAAEpV,MAAO,aAAasV,WAAmBA,UAAkBA,gBAC5CF,gBAGf,CAAEpV,MAAO,kCAGT,CAAEA,MAAO,YAAYsV,cAGrB,CAAEtV,MAAO,0BAGT,CAAEA,MAAO,kCAEXC,UAAW,GAsBb,SAASuV,EAAWzX,EAAI0X,EAAcC,GACpC,OAAe,IAAXA,EAAqB,GAElB3X,EAAGjE,QAAQ2b,GAAcE,GACvBH,EAAWzX,EAAI0X,EAAcC,EAAQ,IAEhD,CC5DA,MAAMhW,EAAW,2BACXkW,EAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEIC,EAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAIIC,EAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGIC,EAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGIC,EAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGIC,EAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGIC,EAAY,GAAGjY,OACnB+X,EACAF,EACAC,GC5JF,IAAI,EAAgB,kBAChB,EAAO,OAAO,KACd,EAAY,8BACZ,EAAU,CACZ9a,UAAW,SACXyN,SAAU,CAGR,CAAE1I,MAAO,QAAQ,OAAmB,aAAgB,gBACrC,gBAEf,CAAEA,MAAO,OAAO,OAAmB,iCACnC,CAAEA,MAAO,IAAI,gBACb,CAAEA,MAAO,OAAO,eAGhB,CAAEA,MAAO,aAAa,WAAmB,UAAkB,gBAC5C,gBAGf,CAAEA,MAAO,kCAGT,CAAEA,MAAO,YAAY,cAGrB,CAAEA,MAAO,0BAGT,CAAEA,MAAO,kCAEXC,UAAW,GChCb,MAyKM,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWI,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACAiP,OAAO8F,UAGH,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA9F,OAAO8F,UAGH,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACA9F,OAAO8F,UAEH,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA9F,OAAO8F,UAGHmB,EAAmB,EAAelY,OAAO,GAAiBiR,OAAO8F,UC7yBvE,MAyKM,EAAO,CA3HX,IACA,OACA,UACA,UACA,QACA,QACA,IACA,aACA,OACA,SACA,SACA,UACA,OACA,OACA,KACA,MACA,UACA,MACA,MACA,KACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,OACA,OACA,MACA,SACA,KACA,WACA,SACA,IACA,UACA,IACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,KACA,MACA,QAIA,OACA,IACA,SACA,OACA,UACA,MACA,SACA,SACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,UACA,iBACA,UACA,UACA,eACA,WACA,qBACA,SACA,eACA,iBACA,iBACA,OACA,SACA,UACA,QACA,OACA,OACA,UACA,WACA,OACA,OACA,MACA,WACA,QACA,gBACA,YAWI,EAAiB,CACrB,YACA,cACA,eACA,QACA,cACA,cACA,sBACA,gBACA,eACA,eACA,gBACA,OACA,SACA,QACA,kBACA,aACA,cACA,iBACA,kBACA,UACA,uBACA,mBACA,yBACA,+BACA,aACA,OACA,YACA,SACA,QAEA,YACA,YACA,aACA,cACA9F,OAAO8F,UAGH,EAAiB,CACrB,SACA,WACA,QACA,UACA,UACA,UACA,UACA,MACA,WACA,OACA,QACA,UACA,QACA,cACA,gBACA,aACA,SACA,QACA,gBACA,eACA,MACA,OACA,eACA,QACA,gBACA,WACA,UACA,KACA,OACA,aACA,eACA,OACA,OACA,aACA,MACA,YACA,UACA,iBACA,eACA,mBACA,cACA,aACA,eACA,WACA,eACA,OACA,oBACA,YACA,aACA,WACA,QACA,OACA,QACA,SACA,gBACA,eACA,QACA,UACA,SACA9F,OAAO8F,UAGH,EAAkB,CACtB,QACA,WACA,SACA,MACA,aACA,eACA,aACA,gBACA,SACA,OACA,cACA,YACA,UACA,kBACA9F,OAAO8F,UAEH,EAAa,CACjB,eACA,gBACA,cACA,aACA,qBACA,MACA,cACA,YACA,wBACA,kBACA,sBACA,qBACA,sBACA,4BACA,iBACA,uBACA,kBACA,sBACA,wBACA,qBACA,4BACA,aACA,eACA,kBACA,sBACA,aACA,wBACA,wBACA,kBACA,mBACA,mBACA,oBACA,sBACA,wBACA,wBACA,oBACA,kBACA,iBACA,aACA,SACA,eACA,qBACA,mBACA,yBACA,yBACA,yBACA,qBACA,2BACA,2BACA,2BACA,qBACA,qBACA,gBACA,sBACA,4BACA,6BACA,sBACA,sBACA,kBACA,eACA,wBACA,0BACA,eACA,sBACA,sBACA,qBACA,sBACA,qBACA,gBACA,sBACA,oBACA,0BACA,0BACA,0BACA,sBACA,4BACA,4BACA,4BACA,sBACA,sBACA,cACA,oBACA,oBACA,oBACA,gBACA,eACA,qBACA,qBACA,qBACA,iBACA,0BACA,4BACA,eACA,aACA,mBACA,yBACA,0BACA,mBACA,mBACA,eACA,SACA,YACA,uBACA,gBACA,WACA,iBACA,YACA,oBACA,aACA,WACA,aACA,aACA,cACA,eACA,eACA,eACA,cACA,QACA,OACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,eACA,eACA,cACA,aACA,cACA,oBACA,oBACA,oBACA,cACA,eACA,UACA,UACA,+BACA,2BACA,gCACA,yBACA,0BACA,YACA,iBACA,iBACA,UACA,qBACA,oBACA,gBACA,cACA,MACA,YACA,aACA,SACA,KACA,KACA,YACA,UACA,oBACA,cACA,oBACA,eACA,OACA,eACA,YACA,SACA,OACA,aACA,iBACA,YACA,YACA,cACA,YACA,QACA,cACA,gBACA,OACA,OACA,eACA,cACA,wBACA,eACA,yBACA,sBACA,eACA,YACA,mBACA,cACA,iBACA,eACA,aACA,iBACA,0BACA,4BACA,uBACA,wBACA,eACA,0BACA,oBACA,0BACA,qBACA,yBACA,uBACA,wBACA,0BACA,cACA,sBACA,MACA,+BACA,6BACA,OACA,YACA,oBACA,iBACA,iBACA,cACA,kBACA,oBACA,WACA,WACA,eACA,iBACA,gBACA,sBACA,wBACA,qBACA,sBACA,SACA,sBACA,wBACA,UACA,OACA,oBACA,kBACA,mBACA,WACA,iBACA,uBACA,cACA,QACA,aACA,cACA,kBACA,oBACA,eACA,mBACA,qBACA,YACA,kBACA,gBACA,eACA,UACA,OACA,iBACA,iBACA,aACA,cACA,mBACA,aACA,mBACA,sBACA,kBACA,SACA,eACA,mBACA,qBACA,gBACA,gBACA,oBACA,sBACA,cACA,eACA,aACA,cACA,SACA,aACA,aACA,eACA,QACA,OACA,cACA,mBACA,qBACA,qBACA,oBACA,qBACA,oBACA,YACA,iBACA,aACA,YACA,cACA,gBACA,cACA,YACA,YACA,oBACA,aACA,aACA,aACA,iBACA,aACA,kBACA,YACA,iBACA,aACA,kBACA,YACA,iBACA,WACA,YACA,WACA,YACA,SACA,OACA,SACA,aACA,kBACA,SACA,gBACA,kBACA,cACA,kBACA,gBACA,UACA,QACA,UACA,UACA,gBACA,iBACA,gBACA,gBACA,WACA,kBACA,iBACA,uBACA,kBACA,gBACA,aACA,aACA,UACA,sBACA,4BACA,6BACA,wBACA,wBACA,UACA,gBACA,oBACA,sBACA,iBACA,iBACA,qBACA,uBACA,eACA,gBACA,cACA,OACA,mBACA,oBACA,oBACA,cACA,QACA,cACA,eACA,cACA,qBACA,gBACA,cACA,aACA,iBACA,WACA,kBACA,sBACA,qBACA,SACA,IACA,SACA,OACA,aACA,cACA,QACA,SACA,UACA,aACA,gBACA,QACA,kBACA,gBACA,sBACA,0BACA,4BACA,uBACA,uBACA,2BACA,6BACA,qBACA,sBACA,oBACA,iBACA,uBACA,2BACA,6BACA,wBACA,wBACA,4BACA,8BACA,sBACA,uBACA,qBACA,oBACA,mBACA,mBACA,kBACA,uBACA,uBACA,kBACA,mBACA,kBACA,wBACA,eACA,gBACA,kBACA,QACA,WACA,MACA,aACA,eACA,SACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,WACA,eACA,aACA,iBACA,kBACA,cACA,uBACA,kBACA,wBACA,uBACA,uBACA,2BACA,wBACA,4BACA,gBACA,sBACA,yBACA,sBACA,cACA,eACA,mBACA,gBACA,iBACA,cACA,mBACA,iBACA,wBACA,0BACA,YACA,iBACA,kBACA,iBACA,MACA,eACA,YACA,gBACA,mBACA,kBACA,aACA,sBACA,mBACA,sBACA,sBACA,6BACA,YACA,eACA,cACA,cACA,gBACA,iBACA,gBACA,qBACA,sBACA,qBACA,uBACA,aACA,gBACA,iBACA,eACA,cACA,cACA,aACA,eACA,eACA,cACA,uBACA,SACA,QACA,cACA,aACA,eACA,YACA,eACA,IACA,IACA,UACA,QACA9F,OAAO8F,UCjyBT,SAASlX,EAAOC,GACd,OAAKA,EACa,iBAAPA,EAAwBA,EAE5BA,EAAGD,OAHM,IAIlB,CAMA,SAASE,EAAUD,GACjB,OAAOE,EAAO,MAAOF,EAAI,IAC3B,CAMA,SAASE,KAAUG,GAEjB,OADeA,EAAK5C,KAAKC,GAAMqC,EAAOrC,KAAIG,KAAK,GAEjD,CA0BA,SAASyC,MAAUD,GAEjB,MAAMnC,EAtBR,SAA8BmC,GAC5B,MAAMnC,EAAOmC,EAAKA,EAAK5B,OAAS,GAEhC,MAAoB,iBAATP,GAAqBA,EAAK5C,cAAgBT,QACnDwF,EAAKE,OAAOF,EAAK5B,OAAS,EAAG,GACtBP,GAEA,CAAC,CAEZ,CAaesC,CAAqBH,GAIlC,MAHe,KACVnC,EAAKuC,QAAU,GAAK,MACrBJ,EAAK5C,KAAKC,GAAMqC,EAAOrC,KAAIG,KAAK,KAAO,GAE7C,CAEA,MAAMwa,GAAiBrS,GAAW9F,EAChC,KACA8F,EACA,MAAM4G,KAAK5G,GAAW,KAAO,MAIzBsS,GAAc,CAClB,WACA,QACA7a,IAAI4a,IAGAE,GAAsB,CAC1B,OACA,QACA9a,IAAI4a,IAGAG,GAAe,CACnB,MACA,QAII9T,GAAW,CAIf,QACA,MACA,iBACA,QACA,QACA,OACA,MACA,KACA,YACA,QACA,OACA,QACA,QACA,UACA,YACA,WACA,cACA,OACA,UACA,QACA,SACA,SACA,cACA,KACA,UACA,OACA,OACA,OACA,YACA,cACA,qBACA,cACA,QACA,MACA,OACA,MACA,QACA,KACA,SACA,WACA,QACA,SACA,QACA,QACA,kBACA,WACA,KACA,KACA,WACA,cACA,OACA,MACA,QACA,WACA,cACA,cACA,OACA,WACA,WACA,WACA,UACA,UACA,kBACA,SACA,iBACA,UACA,WACA,gBACA,SACA,SACA,WACA,WACA,SACA,MACA,OACA,SACA,SACA,YACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,YACA,kBACA,oBACA,UACA,MACA,OACA,QACA,QACA,WAOI+T,GAAW,CACf,QACA,MACA,QAIIC,GAA0B,CAC9B,aACA,gBACA,aACA,OACA,YACA,OACA,SAKIC,GAAqB,CACzB,gBACA,UACA,aACA,QACA,UACA,SACA,SACA,QACA,UACA,eACA,YACA,YACA,MACA,gBACA,WACA,QACA,YACA,kBACA,YAIIC,GAAW,CACf,MACA,MACA,MACA,SACA,mBACA,aACA,OACA,aACA,YACA,4BACA,MACA,MACA,cACA,eACA,eACA,eACA,sBACA,QACA,WACA,gBACA,WACA,SACA,OACA,oCACA,YACA,OACA,gBACA,iBACA,uBACA,2BACA,oBACA,aACA,0BACA,OAIIC,GAAevY,GACnB,oBACA,kBACA,iBACA,iBACA,iBACA,mCACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,YAIIwY,GAAoBxY,GACxBuY,GACA,kBACA,kBACA,kBACA,kBACA,mBAMIE,GAAW7Y,EAAO2Y,GAAcC,GAAmB,KAGnDE,GAAiB1Y,GACrB,YACA,uDACA,yDACA,yDACA,kBACA,+DACA,yDACA,+BACA,yDACA,yDACA,gCASI2Y,GAAsB3Y,GAC1B0Y,GACA,KACA,0DAIIE,GAAahZ,EAAO8Y,GAAgBC,GAAqB,KAGzDE,GAAiBjZ,EAAO,QAAS+Y,GAAqB,KAKtDG,GAAoB,CACxB,WACA,cACAlZ,EAAO,eAAgBI,GAAO,QAAS,QAAS,KAAM,MACtD,oBACA,kBACA,sBACA,WACA,eACA,SACA,gBACA,WACA,eACA,gBACA,WACA,gBACA,YACA,OACA,UACA,oBACA,YACA,YACAJ,EAAO,SAAUgZ,GAAY,MAC7B,OACA,cACA,kBACA,iCACA,gBACA,WACA,WACA,oBACA,YACA,UACA,mBACA,2BAIIG,GAAuB,CAC3B,MACA,0BACA,QACA,4BACA,cACA,kCACA,UACA,8BACA,OACA,2BACA,SC5YF,MAAM,GAAW,2BACX,GAAW,CACf,KACA,KACA,KACA,KACA,MACA,QACA,UACA,MACA,MACA,WACA,KACA,SACA,OACA,OACA,QACA,QACA,aACA,OACA,QACA,OACA,UACA,MACA,SACA,WACA,SACA,SACA,MACA,QACA,QACA,QAIA,WACA,QACA,QACA,SACA,SACA,OACA,SACA,UAEA,SAEI,GAAW,CACf,OACA,QACA,OACA,YACA,MACA,YAII,GAAQ,CAEZ,SACA,WACA,UACA,SAEA,OACA,OACA,SACA,SAEA,SACA,SAEA,QACA,eACA,eACA,YACA,aACA,oBACA,aACA,aACA,cACA,cACA,gBACA,iBAEA,MACA,MACA,UACA,UAEA,cACA,oBACA,UACA,WACA,OAEA,UACA,YACA,oBACA,gBAEA,UACA,QAEA,OAEA,eAGI,GAAc,CAClB,QACA,YACA,gBACA,aACA,iBACA,cACA,YACA,YAGI,GAAmB,CACvB,cACA,aACA,gBACA,eAEA,UACA,UAEA,OACA,WACA,QACA,aACA,WACA,YACA,qBACA,YACA,qBACA,SACA,YAGI,GAAqB,CACzB,YACA,OACA,QACA,UACA,SACA,WACA,eACA,iBACA,SACA,UAGI,GAAY,GAAGnZ,OACnB,GACA,GACA,IC9GK,MAAMoZ,GAAW,CACtBC,QCsjBF,SAAiB3N,GACf,MAAM4N,EAAa,CACjBre,KAAM,CACJ,UACA,OACA,OACA,UAEFse,SAAU,CACR,qBACA,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MAEFC,OAAQ,CACN,QACA,OACA,gCACA,wBACA,wBACA,uBACA,uBACA,sBACA,sBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEFC,QAAS,CACP,kBACA,iBACA,iBACA,iBACA,gBACA,eACA,eACA,eACA,eACA,cACA,cACA,cACA,WACA,WACA,UACA,SACA,QACA,OACA,QAIEC,EA/8BR,SAAmBhO,GACjB,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAEI4Z,EAAsB,CAC1B9c,UAAW,OACX+E,MAAO,sBAMHgY,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CAER,CAAE1I,MACA,gVAoBF,CAAEA,MACA,gKAgBJC,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,0FAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UA+RhE0Y,EAAe,CACnBlf,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLA6K,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMA2T,QAde,CACf,OACA,QACA,UACA,UACA,QAUAF,SANe,CAAE,WAOjBa,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxBrd,UAAW,oBACXgF,UAAW,EACXwC,SAAU,CAER8V,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAvY,MAAOd,EAAMjB,OACX,KACA,eACA,SACA,UACA,aACA,YACA0L,EAAKjK,SACLR,EAAMlB,UAAU,sBAGdwa,EAAsB,CAC1BF,EACAJ,EACAH,EACApX,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,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,UAAW,GA+Pb,MAAO,CACLjH,KAAM,OACN6Q,QAAS,CACP,KACA,OAEFpH,SAAU,CACRyF,SAAU,wBACVnE,QApQa,CACf,KACA,OACA,OACA,OACA,KACA,OACA,MACA,QACA,QACA,KACA,KACA,OACA,OACA,OACA,SACA,WACA,UAoPE2T,QAjPa,CACf,OACA,SAgPEF,SAAU,CAxOZ,QACA,KACA,WACA,OACA,OACA,OACA,SACA,UACA,OACA,MACA,WACA,SACA,QACA,OACA,QACA,OACA,QACA,QAIA,QACA,OACA,UACA,SACA,UACA,UACA,OACA,SACA,OACA,MACA,QACA,SACA,UACA,SACA,OACA,YACA,SACA,OACA,OACA,UACA,SACA,UAkMI,MACA,QA/LJ,WACA,KACA,UACA,MACA,MACA,QACA,QACA,gBACA,WACA,UACA,eACA,YACA,aACA,YACA,WACA,UACA,aACA,OACA,UACA,SACA,SACA,SACA,UACA,KACA,KACA,QACA,YACA,SACA,QACA,UACA,UACA,OACA,OACA,QACA,MACA,SACA,OACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,OACA,UACA,SACA,aACA,SACA,UACA,WACA,QACA,OACA,SACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,aACA,QACA,OACA,cACA,UACA,SACA,OAIA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,MACA,YACA,KACA,KACA,QACA,SACA,QACA,SACA,KACA,WACA,KACA,QACA,QACA,OACA,QACA,WACA,OACA,QACA,SACA,SACA,MACA,QACA,OACA,SACA,MACA,SACA,MACA,OACA,OACA,OACA,SACA,KACA,SACA,KACA,QACA,MACA,KACA,UACA,YACA,YACA,YACA,YACA,OACA,OACA,QACA,MACA,MACA,OACA,KACA,QACA,WACA,OACA,KACA,OACA,WACA,SACA,OACA,UACA,KACA,OACA,MACA,OACA,SAEA,SACA,SACA,KACA,OACA,UACA,OACA,QACA,QACA,UACA,QACA,WACA,SACA,MACA,WACA,SACA,MACA,QACA,OACA,SACA,OACA,MACA,OACA,UAEA,MACA,QACA,SACA,SACA,QACA,MACA,SACA,QAuBAnX,SAAU,CACR+Y,EACAzP,EAAK7H,UACLuX,EACAF,EACA5Y,EACA0Y,EA5Pc,CAAE5Z,MAAO,kBA8PvB6Z,EAtUkB,CACpB7Z,MAAO,OAEW,CAClBpE,UAAW,SACX+E,MAAO,IACPG,IAAK,KAEc,CACnBd,MAAO,OAiULyZ,GAGN,EFpWErQ,EG3CF,SAAWkB,GACT,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,IACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAGI2X,EAAQ,CACZ7a,UAAW,OACXyN,SAAU,CACR,CAAE1I,MAAO,sBACT,CAAEX,MAAO,2BAQP2Y,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CACR,CAAErJ,MAAO,gBACT,CAAEA,MAAO,mFACT,CAAEA,MAAO,oHACT,CAAEA,MAAO,2DAEXY,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,2GAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UAoFhEkW,EAAW,CACf7R,QAnFiB,CACjB,MACA,OACA,QACA,OACA,WACA,UACA,KACA,OACA,OACA,SACA,MACA,UACA,OACA,KACA,SACA,WACA,WACA,SACA,SACA,SACA,gBACA,SACA,SACA,UACA,QACA,WACA,QACA,WACA,WACA,UACA,WACA,YACA,iBACA,gBAEA,UACA,UACA,WACA,gBACA,eAEA,WA0CA7K,KAvCc,CACd,QACA,SACA,SACA,WACA,MACA,QACA,OACA,OACA,OACA,QACA,UACA,WACA,aACA,aACA,aACA,aACA,cACA,cACA,eACA,WACA,WACA,WACA,YACA,YACA,YACA,aAEA,QACA,SACA,YAEA,UACA,OACA,aAMAwe,QAAS,kBAETF,SAAU,ozBAWNgB,EAAsB,CAC1BN,EACApC,EACAnV,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,KACPG,IAAK,MAEP,CACEmC,cAAe,wBACfnC,IAAK,MAGTsC,SAAUmT,EACVvV,SAAUmY,EAAoBva,OAAO,CACnC,CACE+B,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACVvV,SAAUmY,EAAoBva,OAAO,CAAE,SACvCgC,UAAW,KAGfA,UAAW,GAGPyY,EAAuB,CAC3B1Y,MAAO,IAAM8X,EAAmB,eAAiBK,EACjD1S,aAAa,EACbtF,IAAK,QACLwF,YAAY,EACZlD,SAAUmT,EACVxV,QAAS,iBACTC,SAAU,CACR,CACEL,MAAO4X,EACPnV,SAAUmT,EACV3V,UAAW,GAEb,CACED,MAAOmY,EACP1S,aAAa,EACbpF,SAAU,CAAEsJ,EAAKJ,QAAQrI,EAAY,CAAEjG,UAAW,oBAClDgF,UAAW,GAIb,CACEA,UAAW,EACXZ,MAAO,KAET,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACRM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAnC,EAEA,CACE9V,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,OACAM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAnC,MAKRA,EACAnV,EACAgJ,EAAK/I,qBACLsX,IAIJ,MAAO,CACLlf,KAAM,IACN6Q,QAAS,CAAE,KACXpH,SAAUmT,EAGV1L,mBAAmB,EACnB9J,QAAS,KACTC,SAAU,GAAGpC,OACXwa,EACAC,EACAF,EACA,CACEN,EACA,CACElY,MAAO2J,EAAKjK,SAAW,KACvB+C,SAAUmT,GAEZ,CACE3a,UAAW,QACXqH,cAAe,0BACfnC,IAAK,WACLE,SAAU,CACR,CAAEiC,cAAe,sBACjBqH,EAAKzI,eAIbwR,QAAS,CACP4G,aAAcpB,EACdqB,QAASvB,EACTvV,SAAUmT,GAGhB,EHvRE4D,II5CF,SAAa7P,GACX,MAAMzK,EAAQyK,EAAKzK,MAIbyB,EAAsBgJ,EAAKpJ,QAAQ,KAAM,IAAK,CAAEF,SAAU,CAAE,CAAEL,MAAO,WACrE4X,EAAmB,qBACnBC,EAAe,kBAEfC,EAAmB,cACrBF,EAAmB,IACnB1Y,EAAMf,SAAS0Z,GACf,gBAAkB3Y,EAAMf,SAJC,YAK3B,IAEI4Z,EAAsB,CAC1B9c,UAAW,OACX+E,MAAO,sBAMHgY,EAAU,CACd/c,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,sEACPG,IAAK,IACLC,QAAS,KAEXuJ,EAAKpI,kBAAkB,CACrBvB,MAAO,mCACPG,IAAK,0BAKL8X,EAAU,CACdhd,UAAW,SACXyN,SAAU,CAER,CAAE1I,MACA,gVAoBF,CAAEA,MACA,gKAgBJC,UAAW,GAGPiY,EAAe,CACnBjd,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,0FAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQyO,EAAS,CAAE/c,UAAW,WACnC,CACEA,UAAW,SACX+E,MAAO,SAETW,EACAgJ,EAAK/I,uBAIHM,EAAa,CACjBjG,UAAW,QACX+E,MAAOd,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAC3CO,UAAW,GAGPkY,EAAiBjZ,EAAMf,SAAS0Z,GAAgBlO,EAAKjK,SAAW,UA+RhE0Y,EAAe,CACnBlf,KAlMqB,CACrB,OACA,OACA,WACA,WACA,UACA,SACA,QACA,MACA,OACA,QACA,OACA,UACA,WACA,SACA,QACA,UAmLA6K,QA9RwB,CACxB,UACA,UACA,MACA,SACA,MACA,gBACA,gBACA,kBACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,WACA,YACA,WACA,QACA,UACA,gBACA,YACA,YACA,YACA,WACA,WACA,UACA,SACA,KACA,kBACA,OACA,OACA,WACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,KACA,SACA,SACA,SACA,UACA,YACA,MACA,WACA,MACA,SACA,UACA,WACA,KACA,QACA,WACA,UACA,YACA,SACA,WACA,WACA,sBACA,WACA,SACA,SACA,gBACA,iBACA,SACA,SACA,eACA,WACA,OACA,eACA,QACA,mBACA,2BACA,OACA,MACA,UACA,SACA,WACA,QACA,QACA,UACA,WACA,QACA,MACA,UAwMA2T,QAde,CACf,OACA,QACA,UACA,UACA,QAUAF,SANe,CAAE,WAOjBa,YAnLiB,CACjB,MACA,WACA,UACA,mBACA,SACA,UACA,qBACA,yBACA,qBACA,QACA,aACA,WACA,WACA,SACA,YACA,mBACA,gBACA,UACA,QACA,aACA,WACA,WACA,QACA,WACA,gBACA,gBACA,OACA,UACA,iBACA,QACA,kBACA,wBACA,cACA,MACA,gBACA,cACA,eACA,qBACA,aACA,QACA,cACA,eACA,cACA,SACA,YACA,QACA,cACA,aACA,gBACA,qBACA,qBACA,gBACA,UACA,SACA,WACA,UACA,iBA6HIC,EAAoB,CACxBrd,UAAW,oBACXgF,UAAW,EACXwC,SAAU,CAER8V,MA/HmB,CACrB,QACA,MACA,OACA,QACA,WACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,UACA,OACA,WACA,OACA,MACA,OACA,QACA,OACA,UACA,UACA,QACA,OACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,OACA,UACA,QACA,MACA,QACA,YACA,cACA,4BACA,aACA,cACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,SACA,UACA,OACA,UACA,QACA,MACA,OACA,WACA,UACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,OACA,MACA,OACA,YACA,gBACA,UACA,UACA,WACA,QACA,UACA,aA4BAvY,MAAOd,EAAMjB,OACX,KACA,eACA,SACA,UACA,aACA,YACA0L,EAAKjK,SACLR,EAAMlB,UAAU,sBAGdwa,EAAsB,CAC1BF,EACAJ,EACAH,EACApX,EACAgJ,EAAK/I,qBACLqX,EACAD,GAGIS,EAAqB,CAIzB/P,SAAU,CACR,CACE1I,MAAO,IACPG,IAAK,KAEP,CACEH,MAAO,KACPG,IAAK,MAEP,CACEmC,cAAe,wBACfnC,IAAK,MAGTsC,SAAU2V,EACV/X,SAAUmY,EAAoBva,OAAO,CACnC,CACE+B,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACV/X,SAAUmY,EAAoBva,OAAO,CAAE,SACvCgC,UAAW,KAGfA,UAAW,GAGPyY,EAAuB,CAC3Bzd,UAAW,WACX+E,MAAO,IAAM8X,EAAmB,eAAiBK,EACjD1S,aAAa,EACbtF,IAAK,QACLwF,YAAY,EACZlD,SAAU2V,EACVhY,QAAS,iBACTC,SAAU,CACR,CACEL,MAAO4X,EACPnV,SAAU2V,EACVnY,UAAW,GAEb,CACED,MAAOmY,EACP1S,aAAa,EACbpF,SAAU,CAAEa,GACZjB,UAAW,GAIb,CACED,MAAO,KACPC,UAAW,GAGb,CACED,MAAO,IACPqI,gBAAgB,EAChBhI,SAAU,CACR2X,EACAC,IAKJ,CACEhY,UAAW,EACXZ,MAAO,KAET,CACEpE,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACVnY,UAAW,EACXI,SAAU,CACRM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAF,EAEA,CACE/X,MAAO,KACPG,IAAK,KACLsC,SAAU2V,EACVnY,UAAW,EACXI,SAAU,CACR,OACAM,EACAgJ,EAAK/I,qBACLoX,EACAC,EACAF,MAKRA,EACApX,EACAgJ,EAAK/I,qBACLsX,IAIJ,MAAO,CACLlf,KAAM,MACN6Q,QAAS,CACP,KACA,MACA,MACA,MACA,KACA,MACA,OAEFpH,SAAU2V,EACVhY,QAAS,KACTwH,iBAAkB,CAAE,oBAAqB,YACzCvH,SAAU,GAAGpC,OACXwa,EACAC,EACAJ,EACAE,EACA,CACEN,EACA,CACElY,MAAO,8NACPG,IAAK,IACLsC,SAAU2V,EACV/X,SAAU,CACR,OACA0X,IAGJ,CACE/X,MAAO2J,EAAKjK,SAAW,KACvB+C,SAAU2V,GAEZ,CACE/Y,MAAO,CAEL,wDACA,MACA,OAEFpE,UAAW,CACT,EAAG,UACH,EAAG,kBAKf,EJtiBEwe,OK3CF,SAAgB9P,GACd,MAmJMiM,EAAW,CACf7R,QAvGsB,CACtB,WACA,KACA,OACA,QACA,OACA,QACA,QACA,QACA,WACA,KACA,OACA,QACA,WACA,SACA,UACA,QACA,MACA,UACA,OACA,KACA,WACA,KACA,YACA,WACA,KACA,OACA,YACA,MACA,WACA,MACA,WACA,SACA,UACA,YACA,SACA,WACA,SACA,MACA,SACA,SACA,SACA,SACA,aACA,SACA,SACA,SACA,OACA,QACA,MACA,SACA,YACA,SACA,QACA,UACA,OACA,WACA,SA8CyB9F,OA5CC,CAC1B,MACA,QACA,MACA,YACA,OACA,QACA,QACA,KACA,aACA,UACA,SACA,OACA,OACA,MACA,SACA,QACA,OACA,OACA,OACA,MACA,SACA,MACA,UACA,KACA,KACA,UACA,UACA,SACA,SACA,WACA,SACA,SACA,MACA,YACA,UACA,MACA,OACA,QACA,OACA,UAKAuZ,SArJwB,CACxB,OACA,OACA,OACA,UACA,WACA,SACA,UACA,OACA,QACA,MACA,OACA,OACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,UAkIAE,QA/GuB,CA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,QAtEoB,CACpB,eACA,WACA,UACA,MACA,SACA,KACA,SACA,MACA,QACA,WACA,UACA,YACA,SACA,SACA,QACA,OACA,OACA,OACA,QACA,YACA,QACA,aACA,WACA,OACA,SACA,UACA,UACA,SACA,MACA,SACA,WACA,SACA,YACA,SACA,UACA,SACA,WACA,UACA,KACA,SACA,QACA,UACA,OACA,QA2BA2T,QAnBe,CACf,QACA,OACA,QAiBAxe,KAdY,CACZ,OACA,UACA,OACA,QACA,MACA,OACA,QACA,UAOAse,SA1BgB,CAChB,QACA,SA2BIiE,EAAa,CACjBxgB,UAAW,OACX+E,MAAO,IAAMub,EACblb,SAAU,CACR,CACEL,MAAO,KACPG,IAAK,KACLE,SAAU,CAAE,WAIZqb,EAAS,CACbzgB,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CAAEsJ,EAAK/I,sBACjBwC,YAAY,GAGd,MAAO,CACLpK,KAAM,OACN6Q,QAAS,CAAE,OACXpH,SAAUmT,EACVxV,QAAS,QACTC,SAAU,CACRsJ,EAAKpJ,QACH,UACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CAEEL,MAAO,OACPC,UAAW,GAEb,CACEhF,UAAW,SACX+E,MAAO,iBAMf,CACEA,MAAO,wBACPyC,SAAU,SACVxC,UAAW,GAEb0J,EAAKhJ,oBACLgJ,EAAK/I,qBACL,CACEZ,MAAO,MACPG,IAAK,MACLlF,UAAW,SACXoF,SAAU,CAAEsJ,EAAK5J,mBAEnB4J,EAAKzJ,iBACLyJ,EAAKrJ,kBACL,CACEjB,MAAO,CACL,oDACA,MACAkc,GAEFtgB,UAAW,CACT,EAAG,UACH,EAAG,gBAGP,CAEEoE,MAAO,aACP9E,MAAO,WAET,CACEyF,MAAO,CACLd,EAAMjB,OAAO,WAAYsd,GACzB,MACAA,EACA,MACA,UAEFtgB,UAAW,CACT,EAAG,OACH,EAAG,WACH,EAAG,aAGP,CACE+E,MAAO,CACL,SACA,MACAub,GAEFtgB,UAAW,CACT,EAAG,UACH,EAAG,eAELoF,SAAU,CACRqb,EACA/R,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CAGE0B,cAAe,wBACfrC,UAAW,GAEb,CACED,MAAO,CACL,MAAQwb,EAAmB,QAC3B7R,EAAKhK,oBACL,aAEF1E,UAAW,CAAE,EAAG,kBAChBwH,SAAUmT,EACVvV,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLsC,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACRob,EACA9R,EAAKzJ,iBACLyJ,EAAKrJ,kBACLiV,EACA5L,EAAK/I,uBAGT+I,EAAKhJ,oBACLgJ,EAAK/I,uBAGT2U,EACAkG,GAGN,EOrOEE,WN8GF,SAAoBhS,GAClB,MAAMzK,EAAQyK,EAAKzK,MAcb0c,EAAalc,EACbmc,EACG,KADHA,EAEC,MAIDC,EAAU,CACd9b,MAAO,sBACPG,IAAK,4BAKL4b,kBAAmB,CAAC1c,EAAO6C,KACzB,MAAM8Z,EAAkB3c,EAAM,GAAG7C,OAAS6C,EAAME,MAC1C0c,EAAW5c,EAAM8C,MAAM6Z,GAC7B,GAIe,MAAbC,GAGa,MAAbA,EAGA,YADA/Z,EAASvI,cAiBX,IAAI6H,EAXa,MAAbya,IAtCc,EAAC5c,GAAS6c,YAC9B,MAAMC,EAAM,KAAO9c,EAAM,GAAGkI,MAAM,GAElC,OAAgB,IADJlI,EAAM8C,MAAMiQ,QAAQ+J,EAAKD,EACpB,EAsCRE,CAAc/c,EAAO,CAAE6c,MAAOF,KACjC9Z,EAASvI,eAQb,MAAM0iB,EAAahd,EAAM8C,MAAM7C,UAAU0c,KAIpCxa,EAAI6a,EAAWhd,MAAM,YAQrBmC,EAAI6a,EAAWhd,MAAM,oBACR,IAAZmC,EAAEjC,QARN2C,EAASvI,aAaX,GAGE2iB,EAAa,CACjBpU,SAAUxI,EACVqE,QAAS6R,EACT8B,QAAS7B,EACT2B,SAAUtB,EACV,oBAAqBD,GAIjBb,EAAgB,kBAChBC,EAAO,OAAOD,KAGdmH,EAAiB,sCACjBC,EAAS,CACbvhB,UAAW,SACXyN,SAAU,CAER,CAAE1I,MAAO,QAAQuc,OAAoBlH,aAAgBA,gBACtCD,SACf,CAAEpV,MAAO,OAAOuc,UAAuBlH,gBAAmBA,SAG1D,CAAErV,MAAO,8BAGT,CAAEA,MAAO,4CACT,CAAEA,MAAO,gCACT,CAAEA,MAAO,gCAIT,CAAEA,MAAO,oBAEXC,UAAW,GAGP+Y,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,SACPG,IAAK,MACLsC,SAAU6Z,EACVjc,SAAU,IAENoc,EAAgB,CACpBzc,MAAO,UACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,QAGXyQ,EAAe,CACnB1c,MAAO,SACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,QAGX0Q,EAAmB,CACvB3c,MAAO,SACPG,IAAK,GACL8C,OAAQ,CACN9C,IAAK,IACLyF,WAAW,EACXvF,SAAU,CACRsJ,EAAK5J,iBACLiZ,GAEF/M,YAAa,YAGX2Q,EAAkB,CACtB3hB,UAAW,SACX+E,MAAO,IACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACLiZ,IA0CEzY,EAAU,CACdtF,UAAW,UACXyN,SAAU,CAzCUiB,EAAKpJ,QACzB,eACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CACEL,MAAO,iBACPC,UAAW,EACXI,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,cAET,CACE/E,UAAW,OACX+E,MAAO,MACPG,IAAK,MACLwF,YAAY,EACZlF,cAAc,EACdR,UAAW,GAEb,CACEhF,UAAW,WACX+E,MAAO4b,EAAa,gBACpBxY,YAAY,EACZnD,UAAW,GAIb,CACED,MAAO,cACPC,UAAW,QAWnB0J,EAAK/I,qBACL+I,EAAKhJ,sBAGHkc,EAAkB,CACtBlT,EAAKzJ,iBACLyJ,EAAKrJ,kBACLmc,EACAC,EACAC,EACAC,EAEA,CAAEvd,MAAO,SACTmd,GAKFxD,EAAM3Y,SAAWwc,EACd5e,OAAO,CAGN+B,MAAO,KACPG,IAAK,KACLsC,SAAU6Z,EACVjc,SAAU,CACR,QACApC,OAAO4e,KAEb,MAAMC,EAAqB,GAAG7e,OAAOsC,EAASyY,EAAM3Y,UAC9C0c,EAAkBD,EAAmB7e,OAAO,CAEhD,CACE+B,MAAO,UACPG,IAAK,KACLsC,SAAU6Z,EACVjc,SAAU,CAAC,QAAQpC,OAAO6e,MAGxBpB,EAAS,CACbzgB,UAAW,SAEX+E,MAAO,UACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAU6Z,EACVjc,SAAU0c,GAINC,EAAmB,CACvBtU,SAAU,CAER,CACErJ,MAAO,CACL,QACA,MACAuc,EACA,MACA,UACA,MACA1c,EAAMjB,OAAO2d,EAAY,IAAK1c,EAAMjB,OAAO,KAAM2d,GAAa,OAEhErhB,MAAO,CACL,EAAG,UACH,EAAG,cACH,EAAG,UACH,EAAG,0BAIP,CACE8E,MAAO,CACL,QACA,MACAuc,GAEFrhB,MAAO,CACL,EAAG,UACH,EAAG,kBAOL0iB,EAAkB,CACtBhd,UAAW,EACXZ,MACAH,EAAMb,OAEJ,SAEA,iCAEA,6CAEA,oDAMFpD,UAAW,cACXwH,SAAU,CACRkT,EAAG,IAEEG,KACAC,KAYHmH,EAAsB,CAC1BxU,SAAU,CACR,CACErJ,MAAO,CACL,WACA,MACAuc,EACA,cAIJ,CACEvc,MAAO,CACL,WACA,eAINpE,UAAW,CACT,EAAG,UACH,EAAG,kBAELkiB,MAAO,WACP9c,SAAU,CAAEqb,GACZtb,QAAS,KAaLgd,EAAgB,CACpB/d,MAAOH,EAAMjB,OACX,MANY+P,EAOL,IACFgI,EACH,QACA,UACAxa,KAAIC,GAAK,GAAGA,aAVTyD,EAAMjB,OAAO,MAAO+P,EAAKpS,KAAK,KAAM,MAWzCggB,EAAY1c,EAAMlB,UAAU,UAC9B/C,UAAW,iBACXgF,UAAW,GAdb,IAAgB+N,EAiBhB,MAAMqP,EAAkB,CACtBrd,MAAOd,EAAMjB,OAAO,KAAMiB,EAAMlB,UAC9BkB,EAAMjB,OAAO2d,EAAY,wBAE3Bzb,IAAKyb,EACLnb,cAAc,EACdgC,SAAU,YACVxH,UAAW,WACXgF,UAAW,GAGPqd,EAAmB,CACvBje,MAAO,CACL,UACA,MACAuc,EACA,UAEF3gB,UAAW,CACT,EAAG,UACH,EAAG,kBAELoF,SAAU,CACR,CACEL,MAAO,QAET0b,IAIE6B,EAAkB,2DAMb5T,EAAKhK,oBAAsB,UAEhC6d,EAAoB,CACxBne,MAAO,CACL,gBAAiB,MACjBuc,EAAY,MACZ,OACA,cACA1c,EAAMlB,UAAUuf,IAElB9a,SAAU,QACVxH,UAAW,CACT,EAAG,UACH,EAAG,kBAELoF,SAAU,CACRqb,IAIJ,MAAO,CACL1iB,KAAM,aACN6Q,QAAS,CAAC,KAAM,MAAO,MAAO,OAC9BpH,SAAU6Z,EAEV5J,QAAS,CAAEqK,kBAAiBE,mBAC5B7c,QAAS,eACTC,SAAU,CACRsJ,EAAK7H,QAAQ,CACXqb,MAAO,UACPnb,OAAQ,OACR/B,UAAW,IA5HE,CACjBkd,MAAO,aACPliB,UAAW,OACXgF,UAAW,GACXD,MAAO,gCA2HL2J,EAAKzJ,iBACLyJ,EAAKrJ,kBACLmc,EACAC,EACAC,EACAC,EACArc,EAEA,CAAElB,MAAO,SACTmd,EACAS,EACA,CACE1iB,MAAO,OACP8E,MAAOuc,EAAa1c,EAAMlB,UAAU,KACpCiC,UAAW,GAEbud,EACA,CACExd,MAAO,IAAM2J,EAAK9H,eAAiB,kCACnCY,SAAU,oBACVxC,UAAW,EACXI,SAAU,CACRE,EACAoJ,EAAK1I,YACL,CACEhG,UAAW,WAIX+E,MAAOud,EACP9X,aAAa,EACbtF,IAAK,SACLE,SAAU,CACR,CACEpF,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO2J,EAAKhK,oBACZM,UAAW,GAEb,CACEhF,UAAW,KACX+E,MAAO,UACPwF,MAAM,GAER,CACExF,MAAO,UACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,EACZlD,SAAU6Z,EACVjc,SAAU0c,OAMpB,CACE/c,MAAO,IACPC,UAAW,GAEb,CACEZ,MAAO,MACPY,UAAW,GAEb,CACEyI,SAAU,CACR,CAAE1I,MAAO6b,EAAgB1b,IAAK0b,GAC9B,CAAExc,MAvfW,6BAwfb,CACEW,MAAO8b,EAAQ9b,MAGf,WAAY8b,EAAQC,kBACpB5b,IAAK2b,EAAQ3b,MAGjB8L,YAAa,MACb5L,SAAU,CACR,CACEL,MAAO8b,EAAQ9b,MACfG,IAAK2b,EAAQ3b,IACbqF,MAAM,EACNnF,SAAU,CAAC,aAMrB6c,EACA,CAGE5a,cAAe,6BAEjB,CAIEtC,MAAO,kBAAoB2J,EAAKhK,oBAAzB,gEAQP8F,aAAY,EACZ0X,MAAO,WACP9c,SAAU,CACRqb,EACA/R,EAAKJ,QAAQI,EAAKzI,WAAY,CAAElB,MAAO4b,EAAY3gB,UAAW,qBAIlE,CACEoE,MAAO,SACPY,UAAW,GAEbod,EAIA,CACEhe,MAAO,MAAQuc,EACf3b,UAAW,GAEb,CACEZ,MAAO,CAAE,0BACTpE,UAAW,CAAE,EAAG,kBAChBoF,SAAU,CAAEqb,IAEd0B,EAjOwB,CAC1Bnd,UAAW,EACXZ,MAAO,sBACPpE,UAAW,qBAgOT+hB,EACAM,EACA,CACEje,MAAO,WAIf,EMlsBEoe,KUpDF,SAAc9T,GACZ,MAUMkM,EAAW,CACf,OACA,QACA,QAOI6H,EAAgB,CACpBnjB,MAAO,UACP+H,cAAeuT,EAASja,KAAK,MAG/B,MAAO,CACL5C,KAAM,OACN6Q,QAAS,CAAC,SACVpH,SAAS,CACPiV,QAAS7B,GAEXxV,SAAU,CA/BM,CAChBpF,UAAW,OACX+E,MAAO,8BACPC,UAAW,MAEO,CAClBZ,MAAO,YACPpE,UAAW,cACXgF,UAAW,GA0BT0J,EAAKrJ,kBACLod,EACA/T,EAAK5I,cACL4I,EAAKhJ,oBACLgJ,EAAK/I,sBAEPR,QAAS,MAEb,EVUEud,OLjBF,SAAgBhU,GACd,MAAMiM,EAAW,CACf7R,QACE,wYAKFyT,SACE,kEACFE,QACE,mBAYEkG,EAAQ,CACZ3iB,UAAW,SACX+E,MAAO2J,EAAKhK,oBAAsB,KAI9BqZ,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,OACPG,IAAK,KACLE,SAAU,CAAEsJ,EAAK5I,gBAEb8c,EAAW,CACf5iB,UAAW,WACX+E,MAAO,MAAQ2J,EAAKhK,qBAEhBqa,EAAS,CACb/e,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,MACPG,IAAK,cACLE,SAAU,CACRwd,EACA7E,IAMJ,CACEhZ,MAAO,IACPG,IAAK,IACLC,QAAS,KACTC,SAAU,CAAEsJ,EAAK5J,mBAEnB,CACEC,MAAO,IACPG,IAAK,IACLC,QAAS,KACTC,SAAU,CACRsJ,EAAK5J,iBACL8d,EACA7E,MAKRA,EAAM3Y,SAAS3D,KAAKsd,GAEpB,MAAM8D,EAAsB,CAC1B7iB,UAAW,OACX+E,MAAO,gFAAkF2J,EAAKhK,oBAAsB,MAEhH8b,EAAa,CACjBxgB,UAAW,OACX+E,MAAO,IAAM2J,EAAKhK,oBAClBU,SAAU,CACR,CACEL,MAAO,KACPG,IAAK,KACLE,SAAU,CACRsJ,EAAKJ,QAAQyQ,EAAQ,CAAE/e,UAAW,WAClC,WASF8iB,EAAqB,EACrBC,EAAwBrU,EAAKpJ,QACjC,OAAQ,OACR,CAAEF,SAAU,CAAEsJ,EAAK/I,wBAEfqd,EAAoB,CAAEvV,SAAU,CACpC,CACEzN,UAAW,OACX+E,MAAO2J,EAAKhK,qBAEd,CACEK,MAAO,KACPG,IAAK,KACLE,SAAU,MAGR6d,EAAqBD,EAI3B,OAHAC,EAAmBxV,SAAS,GAAGrI,SAAW,CAAE4d,GAC5CA,EAAkBvV,SAAS,GAAGrI,SAAW,CAAE6d,GAEpC,CACLllB,KAAM,SACN6Q,QAAS,CACP,KACA,OAEFpH,SAAUmT,EACVvV,SAAU,CACRsJ,EAAKpJ,QACH,UACA,OACA,CACEN,UAAW,EACXI,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,iBAKf2J,EAAKhJ,oBACLqd,EA5HwB,CAC1B/iB,UAAW,UACX+E,MAAO,mCACPiD,OAAQ,CAAE5C,SAAU,CAClB,CACEpF,UAAW,SACX+E,MAAO,WAwHT4d,EACAE,EACArC,EACA,CACExgB,UAAW,WACXqH,cAAe,MACfnC,IAAK,QACLsF,aAAa,EACbE,YAAY,EACZlD,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,CACEL,MAAO2J,EAAKhK,oBAAsB,UAClC8F,aAAa,EACbxF,UAAW,EACXI,SAAU,CAAEsJ,EAAKxI,wBAEnB,CACElG,UAAW,OACX+E,MAAO,IACPG,IAAK,IACLsC,SAAU,UACVxC,UAAW,GAEb,CACEhF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLiD,YAAY,EACZX,SAAUmT,EACV3V,UAAW,EACXI,SAAU,CACR,CACEL,MAAO,IACPG,IAAK,SACLkI,gBAAgB,EAChBhI,SAAU,CACR4d,EACAtU,EAAKhJ,oBACLqd,GAEF/d,UAAW,GAEb0J,EAAKhJ,oBACLqd,EACAF,EACArC,EACAzB,EACArQ,EAAK5I,gBAGTid,IAGJ,CACEhe,MAAO,CACL,wBACA,MACA2J,EAAKhK,qBAEP0F,WAAY,CACV,EAAG,eAEL5C,SAAU,wBACVtC,IAAK,WACLwF,YAAY,EACZvF,QAAS,qBACTC,SAAU,CACR,CAAEiC,cAAe,iDACjBqH,EAAKxI,sBACL,CACElG,UAAW,OACX+E,MAAO,IACPG,IAAK,IACLM,cAAc,EACdkF,YAAY,EACZ1F,UAAW,GAEb,CACEhF,UAAW,OACX+E,MAAO,UACPG,IAAK,eACLM,cAAc,EACdmF,WAAW,GAEbkY,EACArC,IAGJzB,EACA,CACE/e,UAAW,OACX+E,MAAO,kBACPG,IAAK,IACLC,QAAS,MAEX2d,GAGN,EK7NEI,KJ2vBF,SAAcxU,GACZ,MAAM0Q,EA1zBM,CAAC1Q,IACN,CACL2Q,UAAW,CACT/f,MAAO,OACPyF,MAAO,cAETua,cAAe5Q,EAAK/I,qBACpB4Z,SAAU,CACRjgB,MAAO,SACPyF,MAAO,mDAETsY,kBAAmB,CACjBrd,UAAW,WACX+E,MAAO,gBAETya,wBAAyB,CACvBlgB,MAAO,gBACPyF,MAAO,KACPG,IAAK,KACLC,QAAS,IACTC,SAAU,CACRsJ,EAAKzJ,iBACLyJ,EAAKrJ,oBAGToa,gBAAiB,CACfngB,MAAO,SACPyF,MAAO2J,EAAK/J,UAAL+J,kGASP1J,UAAW,GAEb0a,aAAc,CACZ1f,UAAW,OACX+E,MAAO,+BAkxBG,CAAM2J,GACdyU,EAAqBjI,EAGrBzW,EAAW,UACX2e,EAAkB,IAAM3e,EAAW,QAAUA,EAAW,OAIxD4e,EAAQ,GAAUC,EAAc,GAEhCC,EAAc,SAAS/V,GAC3B,MAAO,CAELxN,UAAW,SACX+E,MAAO,KAAOyI,EAAI,MAAQA,EAE9B,EAEMgW,EAAa,SAASzlB,EAAMgH,EAAOC,GACvC,MAAO,CACLhF,UAAWjC,EACXgH,MAAOA,EACPC,UAAWA,EAEf,EAEMye,EAAc,CAClBxW,SAAU,UACVnE,QA1BmB,kBA2BnB8W,UAAW,EAAejf,KAAK,MAG3B+iB,EAAc,CAElB3e,MAAO,MACPG,IAAK,MACLE,SAAUke,EACV9b,SAAUic,EACVze,UAAW,GAIbse,EAAY7hB,KACViN,EAAKhJ,oBACLgJ,EAAK/I,qBACL4d,EAAY,KACZA,EAAY,KACZnE,EAAMK,gBACN,CACE1a,MAAO,oBACPiD,OAAQ,CACNhI,UAAW,SACXkF,IAAK,WACLwF,YAAY,IAGhB0U,EAAMG,SACNmE,EACAF,EAAW,WAAY,MAAQ/e,EAAU,IACzC+e,EAAW,WAAY,OAAS/e,EAAW,OAC3C+e,EAAW,WAAY,cACvB,CACExjB,UAAW,YACX+E,MAAON,EAAW,QAClBS,IAAK,IACLsF,aAAa,EACbE,YAAY,GAEd0U,EAAMC,UACN,CAAEhY,cAAe,WACjB+X,EAAM/B,mBAGR,MAAMsG,EAAsBL,EAAYtgB,OAAO,CAC7C+B,MAAO,KACPG,IAAK,KACLE,SAAUie,IAGNO,EAAmB,CACvBvc,cAAe,OACf+F,gBAAgB,EAChBhI,SAAU,CAAE,CAAEiC,cAAe,YAAcrE,OAAOsgB,IAK9CO,EAAY,CAChB9e,MAAOqe,EAAkB,QACzB5Y,aAAa,EACbtF,IAAK,OACLF,UAAW,EACXI,SAAU,CACR,CAAEL,MAAO,uBACTqa,EAAMM,aACN,CACE1f,UAAW,YACX+E,MAAO,OAAS,EAAWpE,KAAK,KAAO,OACvCuE,IAAK,QACL8C,OAAQ,CACNoF,gBAAgB,EAChBjI,QAAS,QACTH,UAAW,EACXI,SAAUke,MAMZQ,EAAe,CACnB9jB,UAAW,UACX+E,MAAO,2GACPiD,OAAQ,CACN9C,IAAK,QACLsC,SAAUic,EACV9Y,WAAW,EACXvF,SAAUke,EACVte,UAAW,IAKT+e,EAAgB,CACpB/jB,UAAW,WACXyN,SAAU,CAKR,CACE1I,MAAO,IAAMN,EAAW,QACxBO,UAAW,IAEb,CAAED,MAAO,IAAMN,IAEjBuD,OAAQ,CACN9C,IAAK,OACLyF,WAAW,EACXvF,SAAUue,IAIRK,EAAgB,CAIpBvW,SAAU,CACR,CACE1I,MAAO,eACPG,IAAK,SAEP,CACEH,MAAOqe,EACPle,IAAK,OAGTsF,aAAa,EACbG,WAAW,EACXxF,QAAS,WACTH,UAAW,EACXI,SAAU,CACRsJ,EAAKhJ,oBACLgJ,EAAK/I,qBACLie,EACAJ,EAAW,UAAW,UACtBA,EAAW,WAAY,OAAS/e,EAAW,OAE3C,CACEM,MAAO,OAAS,EAAKpE,KAAK,KAAO,OACjCX,UAAW,gBAEbof,EAAMK,gBACN+D,EAAW,eAAgBJ,EAAiB,GAC5CI,EAAW,cAAe,IAAMJ,GAChCI,EAAW,iBAAkB,MAAQJ,EAAiB,GACtDI,EAAW,eAAgB,IAAK,GAChCpE,EAAMI,wBACN,CACExf,UAAW,kBACX+E,MAAO,KAAO,EAAepE,KAAK,KAAO,KAE3C,CACEX,UAAW,kBACX+E,MAAO,SAAW,EAAgBpE,KAAK,KAAO,KAEhD,CACEoE,MAAO,KACPG,IAAK,KACLF,UAAW,EACXI,SAAUue,GAEZ,CAAE5e,MAAO,cACTqa,EAAM/B,oBAIJ4G,EAAuB,CAC3Blf,MAAON,EAAW,QAAU,IAAI0e,EAAmBxiB,KAAK,QACxD6J,aAAa,EACbpF,SAAU,CAAE4e,IAed,OAZAX,EAAM5hB,KACJiN,EAAKhJ,oBACLgJ,EAAK/I,qBACLme,EACAC,EACAE,EACAJ,EACAG,EACAJ,EACAxE,EAAM/B,mBAGD,CACLtf,KAAM,OACNkN,kBAAkB,EAClB9F,QAAS,cACTC,SAAUie,EAEd,EIx9BEa,IWvDF,SAAaxV,GACX,MAAMyV,EAAuB,WACvBC,EAAuB,WACvBC,EAAgB,CACpBtf,MAAOof,EACPjf,IAAKkf,EACLhf,SAAU,CAAE,SAER6a,EAAW,CACfvR,EAAKpJ,QAAQ,QAAU6e,EAAuB,IAAK,KACnDzV,EAAKpJ,QACH,KAAO6e,EACPC,EACA,CACEhf,SAAU,CAAEif,GACZrf,UAAW,MAIjB,MAAO,CACLjH,KAAM,MACN6Q,QAAS,CAAC,SACVpH,SAAU,CACRyF,SAAUyB,EAAKhK,oBACf+X,QAAS,iBACT3T,QAAS,0FACTyT,SAEE,wlCAeJnX,SAAU6a,EAASjd,OAAO,CACxB,CACEhD,UAAW,WACXqH,cAAe,WACfnC,IAAK,MACLE,SAAU,CACRsJ,EAAKJ,QAAQI,EAAKzI,WAAY,CAAElB,MAAO,sDACvC,CACE/E,UAAW,SACX+E,MAAO,MACPqI,gBAAgB,EAChBhI,SAAU6a,IAEZjd,OAAOid,IAEXvR,EAAK5I,cACL4I,EAAKzJ,iBACLyJ,EAAKrJ,kBACL,CACErF,UAAW,SACX+E,MAAOof,EACPjf,IAAKkf,EACLhf,SAAU,CAAEif,GACZrf,UAAW,KAInB,EXdEsf,SYxDF,SAAkB5V,GAEhB,MAAMkU,EAAW,CACf5iB,UAAW,WACXyN,SAAU,CACR,CACE1I,MAAO,SAAW2J,EAAKhK,oBAAsB,MAC7CU,SAAU,CAAEsJ,EAAK5J,mBAEnB,CAAEC,MAAO,oBAIPkZ,EAAe,CACnBje,UAAW,SACX+E,MAAO,IACPG,IAAK,IACLE,SAAU,CACRsJ,EAAK5J,iBACL8d,IAIE2B,EAAO,CACXvkB,UAAW,WACX+E,MAAO,eACPG,IAAK,KACLsC,SAAU,CAAE+U,SACR,kPAIJnX,SAAU,CACRwd,EACA3E,IAIEuG,EAAa,CAAEzf,MAAO,IAAM2J,EAAKhK,oBAAsB,mBAYvD+f,EAAS,CACbzkB,UAAW,UACX+E,MAAO,WACPG,IAAK,IACLE,SAAU,CAAEwd,IAEd,MAAO,CACL7kB,KAAM,WACN6Q,QAAS,CACP,KACA,MACA,QAEFpH,SAAU,CACRyF,SAAU,SACVnE,QAAS,6HAGX1D,SAAU,CACRsJ,EAAK9I,kBACLgd,EACA3E,EACAsG,EACAC,EAjCS,CACXxkB,UAAW,OACX+E,MAAO,YACPG,IAAK,IACLsC,SAAU,CACRyF,SAAU,UACVnE,QAAS,WA6BT2b,GAGN,EZrBEC,SazDF,SAAkBhW,GAChB,MACMiW,EAAc,CAClB5f,MAAO,gBACPG,IAAK,IACL8L,YAAa,MACbhM,UAAW,GA8DP4f,EAAO,CACXnX,SAAU,CAGR,CACE1I,MAAO,iBACPC,UAAW,GAGb,CACED,MAAO,gEACPC,UAAW,GAEb,CACED,MAjFQ2J,EAAKzK,MAiFAjB,OAAO,YAfP,0BAegC,cAC7CgC,UAAW,GAGb,CACED,MAAO,wBACPC,UAAW,GAGb,CACED,MAAO,iBACPC,UAAW,IAGfwF,aAAa,EACbpF,SAAU,CACR,CAEEhB,MAAO,YACT,CACEpE,UAAW,SACXgF,UAAW,EACXD,MAAO,MACPG,IAAK,MACLM,cAAc,EACdmF,WAAW,GAEb,CACE3K,UAAW,OACXgF,UAAW,EACXD,MAAO,SACPG,IAAK,MACLM,cAAc,EACdkF,YAAY,GAEd,CACE1K,UAAW,SACXgF,UAAW,EACXD,MAAO,SACPG,IAAK,MACLM,cAAc,EACdkF,YAAY,KAIZma,EAAO,CACX7kB,UAAW,SACXoF,SAAU,GACVqI,SAAU,CACR,CACE1I,MAAO,aACPG,IAAK,QAEP,CACEH,MAAO,cACPG,IAAK,WAIL4f,EAAS,CACb9kB,UAAW,WACXoF,SAAU,GACVqI,SAAU,CACR,CACE1I,MAAO,cACPG,IAAK,MAEP,CACEH,MAAO,aACPG,IAAK,IACLF,UAAW,KAQX+f,EAAsBrW,EAAKJ,QAAQuW,EAAM,CAAEzf,SAAU,KACrD4f,EAAsBtW,EAAKJ,QAAQwW,EAAQ,CAAE1f,SAAU,KAC7Dyf,EAAKzf,SAAS3D,KAAKujB,GACnBF,EAAO1f,SAAS3D,KAAKsjB,GAErB,IAAIE,EAAc,CAChBN,EACAC,GAiDF,MA9CA,CACEC,EACAC,EACAC,EACAC,GACAlnB,SAAQyI,IACRA,EAAEnB,SAAWmB,EAAEnB,SAASpC,OAAOiiB,EAAY,IAG7CA,EAAcA,EAAYjiB,OAAO6hB,EAAMC,GAqChC,CACL/mB,KAAM,WACN6Q,QAAS,CACP,KACA,SACA,OAEFxJ,SAAU,CA1CG,CACbpF,UAAW,UACXyN,SAAU,CACR,CACE1I,MAAO,UACPG,IAAK,IACLE,SAAU6f,GAEZ,CACElgB,MAAO,uBACPK,SAAU,CACR,CAAEL,MAAO,WACT,CACEA,MAAO,IACPG,IAAK,MACLE,SAAU6f,OA6BhBN,EAvLS,CACX3kB,UAAW,SACX+E,MAAO,mCACPG,IAAK,OACLwF,YAAY,GAqLVma,EACAC,EAzBe,CACjB9kB,UAAW,QACX+E,MAAO,SACPK,SAAU6f,EACV/f,IAAK,KAnMM,CACXlF,UAAW,OACXyN,SAAU,CAER,CAAE1I,MAAO,iCACT,CAAEA,MAAO,iCAET,CACEA,MAAO,MACPG,IAAK,aAEP,CACEH,MAAO,MACPG,IAAK,aAEP,CAAEH,MAAO,SACT,CACEA,MAAO,kBAGPK,SAAU,CACR,CACEL,MAAO,cACPG,IAAK,WAGTF,UAAW,KA9BO,CACtBD,MAAO,cACPG,IAAK,KA8NH0f,EAxLmB,CACrB7f,MAAO,eACPyF,aAAa,EACbpF,SAAU,CACR,CACEpF,UAAW,SACX+E,MAAO,KACPG,IAAK,KACLM,cAAc,EACdkF,YAAY,GAEd,CACE1K,UAAW,OACX+E,MAAO,OACPG,IAAK,IACLM,cAAc,KAmJL,CAEblG,MAAO,UACP8E,MAAO,uDAwBX,EbnLE8gB,Wc1DF,SAAoBxW,GAClB,MAIMyW,EAAgB,yBAkKhBC,EAAiB,CACrBnY,SAAUkY,EACVrc,QAAS,CACP,aACA,SACA,YACA,oBAGJ,MAAO,CACL/K,KAAM,cACN6Q,QAAS,CACP,KACA,OACA,QACA,UACA,iBAEFpH,SA7Be,CACf,oBAAqB,CACnB,OACA,SAEFyF,SAAUkY,EACVrc,QA3IU,CACV,QACA,SACA,SACA,UACA,QACA,SACA,MACA,QACA,WACA,SACA,UACA,KACA,KACA,SACA,OACA,OACA,OACA,QACA,SACA,MACA,OACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,WACA,SACA,YACA,OACA,gBACA,KACA,SACA,YACA,WACA,WACA,SACA,OACA,OACA,KACA,MACA,QACA,SACA,QACA,SACA,WACA,SACA,UACA,kBACA,WACA,aACA,UACA,OACA,YACA,OACA,SACA,SACA,WACA,mBACA,cACA,WACA,YACA,YACA,YACA,UACA,WACA,UACA,QACA,uBACA,WACA,oBACA,oBACA,kBACA,cACA,kBACA,WACA,WACA,YACA,oBACA,eACA,sBACA,gBACA,SACA,SACA,SACA,oBACA,UACA,WACA,mBACA,kBACA,QACA,eACA,4BACA,iBACA,oBACA,2BACA,YACA,eACA,gBACA,UACA,aACA,uBACA,0BACA,wBACA,uBACA,gBACA,mBACA,YACA,aACA,gBACA,iBACA,iBA0BA2T,QAxBe,CACf,QACA,OACA,QACA,OACA,MACA,MACA,KACA,QAiBAF,SAfgB,CAChB,kBACA,mBACA,gBACA,iBACA,iBAWAte,KA/JY,CACZ,MACA,QACA,OACA,WACA,SACA,QACA,OACA,SACA,UACA,UACA,OACA,OACA,OACA,OACA,UAqKAkH,QAAS,KACTC,SAAU,CA1LM,CAChBpF,UAAW,WACX+E,MAAO,wEA0LL2J,EAAKhJ,oBACLgJ,EAAK/I,qBACL+I,EAAK5I,cACL4I,EAAKrJ,kBACLqJ,EAAKzJ,iBACL,CACEjF,UAAW,SACXyN,SAAU,CACR,CACE1I,MAAO,KACPG,IAAK,IACLC,QAAS,MACTC,SAAU,CAAEsJ,EAAK5J,qBAIvB,CACE9E,UAAW,OACX+E,MAAO,eACPG,IAAK,IACLsC,SAAU,CAAEsB,QACR,kFAEJ1D,SAAU,CACR,CACEL,MAAO,OACPC,UAAW,GAEb0J,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CAAErF,UAAW,WAClD,CACEA,UAAW,SACX+E,MAAO,QACPG,IAAK,IACLC,QAAS,OAEXuJ,EAAKhJ,oBACLgJ,EAAK/I,uBAGT,CACE3F,UAAW,QACX+E,MAAO,IAAMqgB,EAAetc,QAAQnI,KAAK,KAAO,OAChDuE,IAAK,SACLwF,YAAY,EACZlD,SAAU4d,EACVhgB,SAAU,CAAEsJ,EAAKxI,wBAEnB,CACEnB,MAAO,MAAQ2J,EAAKhK,oBACpBM,UAAW,IAInB,EdvLEqgB,Ke3DF,SAAc3W,GACZ,MAAMzK,EAAQyK,EAAKzK,MA8ObqhB,EAAkB,uBAClBC,EAAgB,CACpBtY,SAAU,SACVnE,QAhPe,CACf,MACA,SACA,QACA,MACA,QACA,OACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,MACA,SACA,QACA,QACA,WACA,UACA,WACA,MACA,QACA,WACA,UACA,UACA,SACA,MACA,KACA,OACA,OACA,OACA,QACA,WACA,aACA,YACA,cACA,WACA,aACA,MACA,OACA,OACA,SACA,OACA,MACA,QACA,QACA,SACA,QACA,MACA,UACA,OACA,SACA,WACA,OACA,WACA,WACA,WACA,gBACA,gBACA,aACA,WACA,eACA,eACA,YACA,cACA,UACA,cACA,iBACA,mBACA,cACA,WACA,WACA,WACA,gBACA,gBACA,aACA,cACA,aACA,QACA,OACA,SACA,OACA,OACA,KACA,MACA,KACA,QACA,MACA,QACA,OACA,OACA,OACA,OACA,KACA,UACA,SACA,OACA,SACA,QACA,YACA,MACA,QACA,KACA,KACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,KACA,KACA,OACA,KACA,MACA,MACA,OACA,UACA,KACA,MACA,MACA,OACA,UACA,OACA,MACA,MACA,QACA,SACA,YACA,OACA,MACA,KACA,YACA,KACA,KACA,OACA,OACA,UACA,WACA,WACA,WACA,OACA,OACA,MACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,MACA,SACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,WACA,aACA,YACA,UACA,cACA,cACA,WACA,aACA,aACA,QACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,SACA,aACA,OACA,SACA,QACA,UACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,MACA,OACA,OACA,QACA,KACA,WACA,KACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,QACA,MACA,QACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,QACA,QACA,MACA,MACA,OAOkBnI,KAAK,MAEnBod,EAAQ,CACZ/d,UAAW,QACX+E,MAAO,UACPG,IAAK,MACLsC,SAAU+d,GAENC,EAAS,CACbzgB,MAAO,OACPG,IAAK,MAGDugB,EAAO,CACXnmB,MAAO,OACP8E,MAAO,2BAEHyZ,EAAM,CACVve,MAAO,WACPmO,SAAU,CACR,CAAE1I,MAAO,QACT,CAAEA,MAAOd,EAAMjB,OACb,sDAGA,0BAGF,CAEE+B,MAAO,0BACPC,U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CAAE1I,MAAO,SACT,CACEA,MAAO,OACPG,IAAK,QAILmhB,EAAgB3X,EAAKJ,QAAQI,EAAKzJ,iBAAkB,CAAEE,QAAS,OAmB/DmhB,EAAa,UACbvH,EAAS,CACbzf,MAAO,SACPmO,SAAU,CArBUiB,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACzDF,QAAS,KACTC,SAAUsJ,EAAKrJ,kBAAkBD,SAASpC,OAAO+a,KAqB/CsI,EAlBY,CACdthB,MAAO,+BACPG,IAAK,gBACLE,SAAUsJ,EAAKrJ,kBAAkBD,SAASpC,OAAO+a,GACjD,WAAY,CAACxX,EAAGC,KAAWA,EAAKjI,KAAKkI,YAAcF,EAAE,IAAMA,EAAE,EAAE,EAC/D,SAAU,CAACA,EAAGC,KAAeA,EAAKjI,KAAKkI,cAAgBF,EAAE,IAAIC,EAAK9H,aAAa,GAGlEgQ,EAAKpI,kBAAkB,CACpCvB,MAAO,qBACPG,IAAK,oBAaDqc,EAAS,CACbjiB,MAAO,SACPmO,SAAU,CACR,CAAE1I,MAAO,+BACT,CAAEA,MAAO,iCACT,CAAEA,MAAO,6CAET,CAAEA,MAAO,+EAEXC,UAAW,GAEP4V,EAAW,CACf,QACA,OACA,QAEI2L,EAAM,CAGV,YACA,UACA,WACA,eACA,2BACA,WACA,aACA,gBACA,YAGA,MACA,OACA,OACA,UACA,eACA,QACA,UACA,eAMA,QACA,WACA,MACA,KACA,SACA,OACA,UACA,QACA,WACA,OACA,QACA,QACA,QACA,QACA,WACA,UACA,UACA,KACA,SACA,OACA,SACA,QACA,aACA,SACA,aACA,QACA,YACA,WACA,OACA,OACA,UACA,QACA,UACA,QACA,MACA,UACA,OACA,SACA,OACA,KACA,aACA,aACA,YACA,MACA,UACA,YACA,QACA,WACA,OACA,UACA,QACA,MACA,QACA,SACA,KACA,UACA,YACA,SACA,WACA,OACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,SAGItL,EAAY,CAGhB,UACA,iBACA,qBACA,kBACA,gBACA,cACA,iBACA,2BACA,yBACA,kBACA,yBACA,eACA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U,CAGR,CACEL,MAAO,OACPG,IAAK,OACLqF,MAAM,GAER,CACExF,MAAO,KACPG,IAAK,IACLqF,MAAM,GAER,CACExF,MAAO,KACPG,IAAK,IACLqF,MAAM,GAERmE,EAAKJ,QAAQI,EAAKzJ,iBAAkB,CAClCE,QAAS,KACTnF,UAAW,KACXoF,SAAU,KACVmF,MAAM,IAERmE,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACnCF,QAAS,KACTnF,UAAW,KACXoF,SAAU,KACVmF,MAAM,OAMlB,EjBmBEoJ,UkB/DF,SAAmBjF,GACjB,MAAO,CACL3Q,KAAM,aACN6Q,QAAS,CACP,OACA,OAEFK,mBAAmB,EAEvB,ElBuDEiY,OmBhEF,SAAgBxY,GACd,MAAMzK,EAAQyK,EAAKzK,MACbQ,EAAW,qCACX0iB,EAAiB,CACrB,MACA,KACA,SACA,QACA,QACA,QACA,OACA,QACA,WACA,MACA,MACA,OACA,OACA,SACA,UACA,MACA,OACA,SACA,KACA,SACA,KACA,KACA,SACA,QACA,cACA,MACA,KACA,OACA,QACA,SACA,MACA,QACA,OACA,SAuGIxM,EAAW,CACf1N,SAAU,sBACVnE,QAASqe,EACT5K,SAvGgB,CAChB,aACA,MACA,MACA,MACA,QACA,MACA,OACA,aACA,YACA,QACA,WACA,MACA,cACA,UACA,UACA,UACA,OACA,MACA,SACA,YACA,OACA,OACA,SACA,QACA,SACA,YACA,UACA,UACA,UACA,OACA,OACA,MACA,KACA,QACA,MACA,aACA,aACA,OACA,MACA,OACA,SACA,MACA,MACA,aACA,MACA,OACA,SACA,MACA,OACA,MACA,MACA,QACA,WACA,QACA,OACA,WACA,QACA,MACA,UACA,QACA,SACA,eACA,MACA,MACA,QACA,QACA,OACA,OACA,OAmCAE,QAhCe,CACf,YACA,WACA,QACA,OACA,iBACA,QA2BAxe,KArBY,CACZ,MACA,WACA,YACA,OACA,OACA,UACA,UACA,WACA,WACA,MACA,QACA,OACA,UAWImpB,EAAS,CACbpnB,UAAW,OACX+E,MAAO,kBAGHgZ,EAAQ,CA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,MAAOd,EAAMjB,OACX,KACA,oCACAyB,EACAR,EAAMlB,UAAU,WAEd2lB,EAAgB,wCA+DhBC,EAAW,CAEf,QAEA,OACA,OACA,QACA,OACA,OACA,KACA,QACA,SACA,UACA,QACA,QACA,YACA,aACA,KACA,MACA,QACA,QACA,OACA,OACA,UACA,WACA,SACA,eACA,sBACA,oBACA,iBACA,WAEA,UACA,aACA,YACA,SACA,OACA,OACA,UACA,iBACA,gBACA,mBACA,OACA,YACA,SACA,QACA,UACA,eACA,iBACA,eACA,QACA,kBACA,eACA,cACA,SACA,WACA,UACA,aACA,OACA,iBACA,eACA,OACA,SACA,WACA,eACA,aACA,oBAEI9N,EAAQ,CACZ,KACA,MACA,MACA,MACA,OACA,QACA,KACA,MACA,MACA,MACA,OACA,QACA,MACA,MACA,MACA,OACA,OACA,MACA,SACA,SACA,SACA,OAEF,MAAO,CACL9c,KAAM,OACN6Q,QAAS,CAAE,MACXpH,SAAU,CACRyF,SAAUyB,EAAKjK,SAAW,KAC1BxG,KAAM4c,EACN/R,QAhKa,CACf,WACA,KACA,QACA,QACA,SACA,MACA,QACA,QACA,WACA,QACA,KACA,MACA,OACA,OACA,SACA,QACA,QACA,KACA,MACA,KACA,OACA,KACA,MACA,OACA,QACA,QACA,MACA,OACA,MACA,WACA,OACA,MACA,MACA,SACA,OACA,OACA,SACA,SACA,QACA,QACA,OACA,MACA,OACA,SACA,QACA,SACA,UACA,MACA,UACA,QACA,QACA,SA6GE2T,QA3Ga,CACf,OACA,QACA,OACA,OACA,KACA,OAsGEF,SAAUoM,GAEZxjB,QAAS,KACTC,SAAU,CACRsJ,EAAKhJ,oBACLgJ,EAAKpJ,QAAQ,OAAQ,OAAQ,CAAEF,SAAU,CAAE,UAC3CsJ,EAAKJ,QAAQI,EAAKrJ,kBAAmB,CACnCN,MAAO,MACPI,QAAS,OAEX,CACEnF,UAAW,SAEX+E,MAAO,gCAET,CACEzF,MAAO,SACPmO,SAAU,CACR,CAAE1I,MAAO,4BACT,CACEA,MAAO,MACPG,IAAK,IACLE,S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,qCACPiD,OAAQ,CACN9C,IAAK,gBACL8L,YAAa,UAKvB,ExBgDEgY,IyBxDF,SAAata,GACX,MAAMzK,EAAQyK,EAAKzK,MACbglB,EAAeva,EAAKpJ,QAAQ,KAAM,KA8blC4jB,EAAqB,CACzB,MACA,OACA,YACA,OACA,OACA,MACA,OACA,OACA,UACA,WACA,OACA,MACA,OACA,QACA,YACA,aACA,YACA,aACA,QACA,UACA,MACA,UACA,cACA,QACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,aACA,OACA,UACA,KACA,MACA,QACA,QACA,MACA,MACA,MACA,YACA,QACA,SACA,eACA,kBACA,kBACA,WACA,iBACA,QACA,OACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,aACA,MACA,OACA,OACA,aACA,cACA,YACA,kBACA,MACA,MACA,OACA,YACA,kBACA,QACA,OACA,aACA,SACA,QACA,WACA,UACA,WACA,gBA2CIC,EAAYD,EAEZvO,EAAW,CArff,MACA,OACA,MACA,WACA,QACA,MACA,MACA,MACA,QACA,YACA,wBACA,KACA,aACA,OACA,aACA,KACA,OACA,SACA,gBACA,MACA,QACA,cACA,kBACA,UACA,SACA,SACA,OACA,UACA,OACA,KACA,OACA,SACA,cACA,WACA,OACA,OACA,OACA,UACA,OACA,cACA,YACA,mBACA,QACA,aACA,OACA,QACA,WACA,UACA,UACA,SACA,SACA,YACA,UACA,aACA,WACA,UACA,OACA,OACA,gBACA,MACA,OACA,QACA,YACA,aACA,SACA,QACA,OACA,YACA,UACA,kBACA,eACA,kCACA,eACA,eACA,cACA,iBACA,eACA,oBACA,eACA,eACA,mCACA,eACA,SACA,QACA,OACA,MACA,aACA,MACA,UACA,WACA,UACA,UACA,SACA,SACA,aACA,QACA,WACA,gBACA,aACA,WACA,SACA,OACA,UACA,OACA,UACA,OACA,QACA,MACA,YACA,gBACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,SACA,MACA,WACA,UACA,QACA,QACA,SACA,cACA,QACA,QACA,MACA,UACA,YACA,OACA,OACA,OACA,WACA,SACA,MACA,SACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,UACA,QACA,QACA,cACA,SACA,MACA,UACA,YACA,eACA,WACA,OACA,KACA,OACA,aACA,gBACA,cACA,cACA,iBACA,aACA,aACA,uBACA,aACA,MACA,WACA,QACA,aACA,UACA,OACA,UACA,OACA,OACA,aACA,UACA,KACA,QACA,YACA,iBACA,MACA,QACA,QACA,QACA,eACA,kBACA,UACA,MACA,SACA,QACA,SACA,MACA,SACA,MACA,WACA,SACA,QACA,WACA,WACA,UACA,QACA,QACA,MACA,KACA,OACA,YACA,MACA,YACA,QACA,OACA,SACA,UACA,eACA,oBACA,KACA,SACA,MACA,OACA,KACA,MACA,OACA,OACA,KACA,QACA,MACA,QACA,OACA,WACA,UACA,YACA,YACA,UACA,MACA,UACA,eACA,kBACA,kBACA,SACA,UACA,WACA,iBACA,QACA,WACA,YACA,UACA,UACA,YACA,MACA,QACA,OACA,QACA,OACA,YACA,MACA,aACA,cACA,YACA,YACA,aACA,iBACA,UACA,aACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,SACA,MACA,aACA,OACA,UACA,YACA,QACA,SACA,SACA,SACA,OACA,SACA,YACA,eACA,MACA,OACA,UACA,MACA,OACA,OACA,WACA,OACA,WACA,eACA,MACA,eACA,WACA,aACA,OACA,QACA,SACA,aACA,cACA,cACA,SACA,YACA,kBACA,WACA,MACA,YACA,SACA,cACA,cACA,QACA,cACA,MACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,WACA,YACA,kBACA,cACA,QACA,UACA,OACA,aACA,OACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YACA,UACA,UACA,aACA,OACA,WACA,QACA,eACA,SACA,OACA,SACA,UACA,OAzXA,MACA,MACA,YACA,OACA,QACA,QACA,OACA,QA6fA7G,QAAQhL,IACAogB,EAAmB/oB,SAAS2I,KAchCqZ,EAAgB,CACpB/d,MAAOH,EAAMjB,OAAO,KAAMiB,EAAMb,UAAU+lB,GAAY,SACtDnkB,UAAW,EACXwC,SAAU,CAAE+U,SAAU4M,IAOxB,SAASC,EAAarW,GACpB,OAAO9O,EAAMjB,OACX,KACAiB,EAAMb,UAAU2P,EAAKxS,KAAK8oB,GACjBA,EAAGxqB,QAAQ,MAAO,WAE3B,KAEJ,CAEA,MAAMyqB,EAAsB,CAC1BhqB,MAAO,UACP8E,MAAOglB,EA7DM,CACb,eACA,cACA,cACA,cACA,WACA,cACA,iBACA,gBACA,cACA,gBACA,gBACA,eACA,cACA,aACA,cACA,kBA8CApkB,UAAW,GAoBb,MAAO,CACLjH,KAAM,MACNkN,kBAAkB,EAElB9F,QAAS,WACTqC,SAAU,CACRyF,SAAU,YACVnE,QAvBJ,SAAyBiK,GAAM,WAC7BwW,EAAU,KAAEC,GACV,CAAC,GACH,MAAMC,EAAYD,EAElB,OADAD,EAAaA,GAAc,GACpBxW,EAAKxS,KAAK2S,GACXA,EAAK9O,MAAM,WAAamlB,EAAWppB,SAAS+S,GACvCA,EACEuW,EAAUvW,GACZ,GAAGA,MAEHA,GAGb,CAUMwW,CAAgB/O,EAAU,CAAE6O,KAAOhpB,GAAMA,EAAEe,OAAS,IACtDkb,QArnBa,CACf,OACA,QAGA,WAinBExe,KAvmBU,CACZ,SACA,SACA,OACA,UACA,OACA,YACA,OACA,OACA,MACA,WACA,UACA,QACA,MACA,UACA,WACA,QACA,QACA,WACA,UACA,OACA,MACA,WACA,OACA,YACA,UACA,UACA,aA6kBEse,SAjH4B,CAC9B,kBACA,eACA,kCACA,eACA,eACA,iBACA,mCACA,eACA,eACA,cACA,cACA,eACA,YACA,oBACA,mBAoGAnX,SAAU,CACR,CACE9F,MAAO,OACP8E,MAAOglB,EApnBY,CACvB,mBACA,eACA,gBACA,sBAkn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","sources":["webpack:///recommendations/node_modules/highlight.js/lib/core.js","webpack:///recommendations/node_modules/unist-util-find-after/lib/index.js","webpack:///recommendations/node_modules/hast-util-to-text/lib/index.js","webpack:///recommendations/node_modules/highlight.js/es/languages/css.js","webpack:///recommendations/node_modules/highlight.js/es/languages/java.js","webpack:///recommendations/node_modules/highlight.js/es/languages/javascript.js","webpack:///recommendations/node_modules/highlight.js/es/languages/kotlin.js","webpack:///recommendations/node_modules/highlight.js/es/languages/less.js","webpack:///recommendations/node_modules/highlight.js/es/languages/scss.js","webpack:///recommendations/node_modules/highlight.js/es/languages/swift.js","webpack:///recommendations/node_modules/highlight.js/es/languages/typescript.js","webpack:///recommendations/node_modules/lowlight/lib/common.js","webpack:///recommendations/node_modules/highlight.js/es/languages/arduino.js","webpack:///recommendations/node_modules/highlight.js/es/languages/bash.js","webpack:///recommendations/node_modules/highlight.js/es/languages/c.js","webpack:///recommendations/node_modules/highlight.js/es/languages/cpp.js","webpack:///recommendations/node_modules/highlight.js/es/languages/csharp.js","webpack:///recommendations/node_modules/highlight.js/es/languages/diff.js","webpack:///recommendations/node_modules/highlight.js/es/languages/go.js","webpack:///recommendations/node_modules/highlight.js/es/languages/graphql.js","webpack:///recommendations/node_modules/highlight.js/es/languages/ini.js","webpack:///recommendations/node_modules/highlight.js/es/languages/json.js","webpack:///recommendations/node_modules/highlight.js/es/languages/lua.js","webpack:///recommendations/node_modules/highlight.js/es/languages/makefile.js","webpack:///recommendations/node_modules/highlight.js/es/languages/markdown.js","webpack:///recommendations/node_modules/highlight.js/es/languages/objectivec.js","webpack:///recommendations/node_modules/highlight.js/es/languages/perl.js","webpack:///recommendations/node_modules/highlight.js/es/languages/php.js","webpack:///recommendations/node_modules/highlight.js/es/languages/php-template.js","webpack:///recommendations/node_modules/highlight.js/es/languages/plaintext.js","webpack:///recommendations/node_modules/highlight.js/es/languages/python.js","webpack:///recommendations/node_modules/highlight.js/es/languages/python-repl.js","webpack:///recommendations/node_modules/highlight.js/es/languages/r.js","webpack:///recommendations/node_modules/highlight.js/es/languages/ruby.js","webpack:///recommendations/node_modules/highlight.js/es/languages/rust.js","webpack:///recommendations/node_modules/highlight.js/es/languages/shell.js","webpack:///recommendations/node_modules/highlight.js/es/languages/sql.js","webpack:///recommendations/node_modules/highlight.js/es/languages/vbnet.js","webpack:///recommendations/node_modules/highlight.js/es/languages/wasm.js","webpack:///recommendations/node_modules/highlight.js/es/languages/xml.js","webpack:///recommendations/node_modules/highlight.js/es/languages/yaml.js","webpack:///recommendations/node_modules/highlight.js/es/core.js","webpack:///recommendations/node_modules/lowlight/lib/index.js","webpack:///recommendations/node_modules/rehype-highlight/lib/index.js"],"sourcesContent":["/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n 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/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */\n const emit = {};\n /** @type Record<number,string> */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n modeBuffer += \"\\n\";\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n highlightAll();\n }\n\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n // make sure the event listener is only added once\n if (!wantsHighlight) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array<any>\n * ? MatchesOne<Value, Check[keyof Check]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {(\n * Kind extends {children: Array<infer Child>}\n * ? Child\n * : never\n * )} Child\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Kind\n * All node types.\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Find the first node in `parent` after another `node` or after an index,\n * that passes `test`.\n *\n * @param parent\n * Parent node.\n * @param index\n * Child node or index.\n * @param [test=undefined]\n * Test for child to look for (optional).\n * @returns\n * A child (matching `test`, if given) or `undefined`.\n */\nexport const findAfter =\n // Note: overloads like this are needed to support optional generics.\n /**\n * @type {(\n * (<Kind extends UnistParent, Check extends Test>(parent: Kind, index: Child<Kind> | number, test: Check) => Matches<Child<Kind>, Check> | undefined) &\n * (<Kind extends UnistParent>(parent: Kind, index: Child<Kind> | number, test?: null | undefined) => Child<Kind> | undefined)\n * )}\n */\n (\n /**\n * @param {UnistParent} parent\n * @param {UnistNode | number} index\n * @param {Test} [test]\n * @returns {UnistNode | undefined}\n */\n function (parent, index, test) {\n const is = convert(test)\n\n if (!parent || !parent.type || !parent.children) {\n throw new Error('Expected parent node')\n }\n\n if (typeof index === 'number') {\n if (index < 0 || index === Number.POSITIVE_INFINITY) {\n throw new Error('Expected positive finite number as index')\n }\n } else {\n index = parent.children.indexOf(index)\n\n if (index < 0) {\n throw new Error('Expected child node or index')\n }\n }\n\n while (++index < parent.children.length) {\n if (is(parent.children[index], index, parent)) {\n return parent.children[index]\n }\n }\n\n return undefined\n }\n )\n","/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast-util-is-element').TestFunction} TestFunction\n */\n\n/**\n * @typedef {'normal' | 'nowrap' | 'pre' | 'pre-wrap'} Whitespace\n * Valid and useful whitespace values (from CSS).\n *\n * @typedef {0 | 1 | 2} BreakNumber\n * Specific break:\n *\n * * `0` — space\n * * `1` — line ending\n * * `2` — blank line\n *\n * @typedef {'\\n'} BreakForce\n * Forced break.\n *\n * @typedef {boolean} BreakValue\n * Whether there was a break.\n *\n * @typedef {BreakNumber | BreakValue | undefined} BreakBefore\n * Any value for a break before.\n *\n * @typedef {BreakForce | BreakNumber | BreakValue | undefined} BreakAfter\n * Any value for a break after.\n *\n * @typedef CollectionInfo\n * Info on current collection.\n * @property {BreakAfter} breakAfter\n * Whether there was a break after.\n * @property {BreakBefore} breakBefore\n * Whether there was a break before.\n * @property {Whitespace} whitespace\n * Current whitespace setting.\n *\n * @typedef Options\n * Configuration.\n * @property {Whitespace | null | undefined} [whitespace='normal']\n * Initial CSS whitespace setting to use (default: `'normal'`).\n */\n\nimport {findAfter} from 'unist-util-find-after'\nimport {convertElement} from 'hast-util-is-element'\n\nconst searchLineFeeds = /\\n/g\nconst searchTabOrSpaces = /[\\t ]+/g\n\nconst br = convertElement('br')\nconst cell = convertElement(isCell)\nconst p = convertElement('p')\nconst row = convertElement('tr')\n\n// Note that we don’t need to include void elements here as they don’t have text.\n// See: <https://github.com/wooorm/html-void-elements>\nconst notRendered = convertElement([\n // List from: <https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements>\n 'datalist',\n 'head',\n 'noembed',\n 'noframes',\n 'noscript', // Act as if we support scripting.\n 'rp',\n 'script',\n 'style',\n 'template',\n 'title',\n // Hidden attribute.\n hidden,\n // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>\n closedDialog\n])\n\n// See: <https://html.spec.whatwg.org/multipage/rendering.html#the-css-user-agent-style-sheet-and-presentational-hints>\nconst blockOrCaption = convertElement([\n 'address', // Flow content\n 'article', // Sections and headings\n 'aside', // Sections and headings\n 'blockquote', // Flow content\n 'body', // Page\n 'caption', // `table-caption`\n 'center', // Flow content (legacy)\n 'dd', // Lists\n 'dialog', // Flow content\n 'dir', // Lists (legacy)\n 'dl', // Lists\n 'dt', // Lists\n 'div', // Flow content\n 'figure', // Flow content\n 'figcaption', // Flow content\n 'footer', // Flow content\n 'form,', // Flow content\n 'h1', // Sections and headings\n 'h2', // Sections and headings\n 'h3', // Sections and headings\n 'h4', // Sections and headings\n 'h5', // Sections and headings\n 'h6', // Sections and headings\n 'header', // Flow content\n 'hgroup', // Sections and headings\n 'hr', // Flow content\n 'html', // Page\n 'legend', // Flow content\n 'li', // Lists (as `display: list-item`)\n 'listing', // Flow content (legacy)\n 'main', // Flow content\n 'menu', // Lists\n 'nav', // Sections and headings\n 'ol', // Lists\n 'p', // Flow content\n 'plaintext', // Flow content (legacy)\n 'pre', // Flow content\n 'section', // Sections and headings\n 'ul', // Lists\n 'xmp' // Flow content (legacy)\n])\n\n/**\n * Get the plain-text value of a node.\n *\n * ###### Algorithm\n *\n * * if `tree` is a comment, returns its `value`\n * * if `tree` is a text, applies normal whitespace collapsing to its\n * `value`, as defined by the CSS Text spec\n * * if `tree` is a root or element, applies an algorithm similar to the\n * `innerText` getter as defined by HTML\n *\n * ###### Notes\n *\n * > 👉 **Note**: the algorithm acts as if `tree` is being rendered, and as if\n * > we’re a CSS-supporting user agent, with scripting enabled.\n *\n * * if `tree` is an element that is not displayed (such as a `head`), we’ll\n * still use the `innerText` algorithm instead of switching to `textContent`\n * * if descendants of `tree` are elements that are not displayed, they are\n * ignored\n * * CSS is not considered, except for the default user agent style sheet\n * * a line feed is collapsed instead of ignored in cases where Fullwidth, Wide,\n * or Halfwidth East Asian Width characters are used, the same goes for a case\n * with Chinese, Japanese, or Yi writing systems\n * * replaced elements (such as `audio`) are treated like non-replaced elements\n *\n * @param {Nodes} tree\n * Tree to turn into text.\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `tree`.\n */\nexport function toText(tree, options) {\n const options_ = options || {}\n const children = 'children' in tree ? tree.children : []\n const block = blockOrCaption(tree)\n const whitespace = inferWhitespace(tree, {\n whitespace: options_.whitespace || 'normal',\n breakBefore: false,\n breakAfter: false\n })\n\n /** @type {Array<BreakNumber | string>} */\n const results = []\n\n // Treat `text` and `comment` as having normal white-space.\n // This deviates from the spec as in the DOM the node’s `.data` has to be\n // returned.\n // If you want that behavior use `hast-util-to-string`.\n // All other nodes are later handled as if they are `element`s (so the\n // algorithm also works on a `root`).\n // Nodes without children are treated as a void element, so `doctype` is thus\n // ignored.\n if (tree.type === 'text' || tree.type === 'comment') {\n results.push(\n ...collectText(tree, {\n whitespace,\n breakBefore: true,\n breakAfter: true\n })\n )\n }\n\n // 1. If this element is not being rendered, or if the user agent is a\n // non-CSS user agent, then return the same value as the textContent IDL\n // attribute on this element.\n //\n // Note: we’re not supporting stylesheets so we’re acting as if the node\n // is rendered.\n //\n // If you want that behavior use `hast-util-to-string`.\n // Important: we’ll have to account for this later though.\n\n // 2. Let results be a new empty list.\n let index = -1\n\n // 3. For each child node node of this element:\n while (++index < children.length) {\n // 3.1. Let current be the list resulting in running the inner text\n // collection steps with node.\n // Each item in results will either be a JavaScript string or a\n // positive integer (a required line break count).\n // 3.2. For each item item in current, append item to results.\n results.push(\n ...renderedTextCollection(\n children[index],\n // @ts-expect-error: `tree` is a parent if we’re here.\n tree,\n {\n whitespace,\n breakBefore: index ? undefined : block,\n breakAfter:\n index < children.length - 1 ? br(children[index + 1]) : block\n }\n )\n )\n }\n\n // 4. Remove any items from results that are the empty string.\n // 5. Remove any runs of consecutive required line break count items at the\n // start or end of results.\n // 6. Replace each remaining run of consecutive required line break count\n // items with a string consisting of as many U+000A LINE FEED (LF)\n // characters as the maximum of the values in the required line break\n // count items.\n /** @type {Array<string>} */\n const result = []\n /** @type {number | undefined} */\n let count\n\n index = -1\n\n while (++index < results.length) {\n const value = results[index]\n\n if (typeof value === 'number') {\n if (count !== undefined && value > count) count = value\n } else if (value) {\n if (count !== undefined && count > -1) {\n result.push('\\n'.repeat(count) || ' ')\n }\n\n count = -1\n result.push(value)\n }\n }\n\n // 7. Return the concatenation of the string items in results.\n return result.join('')\n}\n\n/**\n * <https://html.spec.whatwg.org/multipage/dom.html#rendered-text-collection-steps>\n *\n * @param {Nodes} node\n * @param {Parents} parent\n * @param {CollectionInfo} info\n * @returns {Array<BreakNumber | string>}\n */\nfunction renderedTextCollection(node, parent, info) {\n if (node.type === 'element') {\n return collectElement(node, parent, info)\n }\n\n if (node.type === 'text') {\n return info.whitespace === 'normal'\n ? collectText(node, info)\n : collectPreText(node)\n }\n\n return []\n}\n\n/**\n * Collect an element.\n *\n * @param {Element} node\n * Element node.\n * @param {Parents} parent\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Array<BreakNumber | string>}\n */\nfunction collectElement(node, parent, info) {\n // First we infer the `white-space` property.\n const whitespace = inferWhitespace(node, info)\n const children = node.children || []\n let index = -1\n /** @type {Array<BreakNumber | string>} */\n let items = []\n\n // We’re ignoring point 3, and exiting without any content here, because we\n // deviated from the spec in `toText` at step 3.\n if (notRendered(node)) {\n return items\n }\n\n /** @type {BreakNumber | undefined} */\n let prefix\n /** @type {BreakForce | BreakNumber | undefined} */\n let suffix\n // Note: we first detect if there is going to be a break before or after the\n // contents, as that changes the white-space handling.\n\n // 2. If node’s computed value of `visibility` is not `visible`, then return\n // items.\n //\n // Note: Ignored, as everything is visible by default user agent styles.\n\n // 3. If node is not being rendered, then return items. [...]\n //\n // Note: We already did this above.\n\n // See `collectText` for step 4.\n\n // 5. If node is a `<br>` element, then append a string containing a single\n // U+000A LINE FEED (LF) character to items.\n if (br(node)) {\n suffix = '\\n'\n }\n\n // 7. If node’s computed value of `display` is `table-row`, and node’s CSS\n // box is not the last `table-row` box of the nearest ancestor `table`\n // box, then append a string containing a single U+000A LINE FEED (LF)\n // character to items.\n //\n // See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n // Note: needs further investigation as this does not account for implicit\n // rows.\n else if (\n row(node) &&\n // @ts-expect-error: something up with types of parents.\n findAfter(parent, node, row)\n ) {\n suffix = '\\n'\n }\n\n // 8. If node is a `<p>` element, then append 2 (a required line break count)\n // at the beginning and end of items.\n else if (p(node)) {\n prefix = 2\n suffix = 2\n }\n\n // 9. If node’s used value of `display` is block-level or `table-caption`,\n // then append 1 (a required line break count) at the beginning and end of\n // items.\n else if (blockOrCaption(node)) {\n prefix = 1\n suffix = 1\n }\n\n // 1. Let items be the result of running the inner text collection steps with\n // each child node of node in tree order, and then concatenating the\n // results to a single list.\n while (++index < children.length) {\n items = items.concat(\n renderedTextCollection(children[index], node, {\n whitespace,\n breakBefore: index ? undefined : prefix,\n breakAfter:\n index < children.length - 1 ? br(children[index + 1]) : suffix\n })\n )\n }\n\n // 6. If node’s computed value of `display` is `table-cell`, and node’s CSS\n // box is not the last `table-cell` box of its enclosing `table-row` box,\n // then append a string containing a single U+0009 CHARACTER TABULATION\n // (tab) character to items.\n //\n // See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n if (\n cell(node) &&\n // @ts-expect-error: something up with types of parents.\n findAfter(parent, node, cell)\n ) {\n items.push('\\t')\n }\n\n // Add the pre- and suffix.\n if (prefix) items.unshift(prefix)\n if (suffix) items.push(suffix)\n\n return items\n}\n\n/**\n * 4. If node is a Text node, then for each CSS text box produced by node,\n * in content order, compute the text of the box after application of the\n * CSS `white-space` processing rules and `text-transform` rules, set\n * items to the list of the resulting strings, and return items.\n * The CSS `white-space` processing rules are slightly modified:\n * collapsible spaces at the end of lines are always collapsed, but they\n * are only removed if the line is the last line of the block, or it ends\n * with a br element.\n * Soft hyphens should be preserved.\n *\n * Note: See `collectText` and `collectPreText`.\n * Note: we don’t deal with `text-transform`, no element has that by\n * default.\n *\n * See: <https://drafts.csswg.org/css-text/#white-space-phase-1>\n *\n * @param {Comment | Text} node\n * Text node.\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Array<BreakNumber | string>}\n * Result.\n */\nfunction collectText(node, info) {\n const value = String(node.value)\n /** @type {Array<string>} */\n const lines = []\n /** @type {Array<BreakNumber | string>} */\n const result = []\n let start = 0\n\n while (start <= value.length) {\n searchLineFeeds.lastIndex = start\n\n const match = searchLineFeeds.exec(value)\n const end = match && 'index' in match ? match.index : value.length\n\n lines.push(\n // Any sequence of collapsible spaces and tabs immediately preceding or\n // following a segment break is removed.\n trimAndCollapseSpacesAndTabs(\n // […] ignoring bidi formatting characters (characters with the\n // Bidi_Control property [UAX9]: ALM, LTR, RTL, LRE-RLO, LRI-PDI) as if\n // they were not there.\n value\n .slice(start, end)\n .replace(/[\\u061C\\u200E\\u200F\\u202A-\\u202E\\u2066-\\u2069]/g, ''),\n start === 0 ? info.breakBefore : true,\n end === value.length ? info.breakAfter : true\n )\n )\n\n start = end + 1\n }\n\n // Collapsible segment breaks are transformed for rendering according to the\n // segment break transformation rules.\n // So here we jump to 4.1.2 of [CSSTEXT]:\n // Any collapsible segment break immediately following another collapsible\n // segment break is removed\n let index = -1\n /** @type {BreakNumber | undefined} */\n let join\n\n while (++index < lines.length) {\n // * If the character immediately before or immediately after the segment\n // break is the zero-width space character (U+200B), then the break is\n // removed, leaving behind the zero-width space.\n if (\n lines[index].charCodeAt(lines[index].length - 1) === 0x20_0b /* ZWSP */ ||\n (index < lines.length - 1 &&\n lines[index + 1].charCodeAt(0) === 0x20_0b) /* ZWSP */\n ) {\n result.push(lines[index])\n join = undefined\n }\n\n // * Otherwise, if the East Asian Width property [UAX11] of both the\n // character before and after the segment break is Fullwidth, Wide, or\n // Halfwidth (not Ambiguous), and neither side is Hangul, then the\n // segment break is removed.\n //\n // Note: ignored.\n // * Otherwise, if the writing system of the segment break is Chinese,\n // Japanese, or Yi, and the character before or after the segment break\n // is punctuation or a symbol (Unicode general category P* or S*) and\n // has an East Asian Width property of Ambiguous, and the character on\n // the other side of the segment break is Fullwidth, Wide, or Halfwidth,\n // and not Hangul, then the segment break is removed.\n //\n // Note: ignored.\n\n // * Otherwise, the segment break is converted to a space (U+0020).\n else if (lines[index]) {\n if (typeof join === 'number') result.push(join)\n result.push(lines[index])\n join = 0\n } else if (index === 0 || index === lines.length - 1) {\n // If this line is empty, and it’s the first or last, add a space.\n // Note that this function is only called in normal whitespace, so we\n // don’t worry about `pre`.\n result.push(0)\n }\n }\n\n return result\n}\n\n/**\n * Collect a text node as “pre” whitespace.\n *\n * @param {Text} node\n * Text node.\n * @returns {Array<BreakNumber | string>}\n * Result.\n */\nfunction collectPreText(node) {\n return [String(node.value)]\n}\n\n/**\n * 3. Every collapsible tab is converted to a collapsible space (U+0020).\n * 4. Any collapsible space immediately following another collapsible\n * space—even one outside the boundary of the inline containing that\n * space, provided both spaces are within the same inline formatting\n * context—is collapsed to have zero advance width. (It is invisible,\n * but retains its soft wrap opportunity, if any.)\n *\n * @param {string} value\n * Value to collapse.\n * @param {BreakBefore} breakBefore\n * Whether there was a break before.\n * @param {BreakAfter} breakAfter\n * Whether there was a break after.\n * @returns {string}\n * Result.\n */\nfunction trimAndCollapseSpacesAndTabs(value, breakBefore, breakAfter) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n /** @type {number | undefined} */\n let end\n\n while (start < value.length) {\n searchTabOrSpaces.lastIndex = start\n const match = searchTabOrSpaces.exec(value)\n end = match ? match.index : value.length\n\n // If we’re not directly after a segment break, but there was white space,\n // add an empty value that will be turned into a space.\n if (!start && !end && match && !breakBefore) {\n result.push('')\n }\n\n if (start !== end) {\n result.push(value.slice(start, end))\n }\n\n start = match ? end + match[0].length : end\n }\n\n // If we reached the end, there was trailing white space, and there’s no\n // segment break after this node, add an empty value that will be turned\n // into a space.\n if (start !== end && !breakAfter) {\n result.push('')\n }\n\n return result.join(' ')\n}\n\n/**\n * Figure out the whitespace of a node.\n *\n * We don’t support void elements here (so `nobr wbr` -> `normal` is ignored).\n *\n * @param {Nodes} node\n * Node (typically `Element`).\n * @param {CollectionInfo} info\n * Info on current collection.\n * @returns {Whitespace}\n * Applied whitespace.\n */\nfunction inferWhitespace(node, info) {\n if (node.type === 'element') {\n const properties = node.properties || {}\n switch (node.tagName) {\n case 'listing':\n case 'plaintext':\n case 'xmp': {\n return 'pre'\n }\n\n case 'nobr': {\n return 'nowrap'\n }\n\n case 'pre': {\n return properties.wrap ? 'pre-wrap' : 'pre'\n }\n\n case 'td':\n case 'th': {\n return properties.noWrap ? 'nowrap' : info.whitespace\n }\n\n case 'textarea': {\n return 'pre-wrap'\n }\n\n default:\n }\n }\n\n return info.whitespace\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {properties: {hidden: true}}}\n */\nfunction hidden(node) {\n return Boolean((node.properties || {}).hidden)\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {tagName: 'td' | 'th'}}\n */\nfunction isCell(node) {\n return node.tagName === 'td' || node.tagName === 'th'\n}\n\n/**\n * @type {TestFunction}\n */\nfunction closedDialog(node) {\n return node.tagName === 'dialog' && !(node.properties || {}).open\n}\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/\n\n\n/** @type LanguageFn */\nfunction css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = { begin: /-(webkit|moz|ms|o)-(?=[a-z])/ };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n\n return {\n name: 'CSS',\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: { keyframePosition: \"from to\" },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\" },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.' + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n variants: [\n { begin: ':(' + PSEUDO_CLASSES.join('|') + ')' },\n { begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')' }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0, // from keywords\n keywords: { built_in: \"url data-uri\" },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: '[{;]',\n relevance: 0,\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b'\n }\n ]\n };\n}\n\nexport { css as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/\n\n\n/**\n * Allows recursive regex expressions to a given depth\n *\n * ie: recurRegex(\"(abc~~~)\", /~~~/g, 2) becomes:\n * (abc(abc(abc)))\n *\n * @param {string} re\n * @param {RegExp} substitution (should be a g mode regex)\n * @param {number} depth\n * @returns {string}``\n */\nfunction recurRegex(re, substitution, depth) {\n if (depth === -1) return \"\";\n\n return re.replace(substitution, _ => {\n return recurRegex(re, substitution, depth - 1);\n });\n}\n\n/** @type LanguageFn */\nfunction java(hljs) {\n const regex = hljs.regex;\n const JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n const GENERIC_IDENT_RE = JAVA_IDENT_RE\n + recurRegex('(?:<' + JAVA_IDENT_RE + '~~~(?:\\\\s*,\\\\s*' + JAVA_IDENT_RE + '~~~)*>)?', /~~~/g, 2);\n const MAIN_KEYWORDS = [\n 'synchronized',\n 'abstract',\n 'private',\n 'var',\n 'static',\n 'if',\n 'const ',\n 'for',\n 'while',\n 'strictfp',\n 'finally',\n 'protected',\n 'import',\n 'native',\n 'final',\n 'void',\n 'enum',\n 'else',\n 'break',\n 'transient',\n 'catch',\n 'instanceof',\n 'volatile',\n 'case',\n 'assert',\n 'package',\n 'default',\n 'public',\n 'try',\n 'switch',\n 'continue',\n 'throws',\n 'protected',\n 'public',\n 'private',\n 'module',\n 'requires',\n 'exports',\n 'do',\n 'sealed',\n 'yield',\n 'permits',\n 'goto',\n 'when'\n ];\n\n const BUILT_INS = [\n 'super',\n 'this'\n ];\n\n const LITERALS = [\n 'false',\n 'true',\n 'null'\n ];\n\n const TYPES = [\n 'char',\n 'boolean',\n 'long',\n 'float',\n 'int',\n 'byte',\n 'short',\n 'double'\n ];\n\n const KEYWORDS = {\n keyword: MAIN_KEYWORDS,\n literal: LITERALS,\n type: TYPES,\n built_in: BUILT_INS\n };\n\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [ \"self\" ] // allow nested () inside our annotation\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [ hljs.C_BLOCK_COMMENT_MODE ],\n endsParent: true\n };\n\n return {\n name: 'Java',\n aliases: [ 'jsp' ],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n match: [\n /\\b(?:class|interface|enum|extends|implements|new)/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n // Exceptions for hyphenated keywords\n match: /non-sealed/,\n scope: \"keyword\"\n },\n {\n begin: [\n regex.concat(/(?!else)/, JAVA_IDENT_RE),\n /\\s+/,\n JAVA_IDENT_RE,\n /\\s+/,\n /=(?!=)/\n ],\n className: {\n 1: \"type\",\n 3: \"variable\",\n 5: \"operator\"\n }\n },\n {\n begin: [\n /record/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n contains: [\n PARAMS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n begin: [\n '(?:' + GENERIC_IDENT_RE + '\\\\s+)',\n hljs.UNDERSCORE_IDENT_RE,\n /\\s*(?=\\()/\n ],\n className: { 2: \"title.function\" },\n keywords: KEYWORDS,\n contains: [\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMERIC,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMERIC,\n ANNOTATION\n ]\n };\n}\n\nexport { java as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nexport { javascript as default };\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n Website: https://kotlinlang.org\n Category: common\n */\n\n\nfunction kotlin(hljs) {\n const KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline '\n + 'crossinline dynamic final enum if else do while for when throw try catch finally '\n + 'import package is in fun override companion reified inline lateinit init '\n + 'interface annotation data sealed internal infix operator out by constructor super '\n + 'tailrec where const inner suspend typealias external expect actual',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n const KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: { contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ] }\n };\n const LABEL = {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n const SUBST = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [ hljs.C_NUMBER_MODE ]\n };\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'',\n end: '\\'',\n illegal: /\\n/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n\n const ANNOTATION_USE_SITE = {\n className: 'meta',\n begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, { className: 'string' }),\n \"self\"\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\n '/\\\\*', '\\\\*/',\n { contains: [ hljs.C_BLOCK_COMMENT_MODE ] }\n );\n const KOTLIN_PAREN_TYPE = { variants: [\n {\n className: 'type',\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ] };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\n\n return {\n name: 'Kotlin',\n aliases: [\n 'kt',\n 'kts'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun',\n end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'type',\n begin: /</,\n end: />/,\n keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n begin: [\n /class|interface|trait/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n beginScope: {\n 3: \"title.class\"\n },\n keywords: 'class interface trait',\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n { beginKeywords: 'public protected internal private constructor' },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/,\n end: /[<\\(,){\\s]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\",\n end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\nexport { kotlin as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n// some grammars use them all as a single group\nconst PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS).sort().reverse();\n\n/*\nLanguage: Less\nDescription: It's CSS, with just a little more.\nAuthor: Max Mikhailov <seven.phases.max@gmail.com>\nWebsite: http://lesscss.org\nCategory: common, css, web\n*/\n\n\n/** @type LanguageFn */\nfunction less(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;\n\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n const INTERP_IDENT_RE = '(' + IDENT_RE + '|@\\\\{' + IDENT_RE + '\\\\})';\n\n /* Generic Modes */\n\n const RULES = []; const VALUE_MODES = []; // forward def. for recursive modes\n\n const STRING_MODE = function(c) {\n return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string',\n begin: '~?' + c + '.*?' + c\n };\n };\n\n const IDENT_MODE = function(name, begin, relevance) {\n return {\n className: name,\n begin: begin,\n relevance: relevance\n };\n };\n\n const AT_KEYWORDS = {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n };\n\n const PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(',\n end: '\\\\)',\n contains: VALUE_MODES,\n keywords: AT_KEYWORDS,\n relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE_MODES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n modes.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {\n className: 'string',\n end: '[\\\\)\\\\n]',\n excludeEnd: true\n }\n },\n modes.HEXCOLOR,\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute',\n begin: IDENT_RE + '\\\\s*:',\n end: ':',\n returnBegin: true,\n excludeEnd: true\n },\n modes.IMPORTANT,\n { beginKeywords: 'and not' },\n modes.FUNCTION_DISPATCH\n );\n\n const VALUE_WITH_RULESETS = VALUE_MODES.concat({\n begin: /\\{/,\n end: /\\}/,\n contains: RULES\n });\n\n const MIXIN_GUARD_MODE = {\n beginKeywords: 'when',\n endsWithParent: true,\n contains: [ { beginKeywords: 'and not' } ].concat(VALUE_MODES) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n const RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n end: /[;}]/,\n relevance: 0,\n contains: [\n { begin: /-(webkit|moz|ms|o)-/ },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b',\n end: /(?=:)/,\n starts: {\n endsWithParent: true,\n illegal: '[<=$]',\n relevance: 0,\n contains: VALUE_MODES\n }\n }\n ]\n };\n\n const AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {\n end: '[;{}]',\n keywords: AT_KEYWORDS,\n returnEnd: true,\n contains: VALUE_MODES,\n relevance: 0\n }\n };\n\n // variable definitions and calls\n const VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {\n begin: '@' + IDENT_RE + '\\\\s*:',\n relevance: 15\n },\n { begin: '@' + IDENT_RE }\n ],\n starts: {\n end: '[;}]',\n returnEnd: true,\n contains: VALUE_WITH_RULESETS\n }\n };\n\n const SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [\n {\n begin: '[\\\\.#:&\\\\[>]',\n end: '[;{}]' // mixin calls end with ';'\n },\n {\n begin: INTERP_IDENT_RE,\n end: /\\{/\n }\n ],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@\\\\{' + IDENT_RE + '\\\\}'), // otherwise it’s identified as tag\n \n {\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n className: 'selector-tag'\n },\n modes.CSS_NUMBER_MODE,\n IDENT_MODE('selector-tag', INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS.join('|') + ')'\n },\n {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n contains: VALUE_WITH_RULESETS\n }, // argument list of parametric mixins\n { begin: '!important' }, // eat !important after mixin call or it will be colored as tag\n modes.FUNCTION_DISPATCH\n ]\n };\n\n const PSEUDO_SELECTOR_MODE = {\n begin: IDENT_RE + ':(:)?' + `(${PSEUDO_SELECTORS$1.join('|')})`,\n returnBegin: true,\n contains: [ SELECTOR_MODE ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n PSEUDO_SELECTOR_MODE,\n RULE_MODE,\n SELECTOR_MODE,\n MIXIN_GUARD_MODE,\n modes.FUNCTION_DISPATCH\n );\n\n return {\n name: 'Less',\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n}\n\nexport { less as default };\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z_][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst HTML_TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'picture',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'select',\n 'source',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst SVG_TAGS = [\n 'defs',\n 'g',\n 'marker',\n 'mask',\n 'pattern',\n 'svg',\n 'switch',\n 'symbol',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'circle',\n 'ellipse',\n 'image',\n 'line',\n 'path',\n 'polygon',\n 'polyline',\n 'rect',\n 'text',\n 'use',\n 'textPath',\n 'tspan',\n 'foreignObject',\n 'clipPath'\n];\n\nconst TAGS = [\n ...HTML_TAGS,\n ...SVG_TAGS,\n];\n\n// Sorting, then reversing makes sure longer attributes/elements like\n// `font-weight` are matched fully instead of getting false positives on say `font`\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n].sort().reverse();\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n].sort().reverse();\n\nconst ATTRIBUTES = [\n 'accent-color',\n 'align-content',\n 'align-items',\n 'align-self',\n 'alignment-baseline',\n 'all',\n 'anchor-name',\n 'animation',\n 'animation-composition',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-range',\n 'animation-range-end',\n 'animation-range-start',\n 'animation-timeline',\n 'animation-timing-function',\n 'appearance',\n 'aspect-ratio',\n 'backdrop-filter',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-position-x',\n 'background-position-y',\n 'background-repeat',\n 'background-size',\n 'baseline-shift',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-align',\n 'box-decoration-break',\n 'box-direction',\n 'box-flex',\n 'box-flex-group',\n 'box-lines',\n 'box-ordinal-group',\n 'box-orient',\n 'box-pack',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'color-scheme',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'contain-intrinsic-block-size',\n 'contain-intrinsic-height',\n 'contain-intrinsic-inline-size',\n 'contain-intrinsic-size',\n 'contain-intrinsic-width',\n 'container',\n 'container-name',\n 'container-type',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'counter-set',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'cx',\n 'cy',\n 'direction',\n 'display',\n 'dominant-baseline',\n 'empty-cells',\n 'enable-background',\n 'field-sizing',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flood-color',\n 'flood-opacity',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-optical-sizing',\n 'font-palette',\n 'font-size',\n 'font-size-adjust',\n 'font-smooth',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-synthesis-position',\n 'font-synthesis-small-caps',\n 'font-synthesis-style',\n 'font-synthesis-weight',\n 'font-variant',\n 'font-variant-alternates',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-emoji',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'forced-color-adjust',\n 'gap',\n 'glyph-orientation-horizontal',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphenate-character',\n 'hyphenate-limit-chars',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'initial-letter',\n 'initial-letter-align',\n 'inline-size',\n 'inset',\n 'inset-area',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'isolation',\n 'justify-content',\n 'justify-items',\n 'justify-self',\n 'kerning',\n 'left',\n 'letter-spacing',\n 'lighting-color',\n 'line-break',\n 'line-height',\n 'line-height-step',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'margin-trim',\n 'marker',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'masonry-auto-flow',\n 'math-depth',\n 'math-shift',\n 'math-style',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-anchor',\n 'overflow-block',\n 'overflow-clip-margin',\n 'overflow-inline',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'overlay',\n 'overscroll-behavior',\n 'overscroll-behavior-block',\n 'overscroll-behavior-inline',\n 'overscroll-behavior-x',\n 'overscroll-behavior-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'paint-order',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'place-content',\n 'place-items',\n 'place-self',\n 'pointer-events',\n 'position',\n 'position-anchor',\n 'position-visibility',\n 'print-color-adjust',\n 'quotes',\n 'r',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'rotate',\n 'row-gap',\n 'ruby-align',\n 'ruby-position',\n 'scale',\n 'scroll-behavior',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scroll-timeline',\n 'scroll-timeline-axis',\n 'scroll-timeline-name',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'shape-rendering',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'stop-color',\n 'stop-opacity',\n 'stroke',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke-width',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-anchor',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-skip',\n 'text-decoration-skip-ink',\n 'text-decoration-style',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-size-adjust',\n 'text-transform',\n 'text-underline-offset',\n 'text-underline-position',\n 'text-wrap',\n 'text-wrap-mode',\n 'text-wrap-style',\n 'timeline-scope',\n 'top',\n 'touch-action',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-behavior',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'translate',\n 'unicode-bidi',\n 'user-modify',\n 'user-select',\n 'vector-effect',\n 'vertical-align',\n 'view-timeline',\n 'view-timeline-axis',\n 'view-timeline-inset',\n 'view-timeline-name',\n 'view-transition-name',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'white-space-collapse',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'x',\n 'y',\n 'z-index',\n 'zoom'\n].sort().reverse();\n\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch <kurt@kurtemch.com>\nWebsite: https://sass-lang.com\nCategory: common, css, web\n*/\n\n\n/** @type LanguageFn */\nfunction scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n\n const AT_IDENTIFIER = '@[a-z-]+'; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b',\n relevance: 0\n };\n\n return {\n name: 'SCSS',\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: '#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n // was there, before, but why?\n relevance: 0\n },\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')'\n },\n VARIABLE,\n { // pseudo-selector params\n begin: /\\(/,\n end: /\\)/,\n contains: [ modes.CSS_NUMBER_MODE ]\n },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n { begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b' },\n {\n begin: /:/,\n end: /[;}{]/,\n relevance: 0,\n contains: [\n modes.BLOCK_COMMENT,\n VARIABLE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT,\n modes.FUNCTION_DISPATCH\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: '@(page|font-face)',\n keywords: {\n $pattern: AT_IDENTIFIER,\n keyword: '@page @font-face'\n }\n },\n {\n begin: '@',\n end: '[{;]',\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n}\n\nexport { scss as default };\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\nconst keywordWrapper = keyword => concat(\n /\\b/,\n keyword,\n /\\w$/.test(keyword) ? /\\b/ : /\\B/\n);\n\n// Keywords that require a leading dot.\nconst dotKeywords = [\n 'Protocol', // contextual\n 'Type' // contextual\n].map(keywordWrapper);\n\n// Keywords that may have a leading dot.\nconst optionalDotKeywords = [\n 'init',\n 'self'\n].map(keywordWrapper);\n\n// should register as keyword, not type\nconst keywordTypes = [\n 'Any',\n 'Self'\n];\n\n// Regular keywords and literals.\nconst keywords = [\n // strings below will be fed into the regular `keywords` engine while regex\n // will result in additional modes being created to scan for those keywords to\n // avoid conflicts with other rules\n 'actor',\n 'any', // contextual\n 'associatedtype',\n 'async',\n 'await',\n /as\\?/, // operator\n /as!/, // operator\n 'as', // operator\n 'borrowing', // contextual\n 'break',\n 'case',\n 'catch',\n 'class',\n 'consume', // contextual\n 'consuming', // contextual\n 'continue',\n 'convenience', // contextual\n 'copy', // contextual\n 'default',\n 'defer',\n 'deinit',\n 'didSet', // contextual\n 'distributed',\n 'do',\n 'dynamic', // contextual\n 'each',\n 'else',\n 'enum',\n 'extension',\n 'fallthrough',\n /fileprivate\\(set\\)/,\n 'fileprivate',\n 'final', // contextual\n 'for',\n 'func',\n 'get', // contextual\n 'guard',\n 'if',\n 'import',\n 'indirect', // contextual\n 'infix', // contextual\n /init\\?/,\n /init!/,\n 'inout',\n /internal\\(set\\)/,\n 'internal',\n 'in',\n 'is', // operator\n 'isolated', // contextual\n 'nonisolated', // contextual\n 'lazy', // contextual\n 'let',\n 'macro',\n 'mutating', // contextual\n 'nonmutating', // contextual\n /open\\(set\\)/, // contextual\n 'open', // contextual\n 'operator',\n 'optional', // contextual\n 'override', // contextual\n 'package',\n 'postfix', // contextual\n 'precedencegroup',\n 'prefix', // contextual\n /private\\(set\\)/,\n 'private',\n 'protocol',\n /public\\(set\\)/,\n 'public',\n 'repeat',\n 'required', // contextual\n 'rethrows',\n 'return',\n 'set', // contextual\n 'some', // contextual\n 'static',\n 'struct',\n 'subscript',\n 'super',\n 'switch',\n 'throws',\n 'throw',\n /try\\?/, // operator\n /try!/, // operator\n 'try', // operator\n 'typealias',\n /unowned\\(safe\\)/, // contextual\n /unowned\\(unsafe\\)/, // contextual\n 'unowned', // contextual\n 'var',\n 'weak', // contextual\n 'where',\n 'while',\n 'willSet' // contextual\n];\n\n// NOTE: Contextual keywords are reserved only in specific contexts.\n// Ideally, these should be matched using modes to avoid false positives.\n\n// Literals.\nconst literals = [\n 'false',\n 'nil',\n 'true'\n];\n\n// Keywords used in precedence groups.\nconst precedencegroupKeywords = [\n 'assignment',\n 'associativity',\n 'higherThan',\n 'left',\n 'lowerThan',\n 'none',\n 'right'\n];\n\n// Keywords that start with a number sign (#).\n// #(un)available is handled separately.\nconst numberSignKeywords = [\n '#colorLiteral',\n '#column',\n '#dsohandle',\n '#else',\n '#elseif',\n '#endif',\n '#error',\n '#file',\n '#fileID',\n '#fileLiteral',\n '#filePath',\n '#function',\n '#if',\n '#imageLiteral',\n '#keyPath',\n '#line',\n '#selector',\n '#sourceLocation',\n '#warning'\n];\n\n// Global functions in the Standard Library.\nconst builtIns = [\n 'abs',\n 'all',\n 'any',\n 'assert',\n 'assertionFailure',\n 'debugPrint',\n 'dump',\n 'fatalError',\n 'getVaList',\n 'isKnownUniquelyReferenced',\n 'max',\n 'min',\n 'numericCast',\n 'pointwiseMax',\n 'pointwiseMin',\n 'precondition',\n 'preconditionFailure',\n 'print',\n 'readLine',\n 'repeatElement',\n 'sequence',\n 'stride',\n 'swap',\n 'swift_unboxFromSwiftValueWithType',\n 'transcode',\n 'type',\n 'unsafeBitCast',\n 'unsafeDowncast',\n 'withExtendedLifetime',\n 'withUnsafeMutablePointer',\n 'withUnsafePointer',\n 'withVaList',\n 'withoutActuallyEscaping',\n 'zip'\n];\n\n// Valid first characters for operators.\nconst operatorHead = either(\n /[/=\\-+!*%<>&|^~?]/,\n /[\\u00A1-\\u00A7]/,\n /[\\u00A9\\u00AB]/,\n /[\\u00AC\\u00AE]/,\n /[\\u00B0\\u00B1]/,\n /[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/,\n /[\\u2016-\\u2017]/,\n /[\\u2020-\\u2027]/,\n /[\\u2030-\\u203E]/,\n /[\\u2041-\\u2053]/,\n /[\\u2055-\\u205E]/,\n /[\\u2190-\\u23FF]/,\n /[\\u2500-\\u2775]/,\n /[\\u2794-\\u2BFF]/,\n /[\\u2E00-\\u2E7F]/,\n /[\\u3001-\\u3003]/,\n /[\\u3008-\\u3020]/,\n /[\\u3030]/\n);\n\n// Valid characters for operators.\nconst operatorCharacter = either(\n operatorHead,\n /[\\u0300-\\u036F]/,\n /[\\u1DC0-\\u1DFF]/,\n /[\\u20D0-\\u20FF]/,\n /[\\uFE00-\\uFE0F]/,\n /[\\uFE20-\\uFE2F]/\n // TODO: The following characters are also allowed, but the regex isn't supported yet.\n // /[\\u{E0100}-\\u{E01EF}]/u\n);\n\n// Valid operator.\nconst operator = concat(operatorHead, operatorCharacter, '*');\n\n// Valid first characters for identifiers.\nconst identifierHead = either(\n /[a-zA-Z_]/,\n /[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/,\n /[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/,\n /[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/,\n /[\\u1E00-\\u1FFF]/,\n /[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/,\n /[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/,\n /[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/,\n /[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/,\n /[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/,\n /[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/ // Should be /[\\uFE47-\\uFFFD]/, but we have to exclude FEFF.\n // The following characters are also allowed, but the regexes aren't supported yet.\n // /[\\u{10000}-\\u{1FFFD}\\u{20000-\\u{2FFFD}\\u{30000}-\\u{3FFFD}\\u{40000}-\\u{4FFFD}]/u,\n // /[\\u{50000}-\\u{5FFFD}\\u{60000-\\u{6FFFD}\\u{70000}-\\u{7FFFD}\\u{80000}-\\u{8FFFD}]/u,\n // /[\\u{90000}-\\u{9FFFD}\\u{A0000-\\u{AFFFD}\\u{B0000}-\\u{BFFFD}\\u{C0000}-\\u{CFFFD}]/u,\n // /[\\u{D0000}-\\u{DFFFD}\\u{E0000-\\u{EFFFD}]/u\n);\n\n// Valid characters for identifiers.\nconst identifierCharacter = either(\n identifierHead,\n /\\d/,\n /[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/\n);\n\n// Valid identifier.\nconst identifier = concat(identifierHead, identifierCharacter, '*');\n\n// Valid type identifier.\nconst typeIdentifier = concat(/[A-Z]/, identifierCharacter, '*');\n\n// Built-in attributes, which are highlighted as keywords.\n// @available is handled separately.\n// https://docs.swift.org/swift-book/documentation/the-swift-programming-language/attributes\nconst keywordAttributes = [\n 'attached',\n 'autoclosure',\n concat(/convention\\(/, either('swift', 'block', 'c'), /\\)/),\n 'discardableResult',\n 'dynamicCallable',\n 'dynamicMemberLookup',\n 'escaping',\n 'freestanding',\n 'frozen',\n 'GKInspectable',\n 'IBAction',\n 'IBDesignable',\n 'IBInspectable',\n 'IBOutlet',\n 'IBSegueAction',\n 'inlinable',\n 'main',\n 'nonobjc',\n 'NSApplicationMain',\n 'NSCopying',\n 'NSManaged',\n concat(/objc\\(/, identifier, /\\)/),\n 'objc',\n 'objcMembers',\n 'propertyWrapper',\n 'requires_stored_property_inits',\n 'resultBuilder',\n 'Sendable',\n 'testable',\n 'UIApplicationMain',\n 'unchecked',\n 'unknown',\n 'usableFromInline',\n 'warn_unqualified_access'\n];\n\n// Contextual keywords used in @available and #(un)available.\nconst availabilityKeywords = [\n 'iOS',\n 'iOSApplicationExtension',\n 'macOS',\n 'macOSApplicationExtension',\n 'macCatalyst',\n 'macCatalystApplicationExtension',\n 'watchOS',\n 'watchOSApplicationExtension',\n 'tvOS',\n 'tvOSApplicationExtension',\n 'swift'\n];\n\n/*\nLanguage: Swift\nDescription: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.\nAuthor: Steven Van Impe <steven.vanimpe@icloud.com>\nContributors: Chris Eidhof <chris@eidhof.nl>, Nate Cook <natecook@gmail.com>, Alexander Lichter <manniL@gmx.net>, Richard Gibson <gibson042@github>\nWebsite: https://swift.org\nCategory: common, system\n*/\n\n\n/** @type LanguageFn */\nfunction swift(hljs) {\n const WHITESPACE = {\n match: /\\s+/,\n relevance: 0\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411\n const BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [ 'self' ] }\n );\n const COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html\n const DOT_KEYWORD = {\n match: [\n /\\./,\n either(...dotKeywords, ...optionalDotKeywords)\n ],\n className: { 2: \"keyword\" }\n };\n const KEYWORD_GUARD = {\n // Consume .keyword to prevent highlighting properties and methods as keywords.\n match: concat(/\\./, either(...keywords)),\n relevance: 0\n };\n const PLAIN_KEYWORDS = keywords\n .filter(kw => typeof kw === 'string')\n .concat([ \"_|0\" ]); // seems common, so 0 relevance\n const REGEX_KEYWORDS = keywords\n .filter(kw => typeof kw !== 'string') // find regex\n .concat(keywordTypes)\n .map(keywordWrapper);\n const KEYWORD = { variants: [\n {\n className: 'keyword',\n match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)\n }\n ] };\n // find all the regular keywords\n const KEYWORDS = {\n $pattern: either(\n /\\b\\w+/, // regular keywords\n /#\\w+/ // number keywords\n ),\n keyword: PLAIN_KEYWORDS\n .concat(numberSignKeywords),\n literal: literals\n };\n const KEYWORD_MODES = [\n DOT_KEYWORD,\n KEYWORD_GUARD,\n KEYWORD\n ];\n\n // https://github.com/apple/swift/tree/main/stdlib/public/core\n const BUILT_IN_GUARD = {\n // Consume .built_in to prevent highlighting properties and methods.\n match: concat(/\\./, either(...builtIns)),\n relevance: 0\n };\n const BUILT_IN = {\n className: 'built_in',\n match: concat(/\\b/, either(...builtIns), /(?=\\()/)\n };\n const BUILT_INS = [\n BUILT_IN_GUARD,\n BUILT_IN\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418\n const OPERATOR_GUARD = {\n // Prevent -> from being highlighting as an operator.\n match: /->/,\n relevance: 0\n };\n const OPERATOR = {\n className: 'operator',\n relevance: 0,\n variants: [\n { match: operator },\n {\n // dot-operator: only operators that start with a dot are allowed to use dots as\n // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more\n // characters that may also include dots.\n match: `\\\\.(\\\\.|${operatorCharacter})+` }\n ]\n };\n const OPERATORS = [\n OPERATOR_GUARD,\n OPERATOR\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal\n // TODO: Update for leading `-` after lookbehind is supported everywhere\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n { match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b` },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n { match: `\\\\b0x(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b` },\n // octal-literal\n { match: /\\b0o([0-7]_*)+\\b/ },\n // binary-literal\n { match: /\\b0b([01]_*)+\\b/ }\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal\n const ESCAPED_CHARACTER = (rawDelimiter = \"\") => ({\n className: 'subst',\n variants: [\n { match: concat(/\\\\/, rawDelimiter, /[0\\\\tnr\"']/) },\n { match: concat(/\\\\/, rawDelimiter, /u\\{[0-9a-fA-F]{1,8}\\}/) }\n ]\n });\n const ESCAPED_NEWLINE = (rawDelimiter = \"\") => ({\n className: 'subst',\n match: concat(/\\\\/, rawDelimiter, /[\\t ]*(?:[\\r\\n]|\\r\\n)/)\n });\n const INTERPOLATION = (rawDelimiter = \"\") => ({\n className: 'subst',\n label: \"interpol\",\n begin: concat(/\\\\/, rawDelimiter, /\\(/),\n end: /\\)/\n });\n const MULTILINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"\"\"/),\n end: concat(/\"\"\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n ESCAPED_NEWLINE(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const SINGLE_LINE_STRING = (rawDelimiter = \"\") => ({\n begin: concat(rawDelimiter, /\"/),\n end: concat(/\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const STRING = {\n className: 'string',\n variants: [\n MULTILINE_STRING(),\n MULTILINE_STRING(\"#\"),\n MULTILINE_STRING(\"##\"),\n MULTILINE_STRING(\"###\"),\n SINGLE_LINE_STRING(),\n SINGLE_LINE_STRING(\"#\"),\n SINGLE_LINE_STRING(\"##\"),\n SINGLE_LINE_STRING(\"###\")\n ]\n };\n\n const REGEXP_CONTENTS = [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ];\n\n const BARE_REGEXP_LITERAL = {\n begin: /\\/[^\\s](?=[^/\\n]*\\/)/,\n end: /\\//,\n contains: REGEXP_CONTENTS\n };\n\n const EXTENDED_REGEXP_LITERAL = (rawDelimiter) => {\n const begin = concat(rawDelimiter, /\\//);\n const end = concat(/\\//, rawDelimiter);\n return {\n begin,\n end,\n contains: [\n ...REGEXP_CONTENTS,\n {\n scope: \"comment\",\n begin: `#(?!.*${end})`,\n end: /$/,\n },\n ],\n };\n };\n\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/lexicalstructure/#Regular-Expression-Literals\n const REGEXP = {\n scope: \"regexp\",\n variants: [\n EXTENDED_REGEXP_LITERAL('###'),\n EXTENDED_REGEXP_LITERAL('##'),\n EXTENDED_REGEXP_LITERAL('#'),\n BARE_REGEXP_LITERAL\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412\n const QUOTED_IDENTIFIER = { match: concat(/`/, identifier, /`/) };\n const IMPLICIT_PARAMETER = {\n className: 'variable',\n match: /\\$\\d+/\n };\n const PROPERTY_WRAPPER_PROJECTION = {\n className: 'variable',\n match: `\\\\$${identifierCharacter}+`\n };\n const IDENTIFIERS = [\n QUOTED_IDENTIFIER,\n IMPLICIT_PARAMETER,\n PROPERTY_WRAPPER_PROJECTION\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html\n const AVAILABLE_ATTRIBUTE = {\n match: /(@|#(un)?)available/,\n scope: 'keyword',\n starts: { contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: availabilityKeywords,\n contains: [\n ...OPERATORS,\n NUMBER,\n STRING\n ]\n }\n ] }\n };\n\n const KEYWORD_ATTRIBUTE = {\n scope: 'keyword',\n match: concat(/@/, either(...keywordAttributes), lookahead(either(/\\(/, /\\s+/))),\n };\n\n const USER_DEFINED_ATTRIBUTE = {\n scope: 'meta',\n match: concat(/@/, identifier)\n };\n\n const ATTRIBUTES = [\n AVAILABLE_ATTRIBUTE,\n KEYWORD_ATTRIBUTE,\n USER_DEFINED_ATTRIBUTE\n ];\n\n // https://docs.swift.org/swift-book/ReferenceManual/Types.html\n const TYPE = {\n match: lookahead(/\\b[A-Z]/),\n relevance: 0,\n contains: [\n { // Common Apple frameworks, for relevance boost\n className: 'type',\n match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, '+')\n },\n { // Type identifier\n className: 'type',\n match: typeIdentifier,\n relevance: 0\n },\n { // Optional type\n match: /[?!]+/,\n relevance: 0\n },\n { // Variadic parameter\n match: /\\.\\.\\./,\n relevance: 0\n },\n { // Protocol composition\n match: concat(/\\s+&\\s+/, lookahead(typeIdentifier)),\n relevance: 0\n }\n ]\n };\n const GENERIC_ARGUMENTS = {\n begin: /</,\n end: />/,\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...ATTRIBUTES,\n OPERATOR_GUARD,\n TYPE\n ]\n };\n TYPE.contains.push(GENERIC_ARGUMENTS);\n\n // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552\n // Prevents element names from being highlighted as keywords.\n const TUPLE_ELEMENT_NAME = {\n match: concat(identifier, /\\s*:/),\n keywords: \"_|0\",\n relevance: 0\n };\n // Matches tuples as well as the parameter list of a function type.\n const TUPLE = {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n 'self',\n TUPLE_ELEMENT_NAME,\n ...COMMENTS,\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE\n ]\n };\n\n const GENERIC_PARAMETERS = {\n begin: /</,\n end: />/,\n keywords: 'repeat each',\n contains: [\n ...COMMENTS,\n TYPE\n ]\n };\n const FUNCTION_PARAMETER_NAME = {\n begin: either(\n lookahead(concat(identifier, /\\s*:/)),\n lookahead(concat(identifier, /\\s+/, identifier, /\\s*:/))\n ),\n end: /:/,\n relevance: 0,\n contains: [\n {\n className: 'keyword',\n match: /\\b_\\b/\n },\n {\n className: 'params',\n match: identifier\n }\n ]\n };\n const FUNCTION_PARAMETERS = {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n FUNCTION_PARAMETER_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ],\n endsParent: true,\n illegal: /[\"']/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362\n // https://docs.swift.org/swift-book/documentation/the-swift-programming-language/declarations/#Macro-Declaration\n const FUNCTION_OR_MACRO = {\n match: [\n /(func|macro)/,\n /\\s+/,\n either(QUOTED_IDENTIFIER.match, identifier, operator)\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: [\n /\\[/,\n /%/\n ]\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379\n const INIT_SUBSCRIPT = {\n match: [\n /\\b(?:subscript|init[?!]?)/,\n /\\s*(?=[<(])/,\n ],\n className: { 1: \"keyword\" },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: /\\[|%/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380\n const OPERATOR_DECLARATION = {\n match: [\n /operator/,\n /\\s+/,\n operator\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n }\n };\n\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550\n const PRECEDENCEGROUP = {\n begin: [\n /precedencegroup/,\n /\\s+/,\n typeIdentifier\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n },\n contains: [ TYPE ],\n keywords: [\n ...precedencegroupKeywords,\n ...literals\n ],\n end: /}/\n };\n\n const CLASS_FUNC_DECLARATION = {\n match: [\n /class\\b/, \n /\\s+/,\n /func\\b/,\n /\\s+/,\n /\\b[A-Za-z_][A-Za-z0-9_]*\\b/ \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\",\n 5: \"title.function\"\n }\n };\n\n const CLASS_VAR_DECLARATION = {\n match: [\n /class\\b/,\n /\\s+/, \n /var\\b/, \n ],\n scope: {\n 1: \"keyword\",\n 3: \"keyword\"\n }\n };\n\n const TYPE_DECLARATION = {\n begin: [\n /(struct|protocol|class|extension|enum|actor)/,\n /\\s+/,\n identifier,\n /\\s*/,\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n keywords: KEYWORDS,\n contains: [\n GENERIC_PARAMETERS,\n ...KEYWORD_MODES,\n {\n begin: /:/,\n end: /\\{/,\n keywords: KEYWORDS,\n contains: [\n {\n scope: \"title.class.inherited\",\n match: typeIdentifier,\n },\n ...KEYWORD_MODES,\n ],\n relevance: 0,\n },\n ]\n };\n\n // Add supported submodes to string interpolation.\n for (const variant of STRING.variants) {\n const interpolation = variant.contains.find(mode => mode.label === \"interpol\");\n // TODO: Interpolation can contain any expression, so there's room for improvement here.\n interpolation.keywords = KEYWORDS;\n const submodes = [\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS\n ];\n interpolation.contains = [\n ...submodes,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n 'self',\n ...submodes\n ]\n }\n ];\n }\n\n return {\n name: 'Swift',\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n FUNCTION_OR_MACRO,\n INIT_SUBSCRIPT,\n CLASS_FUNC_DECLARATION,\n CLASS_VAR_DECLARATION,\n TYPE_DECLARATION,\n OPERATOR_DECLARATION,\n PRECEDENCEGROUP,\n {\n beginKeywords: 'import',\n end: /$/,\n contains: [ ...COMMENTS ],\n relevance: 0\n },\n REGEXP,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ]\n };\n}\n\nexport { swift as default };\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\",\n // It's reached stage 3, which is \"recommended for implementation\":\n \"using\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\n\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"sessionStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n TYPES,\n ERROR_TYPES\n);\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (\n // HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" ||\n // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\"\n ) {\n response.ignoreMatch();\n return;\n }\n\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if ((m = afterMatch.match(/^\\s*=/))) {\n response.ignoreMatch();\n return;\n }\n\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if ((m = afterMatch.match(/^\\s+extends\\s+/))) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: '\\.?html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: '\\.?css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const GRAPHQL_TEMPLATE = {\n begin: '\\.?gql`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'graphql'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n begin: '(?=@[A-Za-z]+)',\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n },\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n // This is intentional:\n // See https://github.com/highlightjs/highlight.js/issues/3288\n // hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n // convert this to negative lookbehind in v12\n begin: /(\\s*)\\(/, // to match the parms with\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n\n ]\n };\n\n const CLASS_REFERENCE = {\n relevance: 0,\n match:\n regex.either(\n // Hard coded exceptions\n /\\bJSON/,\n // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/,\n // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/,\n // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/,\n // P\n // single letters are not highlighted\n // BLAH\n // this will be flagged as a UPPER_CASE_CONSTANT instead\n ),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n\n const USE_STRICT = {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [ PARAMS ],\n illegal: /%/\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n\n const FUNCTION_CALL = {\n match: regex.concat(\n /\\b/,\n noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ].map(x => `${x}\\\\s*\\\\(`)),\n IDENT_RE$1, regex.lookahead(/\\s*\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(\n regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/)\n )),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n { // eat to avoid empty params\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n\n const FUNC_LEAD_IN_RE = '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>';\n\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/, /\\s+/,\n IDENT_RE$1, /\\s*/,\n /=\\s*/,\n /(async\\s*)?/, // async is optional\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n return {\n name: 'JavaScript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS, CLASS_REFERENCE },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n GRAPHQL_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n { match: /\\$\\d+/ },\n NUMBER,\n CLASS_REFERENCE,\n {\n scope: 'attr',\n match: IDENT_RE$1 + regex.lookahead(':'),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /(\\s*)\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n { match: XML_SELF_CLOSING },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: '\\\\b(?!function)' + hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1, className: \"title.function\" })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: '\\\\$' + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [ /\\bconstructor(?=\\s*\\()/ ],\n className: { 1: \"title.function\" },\n contains: [ PARAMS ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nContributors: Ike Ku <dempfi@yahoo.com>\nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/\n\n\n/** @type LanguageFn */\nfunction typescript(hljs) {\n const regex = hljs.regex;\n const tsLanguage = javascript(hljs);\n\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"symbol\",\n \"bigint\",\n \"unknown\"\n ];\n const NAMESPACE = {\n begin: [\n /namespace/,\n /\\s+/,\n hljs.IDENT_RE\n ],\n beginScope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n };\n const INTERFACE = {\n beginKeywords: 'interface',\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: 'interface extends',\n built_in: TYPES\n },\n contains: [ tsLanguage.exports.CLASS_REFERENCE ]\n };\n const USE_STRICT = {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n // \"namespace\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\",\n \"enum\",\n \"override\",\n \"satisfies\"\n ];\n /*\n namespace is a TS keyword but it's fine to use it as a variable name too.\n const message = 'foo';\n const namespace = 'bar';\n */\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n \"variable.language\": BUILT_IN_VARIABLES\n };\n\n const DECORATOR = {\n className: 'meta',\n begin: '@' + IDENT_RE$1,\n };\n\n const swapMode = (mode, label, replacement) => {\n const indx = mode.contains.findIndex(m => m.label === label);\n if (indx === -1) { throw new Error(\"can not find mode to replace\"); }\n\n mode.contains.splice(indx, 1, replacement);\n };\n\n\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n\n // highlight the function params\n const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find(c => c.scope === \"attr\");\n\n // take default attr rule and extend it to support optionals\n const OPTIONAL_KEY_OR_ARGUMENT = Object.assign({},\n ATTRIBUTE_HIGHLIGHT,\n { match: regex.concat(IDENT_RE$1, regex.lookahead(/\\s*\\?:/)) }\n );\n tsLanguage.exports.PARAMS_CONTAINS.push([\n tsLanguage.exports.CLASS_REFERENCE, // class reference for highlighting the params types\n ATTRIBUTE_HIGHLIGHT, // highlight the params key\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // Add the optional property assignment highlighting for objects or classes\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE,\n OPTIONAL_KEY_OR_ARGUMENT, // Added for optional property assignment highlighting\n ]);\n\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n\n const functionDeclaration = tsLanguage.contains.find(m => m.label === \"func.def\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n\n Object.assign(tsLanguage, {\n name: 'TypeScript',\n aliases: [\n 'ts',\n 'tsx',\n 'mts',\n 'cts'\n ]\n });\n\n return tsLanguage;\n}\n\nexport { typescript as default };\n","/**\n * @import {LanguageFn} from 'highlight.js'\n */\n\nimport arduino from 'highlight.js/lib/languages/arduino'\nimport bash from 'highlight.js/lib/languages/bash'\nimport c from 'highlight.js/lib/languages/c'\nimport cpp from 'highlight.js/lib/languages/cpp'\nimport csharp from 'highlight.js/lib/languages/csharp'\nimport css from 'highlight.js/lib/languages/css'\nimport diff from 'highlight.js/lib/languages/diff'\nimport go from 'highlight.js/lib/languages/go'\nimport graphql from 'highlight.js/lib/languages/graphql'\nimport ini from 'highlight.js/lib/languages/ini'\nimport java from 'highlight.js/lib/languages/java'\nimport javascript from 'highlight.js/lib/languages/javascript'\nimport json from 'highlight.js/lib/languages/json'\nimport kotlin from 'highlight.js/lib/languages/kotlin'\nimport less from 'highlight.js/lib/languages/less'\nimport lua from 'highlight.js/lib/languages/lua'\nimport makefile from 'highlight.js/lib/languages/makefile'\nimport markdown from 'highlight.js/lib/languages/markdown'\nimport objectivec from 'highlight.js/lib/languages/objectivec'\nimport perl from 'highlight.js/lib/languages/perl'\nimport php from 'highlight.js/lib/languages/php'\nimport phpTemplate from 'highlight.js/lib/languages/php-template'\nimport plaintext from 'highlight.js/lib/languages/plaintext'\nimport python from 'highlight.js/lib/languages/python'\nimport pythonRepl from 'highlight.js/lib/languages/python-repl'\nimport r from 'highlight.js/lib/languages/r'\nimport ruby from 'highlight.js/lib/languages/ruby'\nimport rust from 'highlight.js/lib/languages/rust'\nimport scss from 'highlight.js/lib/languages/scss'\nimport shell from 'highlight.js/lib/languages/shell'\nimport sql from 'highlight.js/lib/languages/sql'\nimport swift from 'highlight.js/lib/languages/swift'\nimport typescript from 'highlight.js/lib/languages/typescript'\nimport vbnet from 'highlight.js/lib/languages/vbnet'\nimport wasm from 'highlight.js/lib/languages/wasm'\nimport xml from 'highlight.js/lib/languages/xml'\nimport yaml from 'highlight.js/lib/languages/yaml'\n\n/**\n * Map of grammars.\n *\n * @type {Record<string, LanguageFn>}\n */\nexport const grammars = {\n arduino,\n bash,\n c,\n cpp,\n csharp,\n css,\n diff,\n go,\n graphql,\n ini,\n java,\n javascript,\n json,\n kotlin,\n less,\n lua,\n makefile,\n markdown,\n objectivec,\n perl,\n php,\n 'php-template': phpTemplate,\n plaintext,\n python,\n 'python-repl': pythonRepl,\n r,\n ruby,\n rust,\n scss,\n shell,\n sql,\n swift,\n typescript,\n vbnet,\n wasm,\n xml,\n yaml\n}\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cPlusPlus(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n // Floating-point literal.\n { begin:\n \"[+-]?(?:\" // Leading sign.\n // Decimal.\n + \"(?:\"\n +\"[0-9](?:'?[0-9])*\\\\.(?:[0-9](?:'?[0-9])*)?\"\n + \"|\\\\.[0-9](?:'?[0-9])*\"\n + \")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?\"\n + \"|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*\"\n // Hexadecimal.\n + \"|0[Xx](?:\"\n +\"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?\"\n + \"|\\\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*\"\n + \")[Pp][+-]?[0-9](?:'?[0-9])*\"\n + \")(?:\" // Literal suffixes.\n + \"[Ff](?:16|32|64|128)?\"\n + \"|(BF|bf)16\"\n + \"|[Ll]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n },\n // Integer literal.\n { begin:\n \"[+-]?\\\\b(?:\" // Leading sign.\n + \"0[Bb][01](?:'?[01])*\" // Binary.\n + \"|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*\" // Hexadecimal.\n + \"|0(?:'?[0-7])*\" // Octal or just a lone zero.\n + \"|[1-9](?:'?[0-9])*\" // Decimal.\n + \")(?:\" // Literal suffixes.\n + \"[Uu](?:LL?|ll?)\"\n + \"|[Uu][Zz]?\"\n + \"|(?:LL?|ll?)[Uu]?\"\n + \"|[Zz][Uu]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the\n // literal highlight actually makes it stand out more.\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'flat_map',\n 'flat_set',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: { 'function.dispatch': 'built_in' },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\n/*\nLanguage: Arduino\nAuthor: Stefania Mellai <s.mellai@arduino.cc>\nDescription: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.\nWebsite: https://www.arduino.cc\nCategory: system\n*/\n\n\n/** @type LanguageFn */\nfunction arduino(hljs) {\n const ARDUINO_KW = {\n type: [\n \"boolean\",\n \"byte\",\n \"word\",\n \"String\"\n ],\n built_in: [\n \"KeyboardController\",\n \"MouseController\",\n \"SoftwareSerial\",\n \"EthernetServer\",\n \"EthernetClient\",\n \"LiquidCrystal\",\n \"RobotControl\",\n \"GSMVoiceCall\",\n \"EthernetUDP\",\n \"EsploraTFT\",\n \"HttpClient\",\n \"RobotMotor\",\n \"WiFiClient\",\n \"GSMScanner\",\n \"FileSystem\",\n \"Scheduler\",\n \"GSMServer\",\n \"YunClient\",\n \"YunServer\",\n \"IPAddress\",\n \"GSMClient\",\n \"GSMModem\",\n \"Keyboard\",\n \"Ethernet\",\n \"Console\",\n \"GSMBand\",\n \"Esplora\",\n \"Stepper\",\n \"Process\",\n \"WiFiUDP\",\n \"GSM_SMS\",\n \"Mailbox\",\n \"USBHost\",\n \"Firmata\",\n \"PImage\",\n \"Client\",\n \"Server\",\n \"GSMPIN\",\n \"FileIO\",\n \"Bridge\",\n \"Serial\",\n \"EEPROM\",\n \"Stream\",\n \"Mouse\",\n \"Audio\",\n \"Servo\",\n \"File\",\n \"Task\",\n \"GPRS\",\n \"WiFi\",\n \"Wire\",\n \"TFT\",\n \"GSM\",\n \"SPI\",\n \"SD\"\n ],\n _hints: [\n \"setup\",\n \"loop\",\n \"runShellCommandAsynchronously\",\n \"analogWriteResolution\",\n \"retrieveCallingNumber\",\n \"printFirmwareVersion\",\n \"analogReadResolution\",\n \"sendDigitalPortPair\",\n \"noListenOnLocalhost\",\n \"readJoystickButton\",\n \"setFirmwareVersion\",\n \"readJoystickSwitch\",\n \"scrollDisplayRight\",\n \"getVoiceCallStatus\",\n \"scrollDisplayLeft\",\n \"writeMicroseconds\",\n \"delayMicroseconds\",\n \"beginTransmission\",\n \"getSignalStrength\",\n \"runAsynchronously\",\n \"getAsynchronously\",\n \"listenOnLocalhost\",\n \"getCurrentCarrier\",\n \"readAccelerometer\",\n \"messageAvailable\",\n \"sendDigitalPorts\",\n \"lineFollowConfig\",\n \"countryNameWrite\",\n \"runShellCommand\",\n \"readStringUntil\",\n \"rewindDirectory\",\n \"readTemperature\",\n \"setClockDivider\",\n \"readLightSensor\",\n \"endTransmission\",\n \"analogReference\",\n \"detachInterrupt\",\n \"countryNameRead\",\n \"attachInterrupt\",\n \"encryptionType\",\n \"readBytesUntil\",\n \"robotNameWrite\",\n \"readMicrophone\",\n \"robotNameRead\",\n \"cityNameWrite\",\n \"userNameWrite\",\n \"readJoystickY\",\n \"readJoystickX\",\n \"mouseReleased\",\n \"openNextFile\",\n \"scanNetworks\",\n \"noInterrupts\",\n \"digitalWrite\",\n \"beginSpeaker\",\n \"mousePressed\",\n \"isActionDone\",\n \"mouseDragged\",\n \"displayLogos\",\n \"noAutoscroll\",\n \"addParameter\",\n \"remoteNumber\",\n \"getModifiers\",\n \"keyboardRead\",\n \"userNameRead\",\n \"waitContinue\",\n \"processInput\",\n \"parseCommand\",\n \"printVersion\",\n \"readNetworks\",\n \"writeMessage\",\n \"blinkVersion\",\n \"cityNameRead\",\n \"readMessage\",\n \"setDataMode\",\n \"parsePacket\",\n \"isListening\",\n \"setBitOrder\",\n \"beginPacket\",\n \"isDirectory\",\n \"motorsWrite\",\n \"drawCompass\",\n \"digitalRead\",\n \"clearScreen\",\n \"serialEvent\",\n \"rightToLeft\",\n \"setTextSize\",\n \"leftToRight\",\n \"requestFrom\",\n \"keyReleased\",\n \"compassRead\",\n \"analogWrite\",\n \"interrupts\",\n \"WiFiServer\",\n \"disconnect\",\n \"playMelody\",\n \"parseFloat\",\n \"autoscroll\",\n \"getPINUsed\",\n \"setPINUsed\",\n \"setTimeout\",\n \"sendAnalog\",\n \"readSlider\",\n \"analogRead\",\n \"beginWrite\",\n \"createChar\",\n \"motorsStop\",\n \"keyPressed\",\n \"tempoWrite\",\n \"readButton\",\n \"subnetMask\",\n \"debugPrint\",\n \"macAddress\",\n \"writeGreen\",\n \"randomSeed\",\n \"attachGPRS\",\n \"readString\",\n \"sendString\",\n \"remotePort\",\n \"releaseAll\",\n \"mouseMoved\",\n \"background\",\n \"getXChange\",\n \"getYChange\",\n \"answerCall\",\n \"getResult\",\n \"voiceCall\",\n \"endPacket\",\n \"constrain\",\n \"getSocket\",\n \"writeJSON\",\n \"getButton\",\n \"available\",\n \"connected\",\n \"findUntil\",\n \"readBytes\",\n \"exitValue\",\n \"readGreen\",\n \"writeBlue\",\n \"startLoop\",\n \"IPAddress\",\n \"isPressed\",\n \"sendSysex\",\n \"pauseMode\",\n \"gatewayIP\",\n \"setCursor\",\n \"getOemKey\",\n \"tuneWrite\",\n \"noDisplay\",\n \"loadImage\",\n \"switchPIN\",\n \"onRequest\",\n \"onReceive\",\n \"changePIN\",\n \"playFile\",\n \"noBuffer\",\n \"parseInt\",\n \"overflow\",\n \"checkPIN\",\n \"knobRead\",\n \"beginTFT\",\n \"bitClear\",\n \"updateIR\",\n \"bitWrite\",\n \"position\",\n \"writeRGB\",\n \"highByte\",\n \"writeRed\",\n \"setSpeed\",\n \"readBlue\",\n \"noStroke\",\n \"remoteIP\",\n \"transfer\",\n \"shutdown\",\n \"hangCall\",\n \"beginSMS\",\n \"endWrite\",\n \"attached\",\n \"maintain\",\n \"noCursor\",\n \"checkReg\",\n \"checkPUK\",\n \"shiftOut\",\n \"isValid\",\n \"shiftIn\",\n \"pulseIn\",\n \"connect\",\n \"println\",\n \"localIP\",\n \"pinMode\",\n \"getIMEI\",\n \"display\",\n \"noBlink\",\n \"process\",\n \"getBand\",\n \"running\",\n \"beginSD\",\n \"drawBMP\",\n \"lowByte\",\n \"setBand\",\n \"release\",\n \"bitRead\",\n \"prepare\",\n \"pointTo\",\n \"readRed\",\n \"setMode\",\n \"noFill\",\n \"remove\",\n \"listen\",\n \"stroke\",\n \"detach\",\n \"attach\",\n \"noTone\",\n \"exists\",\n \"buffer\",\n \"height\",\n \"bitSet\",\n \"circle\",\n \"config\",\n \"cursor\",\n \"random\",\n \"IRread\",\n \"setDNS\",\n \"endSMS\",\n \"getKey\",\n \"micros\",\n \"millis\",\n \"begin\",\n \"print\",\n \"write\",\n \"ready\",\n \"flush\",\n \"width\",\n \"isPIN\",\n \"blink\",\n \"clear\",\n \"press\",\n \"mkdir\",\n \"rmdir\",\n \"close\",\n \"point\",\n \"yield\",\n \"image\",\n \"BSSID\",\n \"click\",\n \"delay\",\n \"read\",\n \"text\",\n \"move\",\n \"peek\",\n \"beep\",\n \"rect\",\n \"line\",\n \"open\",\n \"seek\",\n \"fill\",\n \"size\",\n \"turn\",\n \"stop\",\n \"home\",\n \"find\",\n \"step\",\n \"tone\",\n \"sqrt\",\n \"RSSI\",\n \"SSID\",\n \"end\",\n \"bit\",\n \"tan\",\n \"cos\",\n \"sin\",\n \"pow\",\n \"map\",\n \"abs\",\n \"max\",\n \"min\",\n \"get\",\n \"run\",\n \"put\"\n ],\n literal: [\n \"DIGITAL_MESSAGE\",\n \"FIRMATA_STRING\",\n \"ANALOG_MESSAGE\",\n \"REPORT_DIGITAL\",\n \"REPORT_ANALOG\",\n \"INPUT_PULLUP\",\n \"SET_PIN_MODE\",\n \"INTERNAL2V56\",\n \"SYSTEM_RESET\",\n \"LED_BUILTIN\",\n \"INTERNAL1V1\",\n \"SYSEX_START\",\n \"INTERNAL\",\n \"EXTERNAL\",\n \"DEFAULT\",\n \"OUTPUT\",\n \"INPUT\",\n \"HIGH\",\n \"LOW\"\n ]\n };\n\n const ARDUINO = cPlusPlus(hljs);\n\n const kws = /** @type {Record<string,any>} */ (ARDUINO.keywords);\n\n kws.type = [\n ...kws.type,\n ...ARDUINO_KW.type\n ];\n kws.literal = [\n ...kws.literal,\n ...ARDUINO_KW.literal\n ];\n kws.built_in = [\n ...kws.built_in,\n ...ARDUINO_KW.built_in\n ];\n kws._hints = ARDUINO_KW._hints;\n\n ARDUINO.name = 'Arduino';\n ARDUINO.aliases = [ 'ino' ];\n ARDUINO.supersetOf = \"cpp\";\n\n return ARDUINO;\n}\n\nexport { arduino as default };\n","/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common, scripting\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const regex = hljs.regex;\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR, {\n className: 'variable',\n variants: [\n { begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: 'subst',\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n };\n const COMMENT = hljs.inherit(\n hljs.COMMENT(),\n {\n match: [\n /(^|\\s)/,\n /#.*$/\n ],\n scope: {\n 2: 'comment'\n }\n }\n );\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: { contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: 'string'\n })\n ] }\n };\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n match: /\\\\\"/\n };\n const APOS_STRING = {\n className: 'string',\n begin: /'/,\n end: /'/\n };\n const ESCAPED_APOS = {\n match: /\\\\'/\n };\n const ARITHMETIC = {\n begin: /\\$?\\(\\(/,\n end: /\\)\\)/,\n contains: [\n {\n begin: /\\d+#[0-9a-f]+/,\n className: \"number\"\n },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: /\\w[\\w\\d_]*/ }) ],\n relevance: 0\n };\n\n const KEYWORDS = [\n \"if\",\n \"then\",\n \"else\",\n \"elif\",\n \"fi\",\n \"time\",\n \"for\",\n \"while\",\n \"until\",\n \"in\",\n \"do\",\n \"done\",\n \"case\",\n \"esac\",\n \"coproc\",\n \"function\",\n \"select\"\n ];\n\n const LITERALS = [\n \"true\",\n \"false\"\n ];\n\n // to consume paths to prevent keyword matches inside them\n const PATH_MODE = { match: /(\\/[a-z._-]+)+/ };\n\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n const SHELL_BUILT_INS = [\n \"break\",\n \"cd\",\n \"continue\",\n \"eval\",\n \"exec\",\n \"exit\",\n \"export\",\n \"getopts\",\n \"hash\",\n \"pwd\",\n \"readonly\",\n \"return\",\n \"shift\",\n \"test\",\n \"times\",\n \"trap\",\n \"umask\",\n \"unset\"\n ];\n\n const BASH_BUILT_INS = [\n \"alias\",\n \"bind\",\n \"builtin\",\n \"caller\",\n \"command\",\n \"declare\",\n \"echo\",\n \"enable\",\n \"help\",\n \"let\",\n \"local\",\n \"logout\",\n \"mapfile\",\n \"printf\",\n \"read\",\n \"readarray\",\n \"source\",\n \"sudo\",\n \"type\",\n \"typeset\",\n \"ulimit\",\n \"unalias\"\n ];\n\n const ZSH_BUILT_INS = [\n \"autoload\",\n \"bg\",\n \"bindkey\",\n \"bye\",\n \"cap\",\n \"chdir\",\n \"clone\",\n \"comparguments\",\n \"compcall\",\n \"compctl\",\n \"compdescribe\",\n \"compfiles\",\n \"compgroups\",\n \"compquote\",\n \"comptags\",\n \"comptry\",\n \"compvalues\",\n \"dirs\",\n \"disable\",\n \"disown\",\n \"echotc\",\n \"echoti\",\n \"emulate\",\n \"fc\",\n \"fg\",\n \"float\",\n \"functions\",\n \"getcap\",\n \"getln\",\n \"history\",\n \"integer\",\n \"jobs\",\n \"kill\",\n \"limit\",\n \"log\",\n \"noglob\",\n \"popd\",\n \"print\",\n \"pushd\",\n \"pushln\",\n \"rehash\",\n \"sched\",\n \"setcap\",\n \"setopt\",\n \"stat\",\n \"suspend\",\n \"ttyctl\",\n \"unfunction\",\n \"unhash\",\n \"unlimit\",\n \"unsetopt\",\n \"vared\",\n \"wait\",\n \"whence\",\n \"where\",\n \"which\",\n \"zcompile\",\n \"zformat\",\n \"zftp\",\n \"zle\",\n \"zmodload\",\n \"zparseopts\",\n \"zprof\",\n \"zpty\",\n \"zregexparse\",\n \"zsocket\",\n \"zstyle\",\n \"ztcp\"\n ];\n\n const GNU_CORE_UTILS = [\n \"chcon\",\n \"chgrp\",\n \"chown\",\n \"chmod\",\n \"cp\",\n \"dd\",\n \"df\",\n \"dir\",\n \"dircolors\",\n \"ln\",\n \"ls\",\n \"mkdir\",\n \"mkfifo\",\n \"mknod\",\n \"mktemp\",\n \"mv\",\n \"realpath\",\n \"rm\",\n \"rmdir\",\n \"shred\",\n \"sync\",\n \"touch\",\n \"truncate\",\n \"vdir\",\n \"b2sum\",\n \"base32\",\n \"base64\",\n \"cat\",\n \"cksum\",\n \"comm\",\n \"csplit\",\n \"cut\",\n \"expand\",\n \"fmt\",\n \"fold\",\n \"head\",\n \"join\",\n \"md5sum\",\n \"nl\",\n \"numfmt\",\n \"od\",\n \"paste\",\n \"ptx\",\n \"pr\",\n \"sha1sum\",\n \"sha224sum\",\n \"sha256sum\",\n \"sha384sum\",\n \"sha512sum\",\n \"shuf\",\n \"sort\",\n \"split\",\n \"sum\",\n \"tac\",\n \"tail\",\n \"tr\",\n \"tsort\",\n \"unexpand\",\n \"uniq\",\n \"wc\",\n \"arch\",\n \"basename\",\n \"chroot\",\n \"date\",\n \"dirname\",\n \"du\",\n \"echo\",\n \"env\",\n \"expr\",\n \"factor\",\n // \"false\", // keyword literal already\n \"groups\",\n \"hostid\",\n \"id\",\n \"link\",\n \"logname\",\n \"nice\",\n \"nohup\",\n \"nproc\",\n \"pathchk\",\n \"pinky\",\n \"printenv\",\n \"printf\",\n \"pwd\",\n \"readlink\",\n \"runcon\",\n \"seq\",\n \"sleep\",\n \"stat\",\n \"stdbuf\",\n \"stty\",\n \"tee\",\n \"test\",\n \"timeout\",\n // \"true\", // keyword literal already\n \"tty\",\n \"uname\",\n \"unlink\",\n \"uptime\",\n \"users\",\n \"who\",\n \"whoami\",\n \"yes\"\n ];\n\n return {\n name: 'Bash',\n aliases: [\n 'sh',\n 'zsh'\n ],\n keywords: {\n $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: [\n ...SHELL_BUILT_INS,\n ...BASH_BUILT_INS,\n // Shell modifiers\n \"set\",\n \"shopt\",\n ...ZSH_BUILT_INS,\n ...GNU_CORE_UTILS\n ]\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n COMMENT,\n HERE_DOC,\n PATH_MODE,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n ESCAPED_APOS,\n VAR\n ]\n };\n}\n\nexport { bash as default };\n","/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n\n const TYPES = {\n className: 'type',\n variants: [\n { begin: '\\\\b[a-z\\\\d_]*_t\\\\b' },\n { match: /\\batomic_[a-z]{3,6}\\b/ }\n ]\n\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { match: /\\b(0b[01']+)/ }, \n { match: /(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/ }, \n { match: /(-?)\\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/ }, \n { match: /(-?)\\b\\d+(?:'\\d+)*(?:\\.\\d*(?:'\\d*)*)?(?:[eE][-+]?\\d+)?/ } \n ],\n relevance: 0\n }; \n \n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef elifdef elifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const C_KEYWORDS = [\n \"asm\",\n \"auto\",\n \"break\",\n \"case\",\n \"continue\",\n \"default\",\n \"do\",\n \"else\",\n \"enum\",\n \"extern\",\n \"for\",\n \"fortran\",\n \"goto\",\n \"if\",\n \"inline\",\n \"register\",\n \"restrict\",\n \"return\",\n \"sizeof\",\n \"typeof\",\n \"typeof_unqual\",\n \"struct\",\n \"switch\",\n \"typedef\",\n \"union\",\n \"volatile\",\n \"while\",\n \"_Alignas\",\n \"_Alignof\",\n \"_Atomic\",\n \"_Generic\",\n \"_Noreturn\",\n \"_Static_assert\",\n \"_Thread_local\",\n // aliases\n \"alignas\",\n \"alignof\",\n \"noreturn\",\n \"static_assert\",\n \"thread_local\",\n // not a C keyword but is, for all intents and purposes, treated exactly like one.\n \"_Pragma\"\n ];\n\n const C_TYPES = [\n \"float\",\n \"double\",\n \"signed\",\n \"unsigned\",\n \"int\",\n \"short\",\n \"long\",\n \"char\",\n \"void\",\n \"_Bool\",\n \"_BitInt\",\n \"_Complex\",\n \"_Imaginary\",\n \"_Decimal32\",\n \"_Decimal64\",\n \"_Decimal96\",\n \"_Decimal128\",\n \"_Decimal64x\",\n \"_Decimal128x\",\n \"_Float16\",\n \"_Float32\",\n \"_Float64\",\n \"_Float128\",\n \"_Float32x\",\n \"_Float64x\",\n \"_Float128x\",\n // modifiers\n \"const\",\n \"static\",\n \"constexpr\",\n // aliases\n \"complex\",\n \"bool\",\n \"imaginary\"\n ];\n\n const KEYWORDS = {\n keyword: C_KEYWORDS,\n type: C_TYPES,\n literal: 'true false NULL',\n // TODO: apply hinting work similar to what was done in cpp.js\n built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream '\n + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set '\n + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos '\n + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp '\n + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper '\n + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow '\n + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp '\n + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan '\n + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n };\n\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ hljs.inherit(TITLE_MODE, { className: \"title.function\" }) ],\n relevance: 0\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES\n ]\n }\n ]\n },\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: \"C\",\n aliases: [ 'h' ],\n keywords: KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: '</',\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: KEYWORDS\n },\n {\n className: 'class',\n beginKeywords: 'enum class struct union',\n end: /[{;:<>=]/,\n contains: [\n { beginKeywords: \"final class struct\" },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: KEYWORDS\n }\n };\n}\n\nexport { c as default };\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cpp(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n // Floating-point literal.\n { begin:\n \"[+-]?(?:\" // Leading sign.\n // Decimal.\n + \"(?:\"\n +\"[0-9](?:'?[0-9])*\\\\.(?:[0-9](?:'?[0-9])*)?\"\n + \"|\\\\.[0-9](?:'?[0-9])*\"\n + \")(?:[Ee][+-]?[0-9](?:'?[0-9])*)?\"\n + \"|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*\"\n // Hexadecimal.\n + \"|0[Xx](?:\"\n +\"[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?\"\n + \"|\\\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*\"\n + \")[Pp][+-]?[0-9](?:'?[0-9])*\"\n + \")(?:\" // Literal suffixes.\n + \"[Ff](?:16|32|64|128)?\"\n + \"|(BF|bf)16\"\n + \"|[Ll]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n },\n // Integer literal.\n { begin:\n \"[+-]?\\\\b(?:\" // Leading sign.\n + \"0[Bb][01](?:'?[01])*\" // Binary.\n + \"|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*\" // Hexadecimal.\n + \"|0(?:'?[0-7])*\" // Octal or just a lone zero.\n + \"|[1-9](?:'?[0-9])*\" // Decimal.\n + \")(?:\" // Literal suffixes.\n + \"[Uu](?:LL?|ll?)\"\n + \"|[Uu][Zz]?\"\n + \"|(?:LL?|ll?)[Uu]?\"\n + \"|[Zz][Uu]\"\n + \"|\" // Literal suffix is optional.\n + \")\"\n // Note: there are user-defined literal suffixes too, but perhaps having the custom suffix not part of the\n // literal highlight actually makes it stand out more.\n }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'flat_map',\n 'flat_set',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n classNameAliases: { 'function.dispatch': 'built_in' },\n contains: [].concat(\n EXPRESSION_CONTEXT,\n FUNCTION_DECLARATION,\n FUNCTION_DISPATCH,\n EXPRESSION_CONTAINS,\n [\n PREPROCESSOR,\n { // containers: ie, `vector <int> rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\nexport { cpp as default };\n","/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nContributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>\nWebsite: https://docs.microsoft.com/dotnet/csharp/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n 'bool',\n 'byte',\n 'char',\n 'decimal',\n 'delegate',\n 'double',\n 'dynamic',\n 'enum',\n 'float',\n 'int',\n 'long',\n 'nint',\n 'nuint',\n 'object',\n 'sbyte',\n 'short',\n 'string',\n 'ulong',\n 'uint',\n 'ushort'\n ];\n const FUNCTION_MODIFIERS = [\n 'public',\n 'private',\n 'protected',\n 'static',\n 'internal',\n 'protected',\n 'abstract',\n 'async',\n 'extern',\n 'override',\n 'unsafe',\n 'virtual',\n 'new',\n 'sealed',\n 'partial'\n ];\n const LITERAL_KEYWORDS = [\n 'default',\n 'false',\n 'null',\n 'true'\n ];\n const NORMAL_KEYWORDS = [\n 'abstract',\n 'as',\n 'base',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'const',\n 'continue',\n 'do',\n 'else',\n 'event',\n 'explicit',\n 'extern',\n 'finally',\n 'fixed',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'namespace',\n 'new',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'record',\n 'ref',\n 'return',\n 'scoped',\n 'sealed',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'try',\n 'typeof',\n 'unchecked',\n 'unsafe',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while'\n ];\n const CONTEXTUAL_KEYWORDS = [\n 'add',\n 'alias',\n 'and',\n 'ascending',\n 'args',\n 'async',\n 'await',\n 'by',\n 'descending',\n 'dynamic',\n 'equals',\n 'file',\n 'from',\n 'get',\n 'global',\n 'group',\n 'init',\n 'into',\n 'join',\n 'let',\n 'nameof',\n 'not',\n 'notnull',\n 'on',\n 'or',\n 'orderby',\n 'partial',\n 'record',\n 'remove',\n 'required',\n 'scoped',\n 'select',\n 'set',\n 'unmanaged',\n 'value|0',\n 'var',\n 'when',\n 'where',\n 'with',\n 'yield'\n ];\n\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, { begin: '[a-zA-Z](\\\\.?\\\\w)*' });\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n const RAW_STRING = {\n className: 'string',\n begin: /\"\"\"(\"*)(?!\")(.|\\n)*?\"\"\"\\1/,\n relevance: 1\n };\n const VERBATIM_STRING = {\n className: 'string',\n begin: '@\"',\n end: '\"',\n contains: [ { begin: '\"\"' } ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, { illegal: /\\n/ });\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, { illegal: /\\n/ });\n const INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n { begin: /\\{\\{/ },\n { begin: /\\}\\}/ },\n { begin: '\"\"' },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, { illegal: /\\n/ })\n ];\n const STRING = { variants: [\n RAW_STRING,\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ] };\n\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n { beginKeywords: \"in out\" },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n\n return {\n name: 'C#',\n aliases: [\n 'cs',\n 'c#'\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///',\n relevance: 0\n },\n { begin: '<!--|-->' },\n {\n begin: '</?',\n end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: { keyword: 'if else elif endif define undef warning error line region endregion pragma checksum' }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n { beginKeywords: \"where class\" },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'record',\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[(?=[\\\\w])',\n excludeBegin: true,\n end: '\\\\]',\n excludeEnd: true,\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + '\\\\s*(<[^=]+>\\\\s*)?\\\\(',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n { match: /\\(\\)/ },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\nexport { csharp as default };\n","/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction diff(hljs) {\n const regex = hljs.regex;\n return {\n name: 'Diff',\n aliases: [ 'patch' ],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n match: regex.either(\n /^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/,\n /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/,\n /^--- +\\d+,\\d+ +----$/\n )\n },\n {\n className: 'comment',\n variants: [\n {\n begin: regex.either(\n /Index: /,\n /^index/,\n /={3,}/,\n /^-{3}/,\n /^\\*{3} /,\n /^\\+{3}/,\n /^diff --git/\n ),\n end: /$/\n },\n { match: /^\\*{15}$/ }\n ]\n },\n {\n className: 'addition',\n begin: /^\\+/,\n end: /$/\n },\n {\n className: 'deletion',\n begin: /^-/,\n end: /$/\n },\n {\n className: 'addition',\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\nexport { diff as default };\n","/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/\n\nfunction go(hljs) {\n const LITERALS = [\n \"true\",\n \"false\",\n \"iota\",\n \"nil\"\n ];\n const BUILT_INS = [\n \"append\",\n \"cap\",\n \"close\",\n \"complex\",\n \"copy\",\n \"imag\",\n \"len\",\n \"make\",\n \"new\",\n \"panic\",\n \"print\",\n \"println\",\n \"real\",\n \"recover\",\n \"delete\"\n ];\n const TYPES = [\n \"bool\",\n \"byte\",\n \"complex64\",\n \"complex128\",\n \"error\",\n \"float32\",\n \"float64\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"int64\",\n \"string\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"uint64\",\n \"int\",\n \"uint\",\n \"uintptr\",\n \"rune\"\n ];\n const KWS = [\n \"break\",\n \"case\",\n \"chan\",\n \"const\",\n \"continue\",\n \"default\",\n \"defer\",\n \"else\",\n \"fallthrough\",\n \"for\",\n \"func\",\n \"go\",\n \"goto\",\n \"if\",\n \"import\",\n \"interface\",\n \"map\",\n \"package\",\n \"range\",\n \"return\",\n \"select\",\n \"struct\",\n \"switch\",\n \"type\",\n \"var\",\n ];\n const KEYWORDS = {\n keyword: KWS,\n type: TYPES,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n return {\n name: 'Go',\n aliases: [ 'golang' ],\n keywords: KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n begin: '`',\n end: '`'\n }\n ]\n },\n {\n className: 'number',\n variants: [\n {\n match: /-?\\b0[xX]\\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\\d(_?\\d)*i?/, // hex without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b0[xX](_?[a-fA-F0-9])+((\\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\\d(_?\\d)*)?i?/, // hex with a present digit before . (making a digit afterwards optional)\n relevance: 0\n },\n {\n match: /-?\\b0[oO](_?[0-7])*i?/, // leading 0o octal\n relevance: 0\n },\n {\n match: /-?\\.\\d(_?\\d)*([eE][+-]?\\d(_?\\d)*)?i?/, // decimal without a present digit before . (making a digit afterwards required)\n relevance: 0\n },\n {\n match: /-?\\b\\d(_?\\d)*(\\.(\\d(_?\\d)*)?)?([eE][+-]?\\d(_?\\d)*)?i?/, // decimal with a present digit before . (making a digit afterwards optional)\n relevance: 0\n }\n ]\n },\n { begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func',\n end: '\\\\s*(\\\\{|$)',\n excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n}\n\nexport { go as default };\n","/*\n Language: GraphQL\n Author: John Foster (GH jf990), and others\n Description: GraphQL is a query language for APIs\n Category: web, common\n*/\n\n/** @type LanguageFn */\nfunction graphql(hljs) {\n const regex = hljs.regex;\n const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/;\n return {\n name: \"GraphQL\",\n aliases: [ \"gql\" ],\n case_insensitive: true,\n disableAutodetect: false,\n keywords: {\n keyword: [\n \"query\",\n \"mutation\",\n \"subscription\",\n \"type\",\n \"input\",\n \"schema\",\n \"directive\",\n \"interface\",\n \"union\",\n \"scalar\",\n \"fragment\",\n \"enum\",\n \"on\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"null\"\n ]\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n scope: \"punctuation\",\n match: /[.]{3}/,\n relevance: 0\n },\n {\n scope: \"punctuation\",\n begin: /[\\!\\(\\)\\:\\=\\[\\]\\{\\|\\}]{1}/,\n relevance: 0\n },\n {\n scope: \"variable\",\n begin: /\\$/,\n end: /\\W/,\n excludeEnd: true,\n relevance: 0\n },\n {\n scope: \"meta\",\n match: /@\\w+/,\n excludeEnd: true\n },\n {\n scope: \"symbol\",\n begin: regex.concat(GQL_NAME, regex.lookahead(/\\s*:/)),\n relevance: 0\n }\n ],\n illegal: [\n /[;<']/,\n /BEGIN/\n ]\n };\n}\n\nexport { graphql as default };\n","/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez <guillaume1.gomez@gmail.com>\nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/\n\nfunction ini(hljs) {\n const regex = hljs.regex;\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n variants: [\n { begin: /([+-]+)?[\\d]+_[\\d_]+/ },\n { begin: hljs.NUMBER_RE }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: 'variable',\n variants: [\n { begin: /\\$[\\w\\d\"][\\w\\d_]*/ },\n { begin: /\\$\\{(.*?)\\}/ }\n ]\n };\n const LITERALS = {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n 'self'\n ],\n relevance: 0\n };\n\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = regex.either(\n BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE\n );\n const DOTTED_KEY = regex.concat(\n ANY_KEY, '(\\\\s*\\\\.\\\\s*', ANY_KEY, ')*',\n regex.lookahead(/\\s*=\\s*[^#\\s]/)\n );\n\n return {\n name: 'TOML, also INI',\n aliases: [ 'toml' ],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: 'section',\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: 'attr',\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\nexport { ini as default };\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n aliases: ['jsonc'],\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nexport { json as default };\n","/*\nLanguage: Lua\nDescription: Lua is a powerful, efficient, lightweight, embeddable scripting language.\nAuthor: Andrew Fedorov <dmmdrs@mail.ru>\nCategory: common, gaming, scripting\nWebsite: https://www.lua.org\n*/\n\nfunction lua(hljs) {\n const OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n const CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n const LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [ 'self' ]\n };\n const COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [ LONG_BRACKETS ],\n relevance: 10\n }\n )\n ];\n return {\n name: 'Lua',\n aliases: ['pluto'],\n keywords: {\n $pattern: hljs.UNDERSCORE_IDENT_RE,\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n // Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len '\n + '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert '\n // Standard methods and properties:\n + 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring '\n + 'module next pairs pcall print rawequal rawget rawset require select setfenv '\n + 'setmetatable tonumber tostring type unpack xpcall arg self '\n // Library methods and properties (one line per library):\n + 'coroutine resume yield status wrap create running debug getupvalue '\n + 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv '\n + 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile '\n + 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan '\n + 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall '\n + 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower '\n + 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function',\n end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*' }),\n {\n className: 'params',\n begin: '\\\\(',\n endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [ LONG_BRACKETS ],\n relevance: 5\n }\n ])\n };\n}\n\nexport { lua as default };\n","/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Joël Porquet <joel@porquet.org>\nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common, build-system\n*/\n\nfunction makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n { begin: /\\$[@%<?\\^\\+\\*]/ }\n ]\n };\n /* Quoted string with variables inside */\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE\n ]\n };\n /* Function: $(func arg,...) */\n const FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/,\n end: /\\)/,\n keywords: { built_in:\n 'subst patsubst strip findstring filter filter-out sort '\n + 'word wordlist firstword lastword dir notdir suffix basename '\n + 'addsuffix addprefix join wildcard realpath abspath error warning '\n + 'shell origin flavor foreach if or and call eval file value' },\n contains: [ \n VARIABLE,\n QUOTE_STRING // Added QUOTE_STRING as they can be a part of functions\n ]\n };\n /* Variable assignment */\n const ASSIGNMENT = { begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*(?=[:+?]?=)' };\n /* Meta targets (.PHONY) */\n const META = {\n className: 'meta',\n begin: /^\\.PHONY:/,\n end: /$/,\n keywords: {\n $pattern: /[\\.\\w]+/,\n keyword: '.PHONY'\n }\n };\n /* Targets */\n const TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/,\n end: /$/,\n contains: [ VARIABLE ]\n };\n return {\n name: 'Makefile',\n aliases: [\n 'mk',\n 'mak',\n 'make',\n ],\n keywords: {\n $pattern: /[\\w-]+/,\n keyword: 'define endef undefine ifdef ifndef ifeq ifneq else endif '\n + 'include -include sinclude override export unexport private vpath'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n ASSIGNMENT,\n META,\n TARGET\n ]\n };\n}\n\nexport { makefile as default };\n","/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/\n\nfunction markdown(hljs) {\n const regex = hljs.regex;\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: '^[-\\\\*]{3,}',\n end: '$'\n };\n const CODE = {\n className: 'code',\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n { begin: '(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*' },\n { begin: '(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*' },\n // needed to allow markdown as a sublanguage to work\n {\n begin: '```',\n end: '```+[ ]*$'\n },\n {\n begin: '~~~',\n end: '~~~+[ ]*$'\n },\n { begin: '`.+?`' },\n {\n begin: '(?=^( {4}|\\\\t))',\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: '^( {4}|\\\\t)',\n end: '(\\\\n)$'\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: 'bullet',\n begin: '^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)',\n end: '\\\\s+',\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: regex.concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.*?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n // empty strings for alt or link text\n match: /\\[(?=\\])/ },\n {\n className: 'string',\n relevance: 0,\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: 'link',\n relevance: 0,\n begin: '\\\\]\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: '\\\\]\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: 'strong',\n contains: [], // defined later\n variants: [\n {\n begin: /_{2}(?!\\s)/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}(?!\\s)/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: 'emphasis',\n contains: [], // defined later\n variants: [\n {\n begin: /\\*(?![*\\s])/,\n end: /\\*/\n },\n {\n begin: /_(?![_\\s])/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n\n // 3 level deep nesting is not allowed because it would create confusion\n // in cases like `***testing***` because where we don't know if the last\n // `***` is starting a new bold/italic or finishing the last one\n const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] });\n const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] });\n BOLD.contains.push(ITALIC_WITHOUT_BOLD);\n ITALIC.contains.push(BOLD_WITHOUT_ITALIC);\n\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n\n [\n BOLD,\n ITALIC,\n BOLD_WITHOUT_ITALIC,\n ITALIC_WITHOUT_BOLD\n ].forEach(m => {\n m.contains = m.contains.concat(CONTAINABLE);\n });\n\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n\n const HEADER = {\n className: 'section',\n variants: [\n {\n begin: '^#{1,6}',\n end: '$',\n contains: CONTAINABLE\n },\n {\n begin: '(?=^.+?\\\\n[=-]{2,}$)',\n contains: [\n { begin: '^[=-]*$' },\n {\n begin: '^',\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n\n const BLOCKQUOTE = {\n className: 'quote',\n begin: '^>\\\\s+',\n contains: CONTAINABLE,\n end: '$'\n };\n\n const ENTITY = {\n //https://spec.commonmark.org/0.31.2/#entity-references\n scope: 'literal',\n match: /&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/\n };\n\n return {\n name: 'Markdown',\n aliases: [\n 'md',\n 'mkdown',\n 'mkd'\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE,\n ENTITY\n ]\n };\n}\n\nexport { markdown as default };\n","/*\nLanguage: Objective-C\nAuthor: Valerii Hiora <valerii.hiora@gmail.com>\nContributors: Angel G. Olloqui <angelgarcia.mail@gmail.com>, Matt Diephouse <matt@diephouse.com>, Andrew Farmer <ahfarmer@gmail.com>, Minh Nguyễn <mxn@1ec5.org>\nWebsite: https://developer.apple.com/documentation/objectivec\nCategory: common\n*/\n\nfunction objectivec(hljs) {\n const API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+'\n };\n const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;\n const TYPES = [\n \"int\",\n \"float\",\n \"char\",\n \"unsigned\",\n \"signed\",\n \"short\",\n \"long\",\n \"double\",\n \"wchar_t\",\n \"unichar\",\n \"void\",\n \"bool\",\n \"BOOL\",\n \"id|0\",\n \"_Bool\"\n ];\n const KWS = [\n \"while\",\n \"export\",\n \"sizeof\",\n \"typedef\",\n \"const\",\n \"struct\",\n \"for\",\n \"union\",\n \"volatile\",\n \"static\",\n \"mutable\",\n \"if\",\n \"do\",\n \"return\",\n \"goto\",\n \"enum\",\n \"else\",\n \"break\",\n \"extern\",\n \"asm\",\n \"case\",\n \"default\",\n \"register\",\n \"explicit\",\n \"typename\",\n \"switch\",\n \"continue\",\n \"inline\",\n \"readonly\",\n \"assign\",\n \"readwrite\",\n \"self\",\n \"@synchronized\",\n \"id\",\n \"typeof\",\n \"nonatomic\",\n \"IBOutlet\",\n \"IBAction\",\n \"strong\",\n \"weak\",\n \"copy\",\n \"in\",\n \"out\",\n \"inout\",\n \"bycopy\",\n \"byref\",\n \"oneway\",\n \"__strong\",\n \"__weak\",\n \"__block\",\n \"__autoreleasing\",\n \"@private\",\n \"@protected\",\n \"@public\",\n \"@try\",\n \"@property\",\n \"@end\",\n \"@throw\",\n \"@catch\",\n \"@finally\",\n \"@autoreleasepool\",\n \"@synthesize\",\n \"@dynamic\",\n \"@selector\",\n \"@optional\",\n \"@required\",\n \"@encode\",\n \"@package\",\n \"@import\",\n \"@defs\",\n \"@compatibility_alias\",\n \"__bridge\",\n \"__bridge_transfer\",\n \"__bridge_retained\",\n \"__bridge_retain\",\n \"__covariant\",\n \"__contravariant\",\n \"__kindof\",\n \"_Nonnull\",\n \"_Nullable\",\n \"_Null_unspecified\",\n \"__FUNCTION__\",\n \"__PRETTY_FUNCTION__\",\n \"__attribute__\",\n \"getter\",\n \"setter\",\n \"retain\",\n \"unsafe_unretained\",\n \"nonnull\",\n \"nullable\",\n \"null_unspecified\",\n \"null_resettable\",\n \"class\",\n \"instancetype\",\n \"NS_DESIGNATED_INITIALIZER\",\n \"NS_UNAVAILABLE\",\n \"NS_REQUIRES_SUPER\",\n \"NS_RETURNS_INNER_POINTER\",\n \"NS_INLINE\",\n \"NS_AVAILABLE\",\n \"NS_DEPRECATED\",\n \"NS_ENUM\",\n \"NS_OPTIONS\",\n \"NS_SWIFT_UNAVAILABLE\",\n \"NS_ASSUME_NONNULL_BEGIN\",\n \"NS_ASSUME_NONNULL_END\",\n \"NS_REFINED_FOR_SWIFT\",\n \"NS_SWIFT_NAME\",\n \"NS_SWIFT_NOTHROW\",\n \"NS_DURING\",\n \"NS_HANDLER\",\n \"NS_ENDHANDLER\",\n \"NS_VALUERETURN\",\n \"NS_VOIDRETURN\"\n ];\n const LITERALS = [\n \"false\",\n \"true\",\n \"FALSE\",\n \"TRUE\",\n \"nil\",\n \"YES\",\n \"NO\",\n \"NULL\"\n ];\n const BUILT_INS = [\n \"dispatch_once_t\",\n \"dispatch_queue_t\",\n \"dispatch_sync\",\n \"dispatch_async\",\n \"dispatch_once\"\n ];\n const KEYWORDS = {\n \"variable.language\": [\n \"this\",\n \"super\"\n ],\n $pattern: IDENTIFIER_RE,\n keyword: KWS,\n literal: LITERALS,\n built_in: BUILT_INS,\n type: TYPES\n };\n const CLASS_KEYWORDS = {\n $pattern: IDENTIFIER_RE,\n keyword: [\n \"@interface\",\n \"@class\",\n \"@protocol\",\n \"@implementation\"\n ]\n };\n return {\n name: 'Objective-C',\n aliases: [\n 'mm',\n 'objc',\n 'obj-c',\n 'obj-c++',\n 'objective-c++'\n ],\n keywords: KEYWORDS,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n }\n ]\n },\n {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/,\n end: /$/,\n illegal: '\\\\n'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.keyword.join('|') + ')\\\\b',\n end: /(\\{|$)/,\n excludeEnd: true,\n keywords: CLASS_KEYWORDS,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n begin: '\\\\.' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n}\n\nexport { objectivec as default };\n","/*\nLanguage: Perl\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nWebsite: https://www.perl.org\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction perl(hljs) {\n const regex = hljs.regex;\n const KEYWORDS = [\n 'abs',\n 'accept',\n 'alarm',\n 'and',\n 'atan2',\n 'bind',\n 'binmode',\n 'bless',\n 'break',\n 'caller',\n 'chdir',\n 'chmod',\n 'chomp',\n 'chop',\n 'chown',\n 'chr',\n 'chroot',\n 'class',\n 'close',\n 'closedir',\n 'connect',\n 'continue',\n 'cos',\n 'crypt',\n 'dbmclose',\n 'dbmopen',\n 'defined',\n 'delete',\n 'die',\n 'do',\n 'dump',\n 'each',\n 'else',\n 'elsif',\n 'endgrent',\n 'endhostent',\n 'endnetent',\n 'endprotoent',\n 'endpwent',\n 'endservent',\n 'eof',\n 'eval',\n 'exec',\n 'exists',\n 'exit',\n 'exp',\n 'fcntl',\n 'field',\n 'fileno',\n 'flock',\n 'for',\n 'foreach',\n 'fork',\n 'format',\n 'formline',\n 'getc',\n 'getgrent',\n 'getgrgid',\n 'getgrnam',\n 'gethostbyaddr',\n 'gethostbyname',\n 'gethostent',\n 'getlogin',\n 'getnetbyaddr',\n 'getnetbyname',\n 'getnetent',\n 'getpeername',\n 'getpgrp',\n 'getpriority',\n 'getprotobyname',\n 'getprotobynumber',\n 'getprotoent',\n 'getpwent',\n 'getpwnam',\n 'getpwuid',\n 'getservbyname',\n 'getservbyport',\n 'getservent',\n 'getsockname',\n 'getsockopt',\n 'given',\n 'glob',\n 'gmtime',\n 'goto',\n 'grep',\n 'gt',\n 'hex',\n 'if',\n 'index',\n 'int',\n 'ioctl',\n 'join',\n 'keys',\n 'kill',\n 'last',\n 'lc',\n 'lcfirst',\n 'length',\n 'link',\n 'listen',\n 'local',\n 'localtime',\n 'log',\n 'lstat',\n 'lt',\n 'ma',\n 'map',\n 'method',\n 'mkdir',\n 'msgctl',\n 'msgget',\n 'msgrcv',\n 'msgsnd',\n 'my',\n 'ne',\n 'next',\n 'no',\n 'not',\n 'oct',\n 'open',\n 'opendir',\n 'or',\n 'ord',\n 'our',\n 'pack',\n 'package',\n 'pipe',\n 'pop',\n 'pos',\n 'print',\n 'printf',\n 'prototype',\n 'push',\n 'q|0',\n 'qq',\n 'quotemeta',\n 'qw',\n 'qx',\n 'rand',\n 'read',\n 'readdir',\n 'readline',\n 'readlink',\n 'readpipe',\n 'recv',\n 'redo',\n 'ref',\n 'rename',\n 'require',\n 'reset',\n 'return',\n 'reverse',\n 'rewinddir',\n 'rindex',\n 'rmdir',\n 'say',\n 'scalar',\n 'seek',\n 'seekdir',\n 'select',\n 'semctl',\n 'semget',\n 'semop',\n 'send',\n 'setgrent',\n 'sethostent',\n 'setnetent',\n 'setpgrp',\n 'setpriority',\n 'setprotoent',\n 'setpwent',\n 'setservent',\n 'setsockopt',\n 'shift',\n 'shmctl',\n 'shmget',\n 'shmread',\n 'shmwrite',\n 'shutdown',\n 'sin',\n 'sleep',\n 'socket',\n 'socketpair',\n 'sort',\n 'splice',\n 'split',\n 'sprintf',\n 'sqrt',\n 'srand',\n 'stat',\n 'state',\n 'study',\n 'sub',\n 'substr',\n 'symlink',\n 'syscall',\n 'sysopen',\n 'sysread',\n 'sysseek',\n 'system',\n 'syswrite',\n 'tell',\n 'telldir',\n 'tie',\n 'tied',\n 'time',\n 'times',\n 'tr',\n 'truncate',\n 'uc',\n 'ucfirst',\n 'umask',\n 'undef',\n 'unless',\n 'unlink',\n 'unpack',\n 'unshift',\n 'untie',\n 'until',\n 'use',\n 'utime',\n 'values',\n 'vec',\n 'wait',\n 'waitpid',\n 'wantarray',\n 'warn',\n 'when',\n 'while',\n 'write',\n 'x|0',\n 'xor',\n 'y|0'\n ];\n\n // https://perldoc.perl.org/perlre#Modifiers\n const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12\n const PERL_KEYWORDS = {\n $pattern: /[\\w.]+/,\n keyword: KEYWORDS.join(\" \")\n };\n const SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{',\n end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n const METHOD = {\n begin: /->\\{/,\n end: /\\}/\n // contains defined later\n };\n const ATTR = {\n scope: 'attr',\n match: /\\s+:\\s*\\w+(\\s*\\(.*?\\))?/,\n };\n const VAR = {\n scope: 'variable',\n variants: [\n { begin: /\\$\\d/ },\n { begin: regex.concat(\n /[$%@](?!\")(\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z])(?![@$%])`\n )\n },\n {\n // Only $= is a special Perl variable and one can't declare @= or %=.\n begin: /[$%@](?!\")[^\\s\\w{=]|\\$=/,\n relevance: 0\n }\n ],\n contains: [ ATTR ],\n };\n const NUMBER = {\n className: 'number',\n variants: [\n // decimal numbers:\n // include the case where a number starts with a dot (eg. .9), and\n // the leading 0? avoids mixing the first and second match on 0.x cases\n { match: /0?\\.[0-9][0-9_]+\\b/ },\n // include the special versioned number (eg. v5.38)\n { match: /\\bv?(0|[1-9][0-9_]*(\\.[0-9_]+)?|[1-9][0-9_]*)\\b/ },\n // non-decimal numbers:\n { match: /\\b0[0-7][0-7_]*\\b/ },\n { match: /\\b0x[0-9a-fA-F][0-9a-fA-F_]*\\b/ },\n { match: /\\b0b[0-1][0-1_]*\\b/ },\n ],\n relevance: 0\n };\n const STRING_CONTAINS = [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n VAR\n ];\n const REGEX_DELIMS = [\n /!/,\n /\\//,\n /\\|/,\n /\\?/,\n /'/,\n /\"/, // valid but infrequent and weird\n /#/ // valid but infrequent and weird\n ];\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_DOUBLE_RE = (prefix, open, close = '\\\\1') => {\n const middle = (close === '\\\\1')\n ? close\n : regex.concat(close, open);\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n middle,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */\n const PAIRED_RE = (prefix, open, close) => {\n return regex.concat(\n regex.concat(\"(?:\", prefix, \")\"),\n open,\n /(?:\\\\.|[^\\\\\\/])*?/,\n close,\n REGEX_MODIFIERS\n );\n };\n const PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n /^=\\w/,\n /=cut/,\n { endsWithParent: true }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(',\n end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[',\n end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{',\n end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|',\n end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*<',\n end: '>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q',\n end: 'q',\n relevance: 5\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: '`',\n end: '`',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: /\\{\\w+\\}/,\n relevance: 0\n },\n {\n begin: '-?\\\\w+\\\\s*=>',\n relevance: 0\n }\n ]\n },\n NUMBER,\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n variants: [\n // allow matching common delimiters\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", regex.either(...REGEX_DELIMS, { capture: true })) },\n // and then paired delmis\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\(\", \"\\\\)\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\[\", \"\\\\]\") },\n { begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\{\", \"\\\\}\") }\n ],\n relevance: 2\n },\n {\n className: 'regexp',\n variants: [\n {\n // could be a comment in many languages so do not count\n // as relevant\n begin: /(m|qr)\\/\\//,\n relevance: 0\n },\n // prefix is optional with /regex/\n { begin: PAIRED_RE(\"(?:m|qr)?\", /\\//, /\\//) },\n // allow matching common delimiters\n { begin: PAIRED_RE(\"m|qr\", regex.either(...REGEX_DELIMS, { capture: true }), /\\1/) },\n // allow common paired delmins\n { begin: PAIRED_RE(\"m|qr\", /\\(/, /\\)/) },\n { begin: PAIRED_RE(\"m|qr\", /\\[/, /\\]/) },\n { begin: PAIRED_RE(\"m|qr\", /\\{/, /\\}/) }\n ]\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub method',\n end: '(\\\\s*\\\\(.*?\\\\))?[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '[;{]',\n excludeEnd: true,\n relevance: 5,\n contains: [ hljs.TITLE_MODE, ATTR, NUMBER ]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n name: 'Perl',\n aliases: [\n 'pl',\n 'pm'\n ],\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n}\n\nexport { perl as default };\n","/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(\n /[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/,\n NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(\n /(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/,\n NOT_PERL_ETC);\n const UPCASE_NAME_RE = regex.concat(\n /[A-Z]+/,\n NOT_PERL_ETC);\n const VARIABLE = {\n scope: 'variable',\n match: '\\\\$+' + IDENT_RE,\n };\n const PREPROCESSOR = {\n scope: \"meta\",\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?=/ },\n // less relevant per PSR-1 which says not to use short-tags\n { begin: /<\\?/, relevance: 0.1 },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n scope: 'subst',\n variants: [\n { begin: /\\$\\w+/ },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; },\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); },\n };\n\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*'(\\w+)'\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = '[ \\t\\n]';\n const STRING = {\n scope: 'string',\n variants: [\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC,\n NOWDOC\n ]\n };\n const NUMBER = {\n scope: 'number',\n variants: [\n { begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const LITERALS = [\n \"false\",\n \"null\",\n \"true\"\n ];\n const KWS = [\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n \"__CLASS__\",\n \"__DIR__\",\n \"__FILE__\",\n \"__FUNCTION__\",\n \"__COMPILER_HALT_OFFSET__\",\n \"__LINE__\",\n \"__METHOD__\",\n \"__NAMESPACE__\",\n \"__TRAIT__\",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n \"die\",\n \"echo\",\n \"exit\",\n \"include\",\n \"include_once\",\n \"print\",\n \"require\",\n \"require_once\",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n \"array\",\n \"abstract\",\n \"and\",\n \"as\",\n \"binary\",\n \"bool\",\n \"boolean\",\n \"break\",\n \"callable\",\n \"case\",\n \"catch\",\n \"class\",\n \"clone\",\n \"const\",\n \"continue\",\n \"declare\",\n \"default\",\n \"do\",\n \"double\",\n \"else\",\n \"elseif\",\n \"empty\",\n \"enddeclare\",\n \"endfor\",\n \"endforeach\",\n \"endif\",\n \"endswitch\",\n \"endwhile\",\n \"enum\",\n \"eval\",\n \"extends\",\n \"final\",\n \"finally\",\n \"float\",\n \"for\",\n \"foreach\",\n \"from\",\n \"global\",\n \"goto\",\n \"if\",\n \"implements\",\n \"instanceof\",\n \"insteadof\",\n \"int\",\n \"integer\",\n \"interface\",\n \"isset\",\n \"iterable\",\n \"list\",\n \"match|0\",\n \"mixed\",\n \"new\",\n \"never\",\n \"object\",\n \"or\",\n \"private\",\n \"protected\",\n \"public\",\n \"readonly\",\n \"real\",\n \"return\",\n \"string\",\n \"switch\",\n \"throw\",\n \"trait\",\n \"try\",\n \"unset\",\n \"use\",\n \"var\",\n \"void\",\n \"while\",\n \"xor\",\n \"yield\"\n ];\n\n const BUILT_INS = [\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n \"Error|0\",\n \"AppendIterator\",\n \"ArgumentCountError\",\n \"ArithmeticError\",\n \"ArrayIterator\",\n \"ArrayObject\",\n \"AssertionError\",\n \"BadFunctionCallException\",\n \"BadMethodCallException\",\n \"CachingIterator\",\n \"CallbackFilterIterator\",\n \"CompileError\",\n \"Countable\",\n \"DirectoryIterator\",\n \"DivisionByZeroError\",\n \"DomainException\",\n \"EmptyIterator\",\n \"ErrorException\",\n \"Exception\",\n \"FilesystemIterator\",\n \"FilterIterator\",\n \"GlobIterator\",\n \"InfiniteIterator\",\n \"InvalidArgumentException\",\n \"IteratorIterator\",\n \"LengthException\",\n \"LimitIterator\",\n \"LogicException\",\n \"MultipleIterator\",\n \"NoRewindIterator\",\n \"OutOfBoundsException\",\n \"OutOfRangeException\",\n \"OuterIterator\",\n \"OverflowException\",\n \"ParentIterator\",\n \"ParseError\",\n \"RangeException\",\n \"RecursiveArrayIterator\",\n \"RecursiveCachingIterator\",\n \"RecursiveCallbackFilterIterator\",\n \"RecursiveDirectoryIterator\",\n \"RecursiveFilterIterator\",\n \"RecursiveIterator\",\n \"RecursiveIteratorIterator\",\n \"RecursiveRegexIterator\",\n \"RecursiveTreeIterator\",\n \"RegexIterator\",\n \"RuntimeException\",\n \"SeekableIterator\",\n \"SplDoublyLinkedList\",\n \"SplFileInfo\",\n \"SplFileObject\",\n \"SplFixedArray\",\n \"SplHeap\",\n \"SplMaxHeap\",\n \"SplMinHeap\",\n \"SplObjectStorage\",\n \"SplObserver\",\n \"SplPriorityQueue\",\n \"SplQueue\",\n \"SplStack\",\n \"SplSubject\",\n \"SplTempFileObject\",\n \"TypeError\",\n \"UnderflowException\",\n \"UnexpectedValueException\",\n \"UnhandledMatchError\",\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n \"ArrayAccess\",\n \"BackedEnum\",\n \"Closure\",\n \"Fiber\",\n \"Generator\",\n \"Iterator\",\n \"IteratorAggregate\",\n \"Serializable\",\n \"Stringable\",\n \"Throwable\",\n \"Traversable\",\n \"UnitEnum\",\n \"WeakReference\",\n \"WeakMap\",\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n \"Directory\",\n \"__PHP_Incomplete_Class\",\n \"parent\",\n \"php_user_filter\",\n \"self\",\n \"static\",\n \"stdClass\"\n ];\n\n /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */\n const dualCase = (items) => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS,\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = (items) => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n\n const CONSTRUCTOR_CALL = { variants: [\n {\n match: [\n /new/,\n regex.concat(WHITESPACE, \"+\"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat(\"(?!\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n PASCAL_CASE_CLASS_NAME_RE,\n ],\n scope: {\n 1: \"keyword\",\n 4: \"title.class\",\n },\n }\n ] };\n\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, \"\\\\b(?!\\\\()\");\n\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [\n {\n match: [\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: { 2: \"variable.constant\", },\n },\n {\n match: [\n /::/,\n /class/,\n ],\n scope: { 2: \"variable.language\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.constant\",\n },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n \"::\",\n regex.lookahead(/(?!class\\b)/)\n ),\n ],\n scope: { 1: \"title.class\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n /::/,\n /class/,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.language\",\n },\n }\n ] };\n\n const NAMED_ARGUMENT = {\n scope: 'attr',\n match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)),\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n NAMED_ARGUMENT,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ],\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [\n /\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat(\"(?!fn\\\\b|function\\\\b|\", normalizeKeywords(KWS).join(\"\\\\b|\"), \"|\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n IDENT_RE,\n regex.concat(WHITESPACE, \"*\"),\n regex.lookahead(/(?=\\()/)\n ],\n scope: { 3: \"title.function.invoke\", },\n contains: [ PARAMS_MODE ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n\n const ATTRIBUTE_CONTAINS = [\n NAMED_ARGUMENT,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ];\n\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*\\\\?/,\n regex.either(\n PASCAL_CASE_CLASS_NAME_RE,\n UPCASE_NAME_RE\n )\n ),\n beginScope: \"meta\",\n end: /]/,\n endScope: \"meta\",\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n {\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n 'self',\n ...ATTRIBUTE_CONTAINS,\n ]\n },\n ...ATTRIBUTE_CONTAINS,\n {\n scope: 'meta',\n variants: [\n { match: PASCAL_CASE_CLASS_NAME_RE },\n { match: UPCASE_NAME_RE }\n ]\n }\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$'),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [\n {\n scope: 'doctag',\n match: '@[A-Za-z]+'\n }\n ] }\n ),\n {\n match: /__halt_compiler\\(\\);/,\n keywords: '__halt_compiler',\n starts: {\n scope: \"comment\",\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n match: /\\?>/,\n scope: \"meta\",\n endsParent: true\n }\n ]\n }\n },\n PREPROCESSOR,\n {\n scope: 'variable.language',\n match: /\\$this\\b/\n },\n VARIABLE,\n FUNCTION_INVOKE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n {\n match: [\n /const/,\n /\\s/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"variable.constant\",\n },\n },\n CONSTRUCTOR_CALL,\n {\n scope: 'function',\n relevance: 0,\n beginKeywords: 'fn function',\n end: /[;{]/,\n excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [\n { beginKeywords: 'use', },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: '=>', // No markup, just a relevance booster\n endsParent: true\n },\n {\n scope: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n ATTRIBUTES,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n },\n ]\n },\n {\n scope: 'class',\n variants: [\n {\n beginKeywords: \"enum\",\n illegal: /[($\"]/\n },\n {\n beginKeywords: \"class interface trait\",\n illegal: /[:($\"]/\n }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n // both use and namespace still use \"old style\" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: \"title.class\" }) ]\n },\n {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: \"keyword\"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n STRING,\n NUMBER,\n ]\n };\n}\n\nexport { php as default };\n","/*\nLanguage: PHP Template\nRequires: xml.js, php.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nWebsite: https://www.php.net\nCategory: common\n*/\n\nfunction phpTemplate(hljs) {\n return {\n name: \"PHP template\",\n subLanguage: 'xml',\n contains: [\n {\n begin: /<\\?(php|=)?/,\n end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {\n begin: '/\\\\*',\n end: '\\\\*/',\n skip: true\n },\n {\n begin: 'b\"',\n end: '\"',\n skip: true\n },\n {\n begin: 'b\\'',\n end: '\\'',\n skip: true\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n })\n ]\n }\n ]\n };\n}\n\nexport { phpTemplate as default };\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nexport { plaintext as default };\n","/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/\n\nfunction python(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /[\\p{XID_Start}_]\\p{XID_Continue}*/u;\n const RESERVED_WORDS = [\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'case',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'match',\n 'nonlocal|10',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield'\n ];\n\n const BUILT_INS = [\n '__import__',\n 'abs',\n 'all',\n 'any',\n 'ascii',\n 'bin',\n 'bool',\n 'breakpoint',\n 'bytearray',\n 'bytes',\n 'callable',\n 'chr',\n 'classmethod',\n 'compile',\n 'complex',\n 'delattr',\n 'dict',\n 'dir',\n 'divmod',\n 'enumerate',\n 'eval',\n 'exec',\n 'filter',\n 'float',\n 'format',\n 'frozenset',\n 'getattr',\n 'globals',\n 'hasattr',\n 'hash',\n 'help',\n 'hex',\n 'id',\n 'input',\n 'int',\n 'isinstance',\n 'issubclass',\n 'iter',\n 'len',\n 'list',\n 'locals',\n 'map',\n 'max',\n 'memoryview',\n 'min',\n 'next',\n 'object',\n 'oct',\n 'open',\n 'ord',\n 'pow',\n 'print',\n 'property',\n 'range',\n 'repr',\n 'reversed',\n 'round',\n 'set',\n 'setattr',\n 'slice',\n 'sorted',\n 'staticmethod',\n 'str',\n 'sum',\n 'super',\n 'tuple',\n 'type',\n 'vars',\n 'zip'\n ];\n\n const LITERALS = [\n '__debug__',\n 'Ellipsis',\n 'False',\n 'None',\n 'NotImplemented',\n 'True'\n ];\n\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n\n const PROMPT = {\n className: 'meta',\n begin: /^(>>>|\\.\\.\\.) /\n };\n\n const SUBST = {\n className: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n\n const STRING = {\n className: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = '[0-9](_?[0-9])*';\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n // Whitespace after a number (or any lexical token) is needed only if its absence\n // would change the tokenization\n // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens\n // We deviate slightly, requiring a word boundary or a keyword\n // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`)\n const lookahead = `\\\\b|${RESERVED_WORDS.join('|')}`;\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[bB](_?[01])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})`\n },\n\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ](?=${lookahead})`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: regex.lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n { // prevent keywords from coloring `type`\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: 'params',\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n\n return {\n name: 'Python',\n aliases: [\n 'py',\n 'gyp',\n 'ipython'\n ],\n unicodeRegex: true,\n keywords: KEYWORDS,\n illegal: /(<\\/|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n scope: 'variable.language',\n match: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n { match: /\\bor\\b/, scope: \"keyword\" },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n match: [\n /\\bdef/, /\\s+/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [ PARAMS ]\n },\n {\n variants: [\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE, /\\s*/,\n /\\(\\s*/, IDENT_RE,/\\s*\\)/\n ],\n },\n {\n match: [\n /\\bclass/, /\\s+/,\n IDENT_RE\n ],\n }\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 6: \"title.class.inherited\",\n }\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\nexport { python as default };\n","/*\nLanguage: Python REPL\nRequires: python.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nCategory: common\n*/\n\nfunction pythonRepl(hljs) {\n return {\n aliases: [ 'pycon' ],\n contains: [\n {\n className: 'meta.prompt',\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: '$',\n subLanguage: 'python'\n }\n },\n variants: [\n { begin: /^>>>(?=[ ]|$)/ },\n { begin: /^\\.\\.\\.(?=[ ]|$)/ }\n ]\n }\n ]\n };\n}\n\nexport { pythonRepl as default };\n","/*\nLanguage: R\nDescription: R is a free software environment for statistical computing and graphics.\nAuthor: Joe Cheng <joe@rstudio.org>\nContributors: Konrad Rudolph <konrad.rudolph@gmail.com>\nWebsite: https://www.r-project.org\nCategory: common,scientific\n*/\n\n/** @type LanguageFn */\nfunction r(hljs) {\n const regex = hljs.regex;\n // Identifiers in R cannot start with `_`, but they can start with `.` if it\n // is not immediately followed by a digit.\n // R also supports quoted identifiers, which are near-arbitrary sequences\n // delimited by backticks (`…`), which may contain escape sequences. These are\n // handled in a separate mode. See `test/markup/r/names.txt` for examples.\n // FIXME: Support Unicode identifiers.\n const IDENT_RE = /(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;\n const NUMBER_TYPES_RE = regex.either(\n // Special case: only hexadecimal binary powers can contain fractions\n /0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/,\n // Hexadecimal numbers without fraction and optional binary power\n /0[xX][0-9a-fA-F]+(?:[pP][+-]?\\d+)?[Li]?/,\n // Decimal numbers\n /(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?[Li]?/\n );\n const OPERATORS_RE = /[=!<>:]=|\\|\\||&&|:::?|<-|<<-|->>|->|\\|>|[-+*\\/?!$&|:<=>@^~]|\\*\\*/;\n const PUNCTUATION_RE = regex.either(\n /[()]/,\n /[{}]/,\n /\\[\\[/,\n /[[\\]]/,\n /\\\\/,\n /,/\n );\n\n return {\n name: 'R',\n\n keywords: {\n $pattern: IDENT_RE,\n keyword:\n 'function if in break next repeat else for while',\n literal:\n 'NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 '\n + 'NA_character_|10 NA_complex_|10',\n built_in:\n // Builtin constants\n 'LETTERS letters month.abb month.name pi T F '\n // Primitive functions\n // These are all the functions in `base` that are implemented as a\n // `.Primitive`, minus those functions that are also keywords.\n + 'abs acos acosh all any anyNA Arg as.call as.character '\n + 'as.complex as.double as.environment as.integer as.logical '\n + 'as.null.default as.numeric as.raw asin asinh atan atanh attr '\n + 'attributes baseenv browser c call ceiling class Conj cos cosh '\n + 'cospi cummax cummin cumprod cumsum digamma dim dimnames '\n + 'emptyenv exp expression floor forceAndCall gamma gc.time '\n + 'globalenv Im interactive invisible is.array is.atomic is.call '\n + 'is.character is.complex is.double is.environment is.expression '\n + 'is.finite is.function is.infinite is.integer is.language '\n + 'is.list is.logical is.matrix is.na is.name is.nan is.null '\n + 'is.numeric is.object is.pairlist is.raw is.recursive is.single '\n + 'is.symbol lazyLoadDBfetch length lgamma list log max min '\n + 'missing Mod names nargs nzchar oldClass on.exit pos.to.env '\n + 'proc.time prod quote range Re rep retracemem return round '\n + 'seq_along seq_len seq.int sign signif sin sinh sinpi sqrt '\n + 'standardGeneric substitute sum switch tan tanh tanpi tracemem '\n + 'trigamma trunc unclass untracemem UseMethod xtfrm',\n },\n\n contains: [\n // Roxygen comments\n hljs.COMMENT(\n /#'/,\n /$/,\n { contains: [\n {\n // Handle `@examples` separately to cause all subsequent code\n // until the next `@`-tag on its own line to be kept as-is,\n // preventing highlighting. This code is example R code, so nested\n // doctags shouldn’t be treated as such. See\n // `test/markup/r/roxygen.txt` for an example.\n scope: 'doctag',\n match: /@examples/,\n starts: {\n end: regex.lookahead(regex.either(\n // end if another doc comment\n /\\n^#'\\s*(?=@[a-zA-Z]+)/,\n // or a line with no comment\n /\\n^(?!#')/\n )),\n endsParent: true\n }\n },\n {\n // Handle `@param` to highlight the parameter name following\n // after.\n scope: 'doctag',\n begin: '@param',\n end: /$/,\n contains: [\n {\n scope: 'variable',\n variants: [\n { match: IDENT_RE },\n { match: /`(?:\\\\.|[^`\\\\])+`/ }\n ],\n endsParent: true\n }\n ]\n },\n {\n scope: 'doctag',\n match: /@[a-zA-Z]+/\n },\n {\n scope: 'keyword',\n match: /\\\\[a-zA-Z]+/\n }\n ] }\n ),\n\n hljs.HASH_COMMENT_MODE,\n\n {\n scope: 'string',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\(/,\n end: /\\)(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\{/,\n end: /\\}(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\[/,\n end: /\\](-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\(/,\n end: /\\)(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\{/,\n end: /\\}(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\[/,\n end: /\\](-*)'/\n }),\n {\n begin: '\"',\n end: '\"',\n relevance: 0\n },\n {\n begin: \"'\",\n end: \"'\",\n relevance: 0\n }\n ],\n },\n\n // Matching numbers immediately following punctuation and operators is\n // tricky since we need to look at the character ahead of a number to\n // ensure the number is not part of an identifier, and we cannot use\n // negative look-behind assertions. So instead we explicitly handle all\n // possible combinations of (operator|punctuation), number.\n // TODO: replace with negative look-behind when available\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/ },\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/ },\n // { begin: /(?<![a-zA-Z0-9._])(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/ }\n {\n relevance: 0,\n variants: [\n {\n scope: {\n 1: 'operator',\n 2: 'number'\n },\n match: [\n OPERATORS_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: 'operator',\n 2: 'number'\n },\n match: [\n /%[^%]*%/,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: 'punctuation',\n 2: 'number'\n },\n match: [\n PUNCTUATION_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: { 2: 'number' },\n match: [\n /[^a-zA-Z0-9._]|^/, // not part of an identifier, or start of document\n NUMBER_TYPES_RE\n ]\n }\n ]\n },\n\n // Operators/punctuation when they're not directly followed by numbers\n {\n // Relevance boost for the most common assignment form.\n scope: { 3: 'operator' },\n match: [\n IDENT_RE,\n /\\s+/,\n /<-/,\n /\\s+/\n ]\n },\n\n {\n scope: 'operator',\n relevance: 0,\n variants: [\n { match: OPERATORS_RE },\n { match: /%[^%]*%/ }\n ]\n },\n\n {\n scope: 'punctuation',\n relevance: 0,\n match: PUNCTUATION_RE\n },\n\n {\n // Escaped identifier\n begin: '`',\n end: '`',\n contains: [ { begin: /\\\\./ } ]\n }\n ]\n };\n}\n\nexport { r as default };\n","/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common, scripting\n*/\n\nfunction ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = '([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)';\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(\n /\\b([A-Z]+[a-z0-9]+)+/,\n // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/,\n )\n ;\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\n \"include\",\n \"extend\",\n \"prepend\",\n \"public\",\n \"private\",\n \"protected\",\n \"raise\",\n \"throw\"\n ];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\n \"__FILE__\",\n \"__LINE__\",\n \"__ENCODING__\"\n ],\n \"variable.language\": [\n \"self\",\n \"super\",\n ],\n keyword: [\n \"alias\",\n \"and\",\n \"begin\",\n \"BEGIN\",\n \"break\",\n \"case\",\n \"class\",\n \"defined\",\n \"do\",\n \"else\",\n \"elsif\",\n \"end\",\n \"END\",\n \"ensure\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"require\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"then\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n ...PSEUDO_KWS\n ],\n built_in: [\n \"proc\",\n \"lambda\",\n \"attr_accessor\",\n \"attr_reader\",\n \"attr_writer\",\n \"define_method\",\n \"private_constant\",\n \"module_function\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"nil\"\n ]\n };\n const YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n const IRB_OBJECT = {\n begin: '#<',\n end: '>'\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n { contains: [ YARDOCTAG ] }\n ),\n hljs.COMMENT(\n '^=begin',\n '^=end',\n {\n contains: [ YARDOCTAG ],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', hljs.MATCH_NOTHING_RE)\n ];\n const SUBST = {\n className: 'subst',\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n { begin: /\\B\\?(\\\\\\d{1,3})/ },\n { begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/ },\n { begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/ },\n { begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/ },\n { begin: /\\B\\?\\\\?\\S/ },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(\n /<<[-~]?'?/,\n regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)\n ),\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = '[1-9](_?[0-9])*|0';\n const digits = '[0-9](_?[0-9])*';\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n { begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b` },\n\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n { begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\" },\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\" },\n\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n { begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\" }\n ]\n };\n\n const PARAMS = {\n variants: [\n {\n match: /\\(\\)/,\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS,\n }\n ]\n };\n\n const INCLUDE_EXTEND = {\n match: [\n /(include|extend)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const CLASS_DEFINITION = {\n variants: [\n {\n match: [\n /class\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\s+<\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n },\n {\n match: [\n /\\b(class|module)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n }\n ],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n\n const METHOD_DEFINITION = {\n match: [\n /def/, /\\s+/,\n RUBY_METHOD_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n\n const OBJECT_CREATION = {\n relevance: 0,\n match: [\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\.new[. (]/\n ],\n scope: {\n 1: \"title.class\"\n }\n };\n\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n CLASS_DEFINITION,\n INCLUDE_EXTEND,\n OBJECT_CREATION,\n UPPER_CASE_CONSTANT,\n CLASS_REFERENCE,\n METHOD_DEFINITION,\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::' },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [\n STRING,\n { begin: RUBY_METHOD_RE }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: 'params',\n begin: /\\|(?!=)/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0, // this could be a lot of things (in other languages) other than params\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: '/',\n end: '/[a-z]*'\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: '%r\\\\(',\n end: '\\\\)[a-z]*'\n },\n {\n begin: '%r!',\n end: '![a-z]*'\n },\n {\n begin: '%r\\\\[',\n end: '\\\\][a-z]*'\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$',\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta.prompt',\n begin: '^(' + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + '|' + RVM_PROMPT + ')(?=[ ])',\n starts: {\n end: '$',\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n COMMENT_MODES.unshift(IRB_OBJECT);\n\n return {\n name: 'Ruby',\n aliases: [\n 'rb',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb'\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [ hljs.SHEBANG({ binary: \"ruby\" }) ]\n .concat(IRB_DEFAULT)\n .concat(COMMENT_MODES)\n .concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\nexport { ruby as default };\n","/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/\n\n/** @type LanguageFn */\n\nfunction rust(hljs) {\n const regex = hljs.regex;\n // ============================================\n // Added to support the r# keyword, which is a raw identifier in Rust.\n const RAW_IDENTIFIER = /(r#)?/;\n const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE);\n const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE);\n // ============================================\n const FUNCTION_INVOKE = {\n className: \"title.function.invoke\",\n relevance: 0,\n begin: regex.concat(\n /\\b/,\n /(?!let|for|while|if|else|match\\b)/,\n IDENT_RE,\n regex.lookahead(/\\s*\\(/))\n };\n const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n const KEYWORDS = [\n \"abstract\",\n \"as\",\n \"async\",\n \"await\",\n \"become\",\n \"box\",\n \"break\",\n \"const\",\n \"continue\",\n \"crate\",\n \"do\",\n \"dyn\",\n \"else\",\n \"enum\",\n \"extern\",\n \"false\",\n \"final\",\n \"fn\",\n \"for\",\n \"if\",\n \"impl\",\n \"in\",\n \"let\",\n \"loop\",\n \"macro\",\n \"match\",\n \"mod\",\n \"move\",\n \"mut\",\n \"override\",\n \"priv\",\n \"pub\",\n \"ref\",\n \"return\",\n \"self\",\n \"Self\",\n \"static\",\n \"struct\",\n \"super\",\n \"trait\",\n \"true\",\n \"try\",\n \"type\",\n \"typeof\",\n \"union\",\n \"unsafe\",\n \"unsized\",\n \"use\",\n \"virtual\",\n \"where\",\n \"while\",\n \"yield\"\n ];\n const LITERALS = [\n \"true\",\n \"false\",\n \"Some\",\n \"None\",\n \"Ok\",\n \"Err\"\n ];\n const BUILTINS = [\n // functions\n 'drop ',\n // traits\n \"Copy\",\n \"Send\",\n \"Sized\",\n \"Sync\",\n \"Drop\",\n \"Fn\",\n \"FnMut\",\n \"FnOnce\",\n \"ToOwned\",\n \"Clone\",\n \"Debug\",\n \"PartialEq\",\n \"PartialOrd\",\n \"Eq\",\n \"Ord\",\n \"AsRef\",\n \"AsMut\",\n \"Into\",\n \"From\",\n \"Default\",\n \"Iterator\",\n \"Extend\",\n \"IntoIterator\",\n \"DoubleEndedIterator\",\n \"ExactSizeIterator\",\n \"SliceConcatExt\",\n \"ToString\",\n // macros\n \"assert!\",\n \"assert_eq!\",\n \"bitflags!\",\n \"bytes!\",\n \"cfg!\",\n \"col!\",\n \"concat!\",\n \"concat_idents!\",\n \"debug_assert!\",\n \"debug_assert_eq!\",\n \"env!\",\n \"eprintln!\",\n \"panic!\",\n \"file!\",\n \"format!\",\n \"format_args!\",\n \"include_bytes!\",\n \"include_str!\",\n \"line!\",\n \"local_data_key!\",\n \"module_path!\",\n \"option_env!\",\n \"print!\",\n \"println!\",\n \"select!\",\n \"stringify!\",\n \"try!\",\n \"unimplemented!\",\n \"unreachable!\",\n \"vec!\",\n \"write!\",\n \"writeln!\",\n \"macro_rules!\",\n \"assert_ne!\",\n \"debug_assert_ne!\"\n ];\n const TYPES = [\n \"i8\",\n \"i16\",\n \"i32\",\n \"i64\",\n \"i128\",\n \"isize\",\n \"u8\",\n \"u16\",\n \"u32\",\n \"u64\",\n \"u128\",\n \"usize\",\n \"f32\",\n \"f64\",\n \"str\",\n \"char\",\n \"bool\",\n \"Box\",\n \"Option\",\n \"Result\",\n \"String\",\n \"Vec\"\n ];\n return {\n name: 'Rust',\n aliases: [ 'rs' ],\n keywords: {\n $pattern: hljs.IDENT_RE + '!?',\n type: TYPES,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTINS\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', { contains: [ 'self' ] }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: /b?\"/,\n illegal: null\n }),\n {\n className: 'symbol',\n // negative lookahead to avoid matching `'`\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*(?!')/\n },\n {\n scope: 'string',\n variants: [\n { begin: /b?r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n {\n begin: /b?'/,\n end: /'/,\n contains: [\n {\n scope: \"char.escape\",\n match: /\\\\('|\\w|x\\w{2}|u\\w{4}|U\\w{8})/\n }\n ]\n }\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUMBER_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'\n + NUMBER_SUFFIX }\n ],\n relevance: 0\n },\n {\n begin: [\n /fn/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n },\n {\n className: 'meta',\n begin: '#!?\\\\[',\n end: '\\\\]',\n contains: [\n {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n }\n ]\n },\n {\n begin: [\n /let/,\n /\\s+/,\n /(?:mut\\s+)?/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"keyword\",\n 4: \"variable\"\n }\n },\n // must come before impl/for rule later\n {\n begin: [\n /for/,\n /\\s+/,\n UNDERSCORE_IDENT_RE,\n /\\s+/,\n /in/\n ],\n className: {\n 1: \"keyword\",\n 3: \"variable\",\n 5: \"keyword\"\n }\n },\n {\n begin: [\n /type/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: [\n /(?:trait|enum|struct|union|impl|for)/,\n /\\s+/,\n UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {\n keyword: \"Self\",\n built_in: BUILTINS,\n type: TYPES\n }\n },\n {\n className: \"punctuation\",\n begin: '->'\n },\n FUNCTION_INVOKE\n ]\n };\n}\n\nexport { rust as default };\n","/*\nLanguage: Shell Session\nRequires: bash.js\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nCategory: common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction shell(hljs) {\n return {\n name: 'Shell Session',\n aliases: [\n 'console',\n 'shellsession'\n ],\n contains: [\n {\n className: 'meta.prompt',\n // We cannot add \\s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.\n // For instance, in the following example, it would match \"echo /path/to/home >\" as a prompt:\n // echo /path/to/home > t.exe\n begin: /^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#][ ]?/,\n starts: {\n end: /[^\\\\](?=\\s*$)/,\n subLanguage: 'bash'\n }\n }\n ]\n };\n}\n\nexport { shell as default };\n","/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */\n\n/*\n\nGoals:\n\nSQL is intended to highlight basic/common SQL keywords and expressions\n\n- If pretty much every single SQL server includes supports, then it's a canidate.\n- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL,\n PostgreSQL) although the list of data types is purposely a bit more expansive.\n- For more specific SQL grammars please see:\n - PostgreSQL and PL/pgSQL - core\n - T-SQL - https://github.com/highlightjs/highlightjs-tsql\n - sql_more (core)\n\n */\n\nfunction sql(hljs) {\n const regex = hljs.regex;\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const STRING = {\n scope: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ { match: /''/ } ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [ { match: /\"\"/ } ]\n };\n\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n\n const TYPES = [\n 'bigint',\n 'binary',\n 'blob',\n 'boolean',\n 'char',\n 'character',\n 'clob',\n 'date',\n 'dec',\n 'decfloat',\n 'decimal',\n 'float',\n 'int',\n 'integer',\n 'interval',\n 'nchar',\n 'nclob',\n 'national',\n 'numeric',\n 'real',\n 'row',\n 'smallint',\n 'time',\n 'timestamp',\n 'varchar',\n 'varying', // modifier (character varying)\n 'varbinary'\n ];\n\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update\",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\",\n ];\n\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\",\n ];\n\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n\n const FUNCTIONS = RESERVED_FUNCTIONS;\n\n const KEYWORDS = [\n ...RESERVED_WORDS,\n ...NON_RESERVED_WORDS\n ].filter((keyword) => {\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n\n const VARIABLE = {\n scope: \"variable\",\n match: /@[a-z0-9][a-z0-9_]*/,\n };\n\n const OPERATOR = {\n scope: \"operator\",\n match: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0,\n };\n\n const FUNCTION_CALL = {\n match: regex.concat(/\\b/, regex.either(...FUNCTIONS), /\\s*\\(/),\n relevance: 0,\n keywords: { built_in: FUNCTIONS }\n };\n\n // turns a multi-word keyword combo into a regex that doesn't\n // care about extra whitespace etc.\n // input: \"START QUERY\"\n // output: /\\bSTART\\s+QUERY\\b/\n function kws_to_regex(list) {\n return regex.concat(\n /\\b/,\n regex.either(...list.map((kw) => {\n return kw.replace(/\\s+/, \"\\\\s+\")\n })),\n /\\b/\n )\n }\n\n const MULTI_WORD_KEYWORDS = {\n scope: \"keyword\",\n match: kws_to_regex(COMBOS),\n relevance: 0,\n };\n\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, {\n exceptions, when\n } = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item) => {\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n\n return {\n name: 'SQL',\n case_insensitive: true,\n // does not include {} or HTML tags `</`\n illegal: /[{}]|<\\//,\n keywords: {\n $pattern: /\\b[\\w\\.]+/,\n keyword:\n reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n scope: \"type\",\n match: kws_to_regex(MULTI_WORD_TYPES)\n },\n MULTI_WORD_KEYWORDS,\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\nexport { sql as default };\n","/*\nLanguage: Visual Basic .NET\nDescription: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework.\nAuthors: Poren Chiang <ren.chiang@gmail.com>, Jan Pilzer\nWebsite: https://docs.microsoft.com/dotnet/visual-basic/getting-started\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction vbnet(hljs) {\n const regex = hljs.regex;\n /**\n * Character Literal\n * Either a single character (\"a\"C) or an escaped double quote (\"\"\"\"C).\n */\n const CHARACTER = {\n className: 'string',\n begin: /\"(\"\"|[^/n])\"C\\b/\n };\n\n const STRING = {\n className: 'string',\n begin: /\"/,\n end: /\"/,\n illegal: /\\n/,\n contains: [\n {\n // double quote escape\n begin: /\"\"/ }\n ]\n };\n\n /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */\n const MM_DD_YYYY = /\\d{1,2}\\/\\d{1,2}\\/\\d{4}/;\n const YYYY_MM_DD = /\\d{4}-\\d{1,2}-\\d{1,2}/;\n const TIME_12H = /(\\d|1[012])(:\\d+){0,2} *(AM|PM)/;\n const TIME_24H = /\\d{1,2}(:\\d{1,2}){1,2}/;\n const DATE = {\n className: 'literal',\n variants: [\n {\n // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date)\n begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / *#/) },\n {\n // #H:mm[:ss]# (24h Time)\n begin: regex.concat(/# */, TIME_24H, / *#/) },\n {\n // #h[:mm[:ss]] A# (12h Time)\n begin: regex.concat(/# */, TIME_12H, / *#/) },\n {\n // date plus time\n begin: regex.concat(\n /# */,\n regex.either(YYYY_MM_DD, MM_DD_YYYY),\n / +/,\n regex.either(TIME_12H, TIME_24H),\n / *#/\n ) }\n ]\n };\n\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // Float\n begin: /\\b\\d[\\d_]*((\\.[\\d_]+(E[+-]?[\\d_]+)?)|(E[+-]?[\\d_]+))[RFD@!#]?/ },\n {\n // Integer (base 10)\n begin: /\\b\\d[\\d_]*((U?[SIL])|[%&])?/ },\n {\n // Integer (base 16)\n begin: /&H[\\dA-F_]+((U?[SIL])|[%&])?/ },\n {\n // Integer (base 8)\n begin: /&O[0-7_]+((U?[SIL])|[%&])?/ },\n {\n // Integer (base 2)\n begin: /&B[01_]+((U?[SIL])|[%&])?/ }\n ]\n };\n\n const LABEL = {\n className: 'label',\n begin: /^\\w+:/\n };\n\n const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, { contains: [\n {\n className: 'doctag',\n begin: /<\\/?/,\n end: />/\n }\n ] });\n\n const COMMENT = hljs.COMMENT(null, /$/, { variants: [\n { begin: /'/ },\n {\n // TODO: Use multi-class for leading spaces\n begin: /([\\t ]|^)REM(?=\\s)/ }\n ] });\n\n const DIRECTIVES = {\n className: 'meta',\n // TODO: Use multi-class for indentation once available\n begin: /[\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\b/,\n end: /$/,\n keywords: { keyword:\n 'const disable else elseif enable end externalsource if region then' },\n contains: [ COMMENT ]\n };\n\n return {\n name: 'Visual Basic .NET',\n aliases: [ 'vb' ],\n case_insensitive: true,\n classNameAliases: { label: 'symbol' },\n keywords: {\n keyword:\n 'addhandler alias aggregate ansi as async assembly auto binary by byref byval ' /* a-b */\n + 'call case catch class compare const continue custom declare default delegate dim distinct do ' /* c-d */\n + 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' /* e-f */\n + 'get global goto group handles if implements imports in inherits interface into iterator ' /* g-i */\n + 'join key let lib loop me mid module mustinherit mustoverride mybase myclass ' /* j-m */\n + 'namespace narrowing new next notinheritable notoverridable ' /* n */\n + 'of off on operator option optional order overloads overridable overrides ' /* o */\n + 'paramarray partial preserve private property protected public ' /* p */\n + 'raiseevent readonly redim removehandler resume return ' /* r */\n + 'select set shadows shared skip static step stop structure strict sub synclock ' /* s */\n + 'take text then throw to try unicode until using when where while widening with withevents writeonly yield' /* t-y */,\n built_in:\n // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators\n 'addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor '\n // Type Conversion Functions https://docs.microsoft.com/dotnet/visual-basic/language-reference/functions/type-conversion-functions\n + 'cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort',\n type:\n // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types\n 'boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort',\n literal: 'true false nothing'\n },\n illegal:\n '//|\\\\{|\\\\}|endif|gosub|variant|wend|^\\\\$ ' /* reserved deprecated keywords */,\n contains: [\n CHARACTER,\n STRING,\n DATE,\n NUMBER,\n LABEL,\n DOC_COMMENT,\n COMMENT,\n DIRECTIVES\n ]\n };\n}\n\nexport { vbnet as default };\n","/*\nLanguage: WebAssembly\nWebsite: https://webassembly.org\nDescription: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.\nCategory: web, common\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction wasm(hljs) {\n hljs.regex;\n const BLOCK_COMMENT = hljs.COMMENT(/\\(;/, /;\\)/);\n BLOCK_COMMENT.contains.push(\"self\");\n const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);\n\n const KWS = [\n \"anyfunc\",\n \"block\",\n \"br\",\n \"br_if\",\n \"br_table\",\n \"call\",\n \"call_indirect\",\n \"data\",\n \"drop\",\n \"elem\",\n \"else\",\n \"end\",\n \"export\",\n \"func\",\n \"global.get\",\n \"global.set\",\n \"local.get\",\n \"local.set\",\n \"local.tee\",\n \"get_global\",\n \"get_local\",\n \"global\",\n \"if\",\n \"import\",\n \"local\",\n \"loop\",\n \"memory\",\n \"memory.grow\",\n \"memory.size\",\n \"module\",\n \"mut\",\n \"nop\",\n \"offset\",\n \"param\",\n \"result\",\n \"return\",\n \"select\",\n \"set_global\",\n \"set_local\",\n \"start\",\n \"table\",\n \"tee_local\",\n \"then\",\n \"type\",\n \"unreachable\"\n ];\n\n const FUNCTION_REFERENCE = {\n begin: [\n /(?:func|call|call_indirect)/,\n /\\s+/,\n /\\$[^\\s)]+/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n };\n\n const ARGUMENT = {\n className: \"variable\",\n begin: /\\$[\\w_]+/\n };\n\n const PARENS = {\n match: /(\\((?!;)|\\))+/,\n className: \"punctuation\",\n relevance: 0\n };\n\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n // borrowed from Prism, TODO: split out into variants\n match: /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/\n };\n\n const TYPE = {\n // look-ahead prevents us from gobbling up opcodes\n match: /(i32|i64|f32|f64)(?!\\.)/,\n className: \"type\"\n };\n\n const MATH_OPERATIONS = {\n className: \"keyword\",\n // borrowed from Prism, TODO: split out into variants\n match: /\\b(f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))\\b/\n };\n\n const OFFSET_ALIGN = {\n match: [\n /(?:offset|align)/,\n /\\s*/,\n /=/\n ],\n className: {\n 1: \"keyword\",\n 3: \"operator\"\n }\n };\n\n return {\n name: 'WebAssembly',\n keywords: {\n $pattern: /[\\w.]+/,\n keyword: KWS\n },\n contains: [\n LINE_COMMENT,\n BLOCK_COMMENT,\n OFFSET_ALIGN,\n ARGUMENT,\n PARENS,\n FUNCTION_REFERENCE,\n hljs.QUOTE_STRING_MODE,\n TYPE,\n MATH_OPERATIONS,\n NUMBER\n ]\n };\n}\n\nexport { wasm as default };\n","/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: 'symbol',\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: 'keyword',\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, { className: 'string' });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [ XML_ENTITIES ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [ XML_ENTITIES ]\n },\n { begin: /[^\\s\"'=<>`]+/ }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: 'HTML, XML',\n aliases: [\n 'html',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'xsl',\n 'plist',\n 'wsf',\n 'svg'\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: 'meta',\n begin: /<![a-z]/,\n end: />/,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(\n /<!--/,\n /-->/,\n { relevance: 10 }\n ),\n {\n begin: /<!\\[CDATA\\[/,\n end: /\\]\\]>/,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: 'meta',\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/,\n }\n ]\n\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending bracket.\n */\n begin: /<style(?=\\s|>)/,\n end: />/,\n keywords: { name: 'style' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n 'css',\n 'xml'\n ]\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: /<script(?=\\s|>)/,\n end: />/,\n keywords: { name: 'script' },\n contains: [ TAG_INTERNALS ],\n starts: {\n end: /<\\/script>/,\n returnEnd: true,\n subLanguage: [\n 'javascript',\n 'handlebars',\n 'xml'\n ]\n }\n },\n // we need this for now for jSX\n {\n className: 'tag',\n begin: /<>|<\\/>/\n },\n // open tag\n {\n className: 'tag',\n begin: regex.concat(\n /</,\n regex.lookahead(regex.concat(\n TAG_NAME_RE,\n // <tag/>\n // <tag>\n // <tag ...\n regex.either(/\\/>/, />/, /\\s/)\n ))\n ),\n end: /\\/?>/,\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0,\n starts: TAG_INTERNALS\n }\n ]\n },\n // close tag\n {\n className: 'tag',\n begin: regex.concat(\n /<\\//,\n regex.lookahead(regex.concat(\n TAG_NAME_RE, />/\n ))\n ),\n contains: [\n {\n className: 'name',\n begin: TAG_NAME_RE,\n relevance: 0\n },\n {\n begin: />/,\n relevance: 0,\n endsParent: true\n }\n ]\n }\n ]\n };\n}\n\nexport { xml as default };\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n const LITERALS = 'true false yes no null';\n\n // YAML spec allows non-reserved URI characters in tags.\n const URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n const KEY = {\n className: 'attr',\n variants: [\n // added brackets support and special char support\n { begin: /[\\w*@][\\w*@ :()\\./-]*:(?=[ \\t]|$)/ },\n { // double quoted keys - with brackets and special char support\n begin: /\"[\\w*@][\\w*@ :()\\./-]*\":(?=[ \\t]|$)/ },\n { // single quoted keys - with brackets and special char support\n begin: /'[\\w*@][\\w*@ :()\\./-]*':(?=[ \\t]|$)/ },\n ]\n };\n \n const TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { // jinja templates Ansible\n begin: /\\{\\{/,\n end: /\\}\\}/\n },\n { // Ruby i18n\n begin: /%\\{/,\n end: /\\}/\n }\n ]\n };\n\n const SINGLE_QUOTE_STRING = {\n className: 'string',\n relevance: 0,\n begin: /'/,\n end: /'/,\n contains: [\n {\n match: /''/,\n scope: 'char.escape',\n relevance: 0\n }\n ]\n };\n\n const STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /\\S+/ }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n const CONTAINER_STRING = hljs.inherit(STRING, { variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [\n {\n begin: /''/,\n relevance: 0\n }\n ]\n },\n {\n begin: /\"/,\n end: /\"/\n },\n { begin: /[^\\s,{}[\\]]+/ }\n ] });\n\n const DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n const TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n const FRACTION_RE = '(\\\\.[0-9]*)?';\n const ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n const TIMESTAMP = {\n className: 'number',\n begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n };\n\n const VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n const OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n const ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [ VALUE_CONTAINER ],\n illegal: '\\\\n',\n relevance: 0\n };\n\n const MODES = [\n KEY,\n {\n className: 'meta',\n begin: '^---\\\\s*$',\n relevance: 10\n },\n { // multi line string\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: 'string',\n begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // named tags\n className: 'type',\n begin: '!\\\\w+!' + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n { // verbatim tags\n className: 'type',\n begin: '!<' + URI_CHARACTERS + \">\"\n },\n { // primary tags\n className: 'type',\n begin: '!' + URI_CHARACTERS\n },\n { // secondary tags\n className: 'type',\n begin: '!!' + URI_CHARACTERS\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: '-(?=[ ]|$)',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: { literal: LITERALS }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE + '\\\\b',\n relevance: 0\n },\n OBJECT,\n ARRAY,\n SINGLE_QUOTE_STRING,\n STRING\n ];\n\n const VALUE_MODES = [ ...MODES ];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n\n return {\n name: 'YAML',\n case_insensitive: true,\n aliases: [ 'yml' ],\n contains: MODES\n };\n}\n\nexport { yaml as default };\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/core.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","/**\n * @import {ElementContent, Element, RootData, Root} from 'hast'\n * @import {Emitter, HLJSOptions as HljsOptions, HighlightResult, LanguageFn} from 'highlight.js'\n */\n\n/**\n * @typedef {Object} ExtraOptions\n * Extra fields.\n * @property {ReadonlyArray<string> | null | undefined} [subset]\n * List of allowed languages (default: all registered languages).\n *\n * @typedef Options\n * Configuration for `highlight`.\n * @property {string | null | undefined} [prefix='hljs-']\n * Class prefix (default: `'hljs-'`).\n *\n * @typedef {Options & ExtraOptions} AutoOptions\n * Configuration for `highlightAuto`.\n */\n\nimport {ok as assert} from 'devlop'\nimport HighlightJs from 'highlight.js/lib/core'\n\n/** @type {AutoOptions} */\nconst emptyOptions = {}\n\nconst defaultPrefix = 'hljs-'\n\n/**\n * Create a `lowlight` instance.\n *\n * @param {Readonly<Record<string, LanguageFn>> | null | undefined} [grammars]\n * Grammars to add (optional).\n * @returns\n * Lowlight.\n */\nexport function createLowlight(grammars) {\n const high = HighlightJs.newInstance()\n\n if (grammars) {\n register(grammars)\n }\n\n return {\n highlight,\n highlightAuto,\n listLanguages,\n register,\n registerAlias,\n registered\n }\n\n /**\n * Highlight `value` (code) as `language` (name).\n *\n * @example\n * ```js\n * import {common, createLowlight} from 'lowlight'\n *\n * const lowlight = createLowlight(common)\n *\n * console.log(lowlight.highlight('css', 'em { color: red }'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'css', relevance: 3}}\n * ```\n *\n * @param {string} language\n * Programming language name.\n * @param {string} value\n * Code to highlight.\n * @param {Readonly<Options> | null | undefined} [options={}]\n * Configuration (optional).\n * @returns {Root}\n * Tree; with the following `data` fields: `language` (`string`), detected\n * programming language name; `relevance` (`number`), how sure lowlight is\n * that the given code is in the language.\n */\n function highlight(language, value, options) {\n assert(typeof language === 'string', 'expected `string` as `name`')\n assert(typeof value === 'string', 'expected `string` as `value`')\n const settings = options || emptyOptions\n const prefix =\n typeof settings.prefix === 'string' ? settings.prefix : defaultPrefix\n\n if (!high.getLanguage(language)) {\n throw new Error('Unknown language: `' + language + '` is not registered')\n }\n\n // See: <https://github.com/highlightjs/highlight.js/issues/3621#issuecomment-1528841888>\n high.configure({__emitter: HastEmitter, classPrefix: prefix})\n\n const result = /** @type {HighlightResult & {_emitter: HastEmitter}} */ (\n high.highlight(value, {ignoreIllegals: true, language})\n )\n\n // `highlight.js` seems to use this (currently) for broken grammars, so let’s\n // keep it in there just to be sure.\n /* c8 ignore next 5 */\n if (result.errorRaised) {\n throw new Error('Could not highlight with `Highlight.js`', {\n cause: result.errorRaised\n })\n }\n\n const root = result._emitter.root\n\n // Cast because it is always defined.\n const data = /** @type {RootData} */ (root.data)\n\n data.language = result.language\n data.relevance = result.relevance\n\n return root\n }\n\n /**\n * Highlight `value` (code) and guess its programming language.\n *\n * @example\n * ```js\n * import {common, createLowlight} from 'lowlight'\n *\n * const lowlight = createLowlight(common)\n *\n * console.log(lowlight.highlightAuto('\"hello, \" + name + \"!\"'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'arduino', relevance: 2}}\n * ```\n *\n * @param {string} value\n * Code to highlight.\n * @param {Readonly<AutoOptions> | null | undefined} [options={}]\n * Configuration (optional).\n * @returns {Root}\n * Tree; with the following `data` fields: `language` (`string`), detected\n * programming language name; `relevance` (`number`), how sure lowlight is\n * that the given code is in the language.\n */\n function highlightAuto(value, options) {\n assert(typeof value === 'string', 'expected `string` as `value`')\n const settings = options || emptyOptions\n const subset = settings.subset || listLanguages()\n\n let index = -1\n let relevance = 0\n /** @type {Root | undefined} */\n let result\n\n while (++index < subset.length) {\n const name = subset[index]\n\n if (!high.getLanguage(name)) continue\n\n const current = highlight(name, value, options)\n\n if (\n current.data &&\n current.data.relevance !== undefined &&\n current.data.relevance > relevance\n ) {\n relevance = current.data.relevance\n result = current\n }\n }\n\n return (\n result || {\n type: 'root',\n children: [],\n data: {language: undefined, relevance}\n }\n )\n }\n\n /**\n * List registered languages.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import markdown from 'highlight.js/lib/languages/markdown'\n *\n * const lowlight = createLowlight()\n *\n * console.log(lowlight.listLanguages()) // => []\n *\n * lowlight.register({markdown})\n *\n * console.log(lowlight.listLanguages()) // => ['markdown']\n * ```\n *\n * @returns {Array<string>}\n * Names of registered language.\n */\n function listLanguages() {\n return high.listLanguages()\n }\n\n /**\n * Register languages.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import xml from 'highlight.js/lib/languages/xml'\n *\n * const lowlight = createLowlight()\n *\n * lowlight.register({xml})\n *\n * // Note: `html` is an alias for `xml`.\n * console.log(lowlight.highlight('html', '<em>Emphasis</em>'))\n * ```\n *\n * Yields:\n *\n * ```js\n * {type: 'root', children: [Array], data: {language: 'html', relevance: 2}}\n * ```\n *\n * @overload\n * @param {Readonly<Record<string, LanguageFn>>} grammars\n * @returns {undefined}\n *\n * @overload\n * @param {string} name\n * @param {LanguageFn} grammar\n * @returns {undefined}\n *\n * @param {Readonly<Record<string, LanguageFn>> | string} grammarsOrName\n * Grammars or programming language name.\n * @param {LanguageFn | undefined} [grammar]\n * Grammar, if with name.\n * @returns {undefined}\n * Nothing.\n */\n function register(grammarsOrName, grammar) {\n if (typeof grammarsOrName === 'string') {\n assert(grammar !== undefined, 'expected `grammar`')\n high.registerLanguage(grammarsOrName, grammar)\n } else {\n /** @type {string} */\n let name\n\n for (name in grammarsOrName) {\n if (Object.hasOwn(grammarsOrName, name)) {\n high.registerLanguage(name, grammarsOrName[name])\n }\n }\n }\n }\n\n /**\n * Register aliases.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import markdown from 'highlight.js/lib/languages/markdown'\n *\n * const lowlight = createLowlight()\n *\n * lowlight.register({markdown})\n *\n * // lowlight.highlight('mdown', '<em>Emphasis</em>')\n * // ^ would throw: Error: Unknown language: `mdown` is not registered\n *\n * lowlight.registerAlias({markdown: ['mdown', 'mkdn', 'mdwn', 'ron']})\n * lowlight.highlight('mdown', '<em>Emphasis</em>')\n * // ^ Works!\n * ```\n *\n * @overload\n * @param {Readonly<Record<string, ReadonlyArray<string> | string>>} aliases\n * @returns {undefined}\n *\n * @overload\n * @param {string} language\n * @param {ReadonlyArray<string> | string} alias\n * @returns {undefined}\n *\n * @param {Readonly<Record<string, ReadonlyArray<string> | string>> | string} aliasesOrName\n * Map of programming language names to one or more aliases, or programming\n * language name.\n * @param {ReadonlyArray<string> | string | undefined} [alias]\n * One or more aliases for the programming language, if with `name`.\n * @returns {undefined}\n * Nothing.\n */\n function registerAlias(aliasesOrName, alias) {\n if (typeof aliasesOrName === 'string') {\n assert(alias !== undefined)\n high.registerAliases(\n // Note: copy needed because hljs doesn’t accept readonly arrays yet.\n typeof alias === 'string' ? alias : [...alias],\n {languageName: aliasesOrName}\n )\n } else {\n /** @type {string} */\n let key\n\n for (key in aliasesOrName) {\n if (Object.hasOwn(aliasesOrName, key)) {\n const aliases = aliasesOrName[key]\n high.registerAliases(\n // Note: copy needed because hljs doesn’t accept readonly arrays yet.\n typeof aliases === 'string' ? aliases : [...aliases],\n {languageName: key}\n )\n }\n }\n }\n }\n\n /**\n * Check whether an alias or name is registered.\n *\n * @example\n * ```js\n * import {createLowlight} from 'lowlight'\n * import javascript from 'highlight.js/lib/languages/javascript'\n *\n * const lowlight = createLowlight({javascript})\n *\n * console.log(lowlight.registered('funkyscript')) // => `false`\n *\n * lowlight.registerAlias({javascript: 'funkyscript'})\n * console.log(lowlight.registered('funkyscript')) // => `true`\n * ```\n *\n * @param {string} aliasOrName\n * Name of a language or alias for one.\n * @returns {boolean}\n * Whether `aliasOrName` is registered.\n */\n function registered(aliasOrName) {\n return Boolean(high.getLanguage(aliasOrName))\n }\n}\n\n/** @type {Emitter} */\nclass HastEmitter {\n /**\n * @param {Readonly<HljsOptions>} options\n * Configuration.\n * @returns\n * Instance.\n */\n constructor(options) {\n /** @type {HljsOptions} */\n this.options = options\n /** @type {Root} */\n this.root = {\n type: 'root',\n children: [],\n data: {language: undefined, relevance: 0}\n }\n /** @type {[Root, ...Array<Element>]} */\n this.stack = [this.root]\n }\n\n /**\n * @param {string} value\n * Text to add.\n * @returns {undefined}\n * Nothing.\n *\n */\n addText(value) {\n if (value === '') return\n\n const current = this.stack[this.stack.length - 1]\n const tail = current.children[current.children.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += value\n } else {\n current.children.push({type: 'text', value})\n }\n }\n\n /**\n *\n * @param {unknown} rawName\n * Name to add.\n * @returns {undefined}\n * Nothing.\n */\n startScope(rawName) {\n this.openNode(String(rawName))\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n endScope() {\n this.closeNode()\n }\n\n /**\n * @param {HastEmitter} other\n * Other emitter.\n * @param {string} name\n * Name of the sublanguage.\n * @returns {undefined}\n * Nothing.\n */\n __addSublanguage(other, name) {\n const current = this.stack[this.stack.length - 1]\n // Assume only element content.\n const results = /** @type {Array<ElementContent>} */ (other.root.children)\n\n if (name) {\n current.children.push({\n type: 'element',\n tagName: 'span',\n properties: {className: [name]},\n children: results\n })\n } else {\n current.children.push(...results)\n }\n }\n\n /**\n * @param {string} name\n * Name to add.\n * @returns {undefined}\n * Nothing.\n */\n openNode(name) {\n const self = this\n // First “class” gets the prefix. Rest gets a repeated underscore suffix.\n // See: <https://github.com/highlightjs/highlight.js/commit/51806aa>\n // See: <https://github.com/wooorm/lowlight/issues/43>\n const className = name.split('.').map(function (d, i) {\n return i ? d + '_'.repeat(i) : self.options.classPrefix + d\n })\n const current = this.stack[this.stack.length - 1]\n /** @type {Element} */\n const child = {\n type: 'element',\n tagName: 'span',\n properties: {className},\n children: []\n }\n\n current.children.push(child)\n this.stack.push(child)\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n closeNode() {\n this.stack.pop()\n }\n\n /**\n * @returns {undefined}\n * Nothing.\n */\n finalize() {}\n\n /**\n * @returns {string}\n * Nothing.\n */\n toHTML() {\n return ''\n }\n}\n","/**\n * @import {ElementContent, Element, Root} from 'hast'\n * @import {LanguageFn} from 'lowlight'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {Readonly<Record<string, ReadonlyArray<string> | string>> | null | undefined} [aliases={}]\n * Register more aliases (optional);\n * passed to `lowlight.registerAlias`.\n * @property {boolean | null | undefined} [detect=false]\n * Highlight code without language classes by guessing its programming\n * language (default: `false`).\n * @property {Readonly<Record<string, LanguageFn>> | null | undefined} [languages]\n * Register languages (default: `common`);\n * passed to `lowlight.register`.\n * @property {ReadonlyArray<string> | null | undefined} [plainText=[]]\n * List of language names to not highlight (optional);\n * note you can also add `no-highlight` classes.\n * @property {string | null | undefined} [prefix='hljs-']\n * Class prefix (default: `'hljs-'`).\n * @property {ReadonlyArray<string> | null | undefined} [subset]\n * Names of languages to check when detecting (default: all registered\n * languages).\n */\n\nimport {toText} from 'hast-util-to-text'\nimport {common, createLowlight} from 'lowlight'\nimport {visit} from 'unist-util-visit'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Apply syntax highlighting.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function rehypeHighlight(options) {\n const settings = options || emptyOptions\n const aliases = settings.aliases\n const detect = settings.detect || false\n const languages = settings.languages || common\n const plainText = settings.plainText\n const prefix = settings.prefix\n const subset = settings.subset\n let name = 'hljs'\n\n const lowlight = createLowlight(languages)\n\n if (aliases) {\n lowlight.registerAlias(aliases)\n }\n\n if (prefix) {\n const pos = prefix.indexOf('-')\n name = pos === -1 ? prefix : prefix.slice(0, pos)\n }\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree, file) {\n visit(tree, 'element', function (node, _, parent) {\n if (\n node.tagName !== 'code' ||\n !parent ||\n parent.type !== 'element' ||\n parent.tagName !== 'pre'\n ) {\n return\n }\n\n const lang = language(node)\n\n if (\n lang === false ||\n (!lang && !detect) ||\n (lang && plainText && plainText.includes(lang))\n ) {\n return\n }\n\n if (!Array.isArray(node.properties.className)) {\n node.properties.className = []\n }\n\n if (!node.properties.className.includes(name)) {\n node.properties.className.unshift(name)\n }\n\n const text = toText(node, {whitespace: 'pre'})\n /** @type {Root} */\n let result\n\n try {\n result = lang\n ? lowlight.highlight(lang, text, {prefix})\n : lowlight.highlightAuto(text, {prefix, subset})\n } catch (error) {\n const cause = /** @type {Error} */ (error)\n\n if (lang && /Unknown language/.test(cause.message)) {\n file.message(\n 'Cannot highlight as `' + lang + '`, it’s not registered',\n {\n ancestors: [parent, node],\n cause,\n place: node.position,\n ruleId: 'missing-language',\n source: 'rehype-highlight'\n }\n )\n\n /* c8 ignore next 5 -- throw arbitrary hljs errors */\n return\n }\n\n throw cause\n }\n\n if (!lang && result.data && result.data.language) {\n node.properties.className.push('language-' + result.data.language)\n }\n\n if (result.children.length > 0) {\n node.children = /** @type {Array<ElementContent>} */ (result.children)\n }\n })\n }\n}\n\n/**\n * Get the programming language of `node`.\n *\n * @param {Element} node\n * Node.\n * @returns {false | string | undefined}\n * Language or `undefined`, or `false` when an explikcit `no-highlight` class\n * is used.\n */\nfunction language(node) {\n const list = node.properties.className\n let index = -1\n\n if (!Array.isArray(list)) {\n return\n }\n\n /** @type {string | undefined} */\n let name\n\n while (++index < list.length) {\n const value = String(list[index])\n\n if (value === 'no-highlight' || value === 'nohighlight') {\n return false\n }\n\n if (!name && value.slice(0, 5) === 'lang-') {\n name = value.slice(5)\n }\n\n if (!name && value.slice(0, 9) === 'language-') {\n name = value.slice(9)\n }\n }\n\n return name\n}\n"],"names":["deepFreeze","obj","Map","clear","delete","set","Error","Set","add","Object","freeze","getOwnPropertyNames","forEach","name","prop","type","isFrozen","Response","constructor","mode","undefined","data","this","isMatchIgnored","ignoreMatch","escapeHTML","value","replace","inherit$1","original","objects","result","create","key","emitsWrappingTags","node","scope","HTMLRenderer","parseTree","options","buffer","classPrefix","walk","addText","text","openNode","className","prefix","startsWith","includes","pieces","split","shift","map","x","i","repeat","join","scopeToCSSClass","span","closeNode","newNode","opts","children","assign","TokenTree","rootNode","stack","top","length","root","push","pop","closeAllNodes","toJSON","JSON","stringify","builder","_walk","child","_collapse","every","el","TokenTreeEmitter","super","startScope","endScope","__addSublanguage","emitter","toHTML","finalize","source","re","lookahead","concat","anyNumberOfTimes","optional","args","either","splice","stripOptionsFromArgs","capture","countMatchGroups","RegExp","toString","exec","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","regex","offset","out","match","substring","index","String","Number","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","end","illegal","contains","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","END_SAME_AS_BEGIN","m","resp","_beginMatch","MATCH_NOTHING_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","skipIfHasPrecedingDot","response","input","scopeClassName","_parent","beginKeywords","parent","__beforeBegin","keywords","compileIllegal","Array","isArray","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","keys","endsParent","COMMON_KEYWORDS","DEFAULT_KEYWORD_SCOPE","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","toLowerCase","keyword","pair","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","error","message","console","warn","log","deprecated","version","MultiClassError","remapScopeNames","regexes","scopeNames","emit","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","skip","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","global","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","position","addRule","compile","terminators","matcherRe","lastIndex","s","findIndex","matchData","ResumableMultiRegex","rules","multiRegexes","count","regexIndex","getMatcher","matcher","slice","resumingScanAtSamePosition","considerAll","m2","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","c","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","term","rule","buildModeRegex","HTMLInjectionError","reason","html","escape","inherit","NO_MATCH","Symbol","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","test","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","code","context","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","word","matchText","kind","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","highlightAuto","_emitter","processSubLanguage","emitMultiClass","max","klass","startNewMode","endOfMode","matchPlusRemainder","matched","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","err","badRule","newMode","beforeCallbacks","cb","doBeginMatch","processed","iterations","getLanguage","md","list","current","unshift","item","processContinuations","__emitTokens","processedCount","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","filter","autoDetection","sorted","sort","a","b","supersetOf","best","secondBest","highlightElement","element","block","classes","parentNode","find","_class","blockLanguage","dataset","highlighted","innerHTML","textContent","currentLang","resultLang","classList","updateClassName","wantsHighlight","highlightAll","document","readyState","window","addEventListener","querySelectorAll","registerAliases","aliasList","alias","lang","event","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","bind","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","indexOf","debugMode","safeMode","versionString","newInstance","module","exports","HighlightJS","default","findAfter","is","POSITIVE_INFINITY","searchLineFeeds","searchTabOrSpaces","br","cell","tagName","p","row","notRendered","Boolean","properties","hidden","open","blockOrCaption","renderedTextCollection","info","whitespace","inferWhitespace","suffix","items","breakBefore","breakAfter","collectElement","collectText","collectPreText","lines","start","trimAndCollapseSpacesAndTabs","charCodeAt","wrap","noWrap","TAGS","MEDIA_FEATURES","reverse","PSEUDO_CLASSES","PSEUDO_ELEMENTS","ATTRIBUTES","decimalDigits","frac","hexDigits","NUMERIC","recurRegex","substitution","depth","_","KEYWORDS","LITERALS","TYPES","ERROR_TYPES","BUILT_IN_GLOBALS","BUILT_IN_VARIABLES","BUILT_INS","PSEUDO_SELECTORS","keywordWrapper","dotKeywords","optionalDotKeywords","keywordTypes","literals","precedencegroupKeywords","numberSignKeywords","builtIns","operatorHead","operatorCharacter","operator","identifierHead","identifierCharacter","identifier","typeIdentifier","keywordAttributes","availabilityKeywords","grammars","arduino","ARDUINO_KW","built_in","_hints","literal","ARDUINO","DECLTYPE_AUTO_RE","NAMESPACE_RE","FUNCTION_TYPE_RE","CPP_PRIMITIVE_TYPES","STRINGS","NUMBERS","PREPROCESSOR","FUNCTION_TITLE","CPP_KEYWORDS","_type_hints","FUNCTION_DISPATCH","_hint","EXPRESSION_CONTAINS","EXPRESSION_CONTEXT","FUNCTION_DECLARATION","cPlusPlus","kws","bash","VAR","BRACED_VAR","SUBST","HERE_DOC","QUOTE_STRING","ARITHMETIC","KNOWN_SHEBANG","FUNCTION","preprocessor","strings","cpp","csharp","VERBATIM_STRING","VERBATIM_STRING_NO_LF","SUBST_NO_LF","INTERPOLATED_STRING","INTERPOLATED_VERBATIM_STRING","INTERPOLATED_VERBATIM_STRING_NO_LF","STRING","GENERIC_MODIFIER","TYPE_IDENT_RE","AT_IDENTIFIER","css","modes","IMPORTANT","BLOCK_COMMENT","HEXCOLOR","ATTRIBUTE_SELECTOR_MODE","CSS_NUMBER_MODE","CSS_VARIABLE","keyframePosition","attribute","diff","go","graphql","ini","COMMENTS","VARIABLES","ARRAY","ANY_KEY","java","JAVA_IDENT_RE","GENERIC_IDENT_RE","ANNOTATION","PARAMS","javascript","IDENT_RE$1","FRAGMENT","XML_TAG","isTrulyOpeningTag","afterMatchIndex","nextChar","after","tag","hasClosingTag","afterMatch","KEYWORDS$1","decimalInteger","NUMBER","HTML_TEMPLATE","CSS_TEMPLATE","GRAPHQL_TEMPLATE","TEMPLATE_STRING","SUBST_INTERNALS","SUBST_AND_COMMENTS","PARAMS_CONTAINS","CLASS_OR_EXTENDS","CLASS_REFERENCE","FUNCTION_DEFINITION","label","FUNCTION_CALL","PROPERTY_ACCESS","GETTER_OR_SETTER","FUNC_LEAD_IN_RE","FUNCTION_VARIABLE","json","LITERALS_MODE","kotlin","LABEL","VARIABLE","ANNOTATION_USE_SITE","KOTLIN_NUMBER_MODE","KOTLIN_NESTED_COMMENT","KOTLIN_PAREN_TYPE","KOTLIN_PAREN_TYPE2","less","PSEUDO_SELECTORS$1","INTERP_IDENT_RE","RULES","VALUE_MODES","STRING_MODE","IDENT_MODE","AT_KEYWORDS","PARENS_MODE","VALUE_WITH_RULESETS","MIXIN_GUARD_MODE","RULE_MODE","AT_RULE_MODE","VAR_RULE_MODE","SELECTOR_MODE","PSEUDO_SELECTOR_MODE","lua","OPENING_LONG_BRACKET","CLOSING_LONG_BRACKET","LONG_BRACKETS","makefile","FUNC","ASSIGNMENT","TARGET","markdown","INLINE_HTML","LINK","BOLD","ITALIC","BOLD_WITHOUT_ITALIC","ITALIC_WITHOUT_BOLD","CONTAINABLE","objectivec","IDENTIFIER_RE","CLASS_KEYWORDS","perl","REGEX_MODIFIERS","PERL_KEYWORDS","METHOD","ATTR","STRING_CONTAINS","REGEX_DELIMS","PAIRED_DOUBLE_RE","close","middle","PAIRED_RE","PERL_DEFAULT_CONTAINS","php","NOT_PERL_ETC","PASCAL_CASE_CLASS_NAME_RE","UPCASE_NAME_RE","SINGLE_QUOTED","WHITESPACE","KWS","toUpperCase","dualCase","normalizeKeywords","CONSTRUCTOR_CALL","CONSTANT_REFERENCE","LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON","NAMED_ARGUMENT","PARAMS_MODE","FUNCTION_INVOKE","ATTRIBUTE_CONTAINS","python","RESERVED_WORDS","PROMPT","LITERAL_BRACKET","digitpart","pointfloat","COMMENT_TYPE","r","NUMBER_TYPES_RE","OPERATORS_RE","PUNCTUATION_RE","ruby","RUBY_METHOD_RE","CLASS_NAME_RE","CLASS_NAME_WITH_NAMESPACE_RE","RUBY_KEYWORDS","YARDOCTAG","IRB_OBJECT","COMMENT_MODES","digits","RUBY_DEFAULT_CONTAINS","IRB_DEFAULT","rust","RAW_IDENTIFIER","NUMBER_SUFFIX","BUILTINS","scss","PSEUDO_ELEMENTS$1","PSEUDO_CLASSES$1","shell","sql","COMMENT_MODE","RESERVED_FUNCTIONS","FUNCTIONS","kws_to_regex","kw","MULTI_WORD_KEYWORDS","exceptions","when","qualifyFn","reduceRelevancy","swift","DOT_KEYWORD","KEYWORD_GUARD","PLAIN_KEYWORDS","KEYWORD","KEYWORD_MODES","OPERATOR_GUARD","OPERATORS","ESCAPED_CHARACTER","rawDelimiter","ESCAPED_NEWLINE","INTERPOLATION","MULTILINE_STRING","SINGLE_LINE_STRING","REGEXP_CONTENTS","BARE_REGEXP_LITERAL","EXTENDED_REGEXP_LITERAL","REGEXP","QUOTED_IDENTIFIER","IDENTIFIERS","TYPE","GENERIC_ARGUMENTS","TUPLE","GENERIC_PARAMETERS","FUNCTION_PARAMETERS","FUNCTION_OR_MACRO","INIT_SUBSCRIPT","OPERATOR_DECLARATION","PRECEDENCEGROUP","TYPE_DECLARATION","interpolation","submodes","typescript","tsLanguage","NAMESPACE","INTERFACE","DECORATOR","swapMode","replacement","indx","ATTRIBUTE_HIGHLIGHT","OPTIONAL_KEY_OR_ARGUMENT","vbnet","MM_DD_YYYY","YYYY_MM_DD","TIME_12H","TIME_24H","DATE","DOC_COMMENT","wasm","xml","TAG_NAME_RE","XML_ENTITIES","XML_META_KEYWORDS","XML_META_PAR_KEYWORDS","APOS_META_STRING_MODE","QUOTE_META_STRING_MODE","TAG_INTERNALS","yaml","URI_CHARACTERS","CONTAINER_STRING","TIMESTAMP","VALUE_CONTAINER","OBJECT","emptyOptions","defaultPrefix","HastEmitter","tail","rawName","other","self","d","rehypeHighlight","settings","detect","plainText","subset","lowlight","high","register","registerAlias","aliasesOrName","hasOwn","registered","aliasOrName","cause","grammarsOrName","grammar","createLowlight","pos","tree","file","options_","toText","ancestors","place","ruleId"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 88d7b536..a324a62f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,8 +14,7 @@ "@nextcloud/l10n": "^3.1.0", "@nextcloud/paths": "^2.1.0", "@nextcloud/router": "^3.0.1", - "@nextcloud/vue": "^8.11.3", - "@nextcloud/vue-dashboard": "^2.0.1", + "@nextcloud/vue": "^8.22.0", "lodash": "^4.17.21", "vue": "^2.7.16", "vue-material-design-icons": "^5.3.0", @@ -48,6 +47,8 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -56,47 +57,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/cli": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.9.tgz", - "integrity": "sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "commander": "^4.0.1", - "convert-source-map": "^2.0.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" - }, - "engines": { - "node": ">=6.9.0" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/cli/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -110,6 +77,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -118,6 +87,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.6", @@ -147,6 +118,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -194,6 +167,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.6", "@jridgewell/gen-mapping": "^0.3.5", @@ -208,6 +183,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -219,6 +196,8 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -230,6 +209,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.24.6", "@babel/helper-validator-option": "^7.24.6", @@ -245,6 +226,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -253,6 +236,8 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -275,6 +260,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -283,6 +270,8 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -299,6 +288,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -307,6 +298,8 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -322,6 +315,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -330,6 +325,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", + "dev": true, + "peer": true, "dependencies": { "@babel/template": "^7.24.6", "@babel/types": "^7.24.6" @@ -342,6 +339,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.6" }, @@ -353,6 +352,8 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.23.0" }, @@ -364,6 +365,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.6" }, @@ -375,6 +378,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.24.6", "@babel/helper-module-imports": "^7.24.6", @@ -393,6 +398,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -404,6 +411,8 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -412,6 +421,8 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -428,6 +439,8 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -444,6 +457,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.6" }, @@ -455,6 +470,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -466,6 +483,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "dev": true, + "peer": true, "dependencies": { "@babel/types": "^7.24.6" }, @@ -495,6 +514,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -503,6 +524,8 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -516,7 +539,9 @@ "version": "7.27.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.27.6" @@ -544,6 +569,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -558,6 +585,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -574,6 +603,8 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -589,6 +620,8 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" }, @@ -600,6 +633,8 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -611,6 +646,8 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -622,6 +659,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -636,6 +675,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -647,6 +688,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -658,6 +701,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -672,6 +717,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -686,6 +733,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -697,6 +746,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -704,24 +755,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -733,6 +772,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -744,6 +785,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -755,6 +798,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -766,6 +811,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -777,6 +824,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -788,6 +837,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -802,6 +853,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -812,24 +865,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -845,6 +886,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -859,6 +902,8 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -876,6 +921,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -892,6 +939,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -906,6 +955,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -920,6 +971,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -935,6 +988,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -951,6 +1006,8 @@ "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -972,6 +1029,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -987,6 +1046,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1001,6 +1062,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1016,6 +1079,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1030,6 +1095,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1045,6 +1112,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1060,6 +1129,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1075,6 +1146,8 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1090,6 +1163,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -1106,6 +1181,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1121,6 +1198,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1135,6 +1214,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1150,6 +1231,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1164,6 +1247,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1179,6 +1264,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -1195,6 +1282,8 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1212,6 +1301,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1227,6 +1318,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1242,6 +1335,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1256,6 +1351,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1271,6 +1368,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1286,6 +1385,8 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -1304,6 +1405,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -1319,6 +1422,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1334,6 +1439,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1350,6 +1457,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1364,6 +1473,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1379,6 +1490,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -1396,6 +1509,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1410,6 +1525,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1425,6 +1542,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1439,6 +1558,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1453,6 +1574,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1468,6 +1591,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1482,6 +1607,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1496,6 +1623,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1506,27 +1635,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", - "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1541,6 +1655,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1556,6 +1672,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1571,6 +1689,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1582,32 +1702,12 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/polyfill": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", - "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", - "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", - "dependencies": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/@babel/polyfill/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/@babel/polyfill/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, "node_modules/@babel/preset-env": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -1701,6 +1801,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -1709,6 +1811,8 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1718,28 +1822,12 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "peer": true }, "node_modules/@babel/runtime": { "version": "7.27.6", @@ -1754,7 +1842,9 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", @@ -1768,6 +1858,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.24.6", "@babel/generator": "^7.24.6", @@ -2109,6 +2201,8 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "peer": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2122,6 +2216,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true, "engines": { "node": ">=6.0.0" } @@ -2130,6 +2226,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "peer": true, "engines": { "node": ">=6.0.0" } @@ -2138,6 +2236,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -2147,12 +2246,16 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2237,9 +2340,9 @@ } }, "node_modules/@nextcloud/axios/node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2289,26 +2392,6 @@ "npm": "^10.0.0" } }, - "node_modules/@nextcloud/dialogs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.1.2.tgz", - "integrity": "sha512-hVgpr/CF0F+cE7tRZHJDVpB1S05K/pDcUMrfDpoxMKhux5SXlpwLXUaWM7iAbHEKYm6ArWdpUyhxBTTAo9yrvg==", - "dependencies": { - "@nextcloud/l10n": "^1.3.0", - "@nextcloud/typings": "^1.0.0", - "core-js": "^3.6.4", - "toastify-js": "^1.10.0" - } - }, - "node_modules/@nextcloud/dialogs/node_modules/@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", - "dependencies": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" - } - }, "node_modules/@nextcloud/eslint-config": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.1.tgz", @@ -2483,342 +2566,90 @@ "resolved": "https://registry.npmjs.org/@nextcloud/timezones/-/timezones-0.2.0.tgz", "integrity": "sha512-1mwQ+asTFOgv9rxPoAMEbDF8JfnenIa2EGNS+8MATCyi6WXxYh0Lhkaq1d3l2+xNbUPHgMnk4cRYsvIo319lkA==", "license": "AGPL-3.0-or-later", - "dependencies": { - "ical.js": "^2.1.0" - }, - "engines": { - "node": "^20 || ^22" - } - }, - "node_modules/@nextcloud/typings": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz", - "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==", - "license": "GPL-3.0-or-later", - "dependencies": { - "@types/jquery": "3.5.16" - }, - "engines": { - "node": "^20.0.0", - "npm": "^10.0.0" - } - }, - "node_modules/@nextcloud/typings/node_modules/@types/jquery": { - "version": "3.5.16", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", - "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", - "dependencies": { - "@types/sizzle": "*" - } - }, - "node_modules/@nextcloud/vue": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.34.0.tgz", - "integrity": "sha512-zUmInTvT4NgbRjWJZbw8nA+h4EqitYKfoCTj3h3Xr930sQZcczQatPtSo5Sps8RAh+JJz3iiAqAawYqS9jvBdA==", - "license": "AGPL-3.0-or-later", - "dependencies": { - "@floating-ui/dom": "^1.7.4", - "@linusborg/vue-simple-portal": "^0.1.5", - "@nextcloud/auth": "^2.5.3", - "@nextcloud/axios": "^2.5.2", - "@nextcloud/browser-storage": "^0.5.0", - "@nextcloud/capabilities": "^1.2.0", - "@nextcloud/event-bus": "^3.3.2", - "@nextcloud/initial-state": "^2.2.0", - "@nextcloud/l10n": "^3.4.0", - "@nextcloud/logger": "^3.0.2", - "@nextcloud/router": "^3.0.1", - "@nextcloud/sharing": "^0.3.0", - "@nextcloud/timezones": "^0.2.0", - "@nextcloud/vue-select": "^3.26.0", - "@vueuse/components": "^11.0.0", - "@vueuse/core": "^11.0.0", - "blurhash": "^2.0.5", - "clone": "^2.1.2", - "debounce": "^2.2.0", - "dompurify": "^3.3.0", - "emoji-mart-vue-fast": "^15.0.5", - "escape-html": "^1.0.3", - "floating-vue": "^1.0.0-beta.19", - "focus-trap": "^7.6.6", - "linkify-string": "^4.3.2", - "md5": "^2.3.0", - "p-queue": "^8.1.1", - "rehype-external-links": "^3.0.0", - "rehype-highlight": "^7.0.2", - "rehype-react": "^7.1.2", - "remark-breaks": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "remark-unlink-protocols": "^1.0.0", - "splitpanes": "^2.4.1", - "string-length": "^5.0.1", - "striptags": "^3.2.0", - "tabbable": "^6.3.0", - "tributejs": "^5.1.3", - "unified": "^11.0.1", - "unist-builder": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vue": "^2.7.16", - "vue-color": "^2.8.1", - "vue-frag": "^1.4.3", - "vue-router": "^3.6.5", - "vue2-datepicker": "^3.11.0" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@nextcloud/vue-dashboard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/vue-dashboard/-/vue-dashboard-2.0.1.tgz", - "integrity": "sha512-eLzdK8Ey5rrs3D6i2OAA5jkZ6lklrAbfnRgL40tZLIJ+MEKvRuPOjwrzhJKxHgVp3rU1rEgkaaPvSNXRVGS1mQ==", - "deprecated": "This library is deprecated as the components are now part of @nextcloud/vue starting with version 6.0.0.", - "dependencies": { - "@nextcloud/vue": "^3.1.1", - "core-js": "^3.6.4", - "vue": "^2.6.11" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "@nextcloud/vue": "^3.1.1", - "vue": "^2.6.11" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@babel/runtime": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", - "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", - "dependencies": { - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/auth": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-1.3.0.tgz", - "integrity": "sha512-GfwRM9W7hat4psNdAt74UHEV+drEXQ53klCVp6JpON66ZLPeK5eJ1LQuiQDkpUxZpqNeaumXjiB98h5cug/uQw==", - "dependencies": { - "@nextcloud/event-bus": "^1.1.3", - "@nextcloud/typings": "^0.2.2", - "core-js": "^3.6.4" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/axios": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.8.0.tgz", - "integrity": "sha512-ni29rhouV6aWIeVG5aSv89fS5UIBN3ZADhFsbFKLO+xKuukDQlIwlWWViS3ZuPW6TR5FlK2dF84xnYnfKnHa5w==", - "dependencies": { - "@babel/cli": "^7.8.4", - "@babel/core": "^7.9.0", - "@babel/preset-env": "^7.9.0", - "@babel/preset-typescript": "^7.9.0", - "@nextcloud/auth": "^1.2.2", - "axios": "^0.24.0", - "core-js": "^3.6.4" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/browser-storage": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.1.1.tgz", - "integrity": "sha512-bWzs/A44rEK8b3CMOFw0ZhsenagrWdsB902LOEwmlMCcFysiFgWiOPbF4/0/ODlOYjvPrO02wf6RigWtb8P+gA==", - "dependencies": { - "core-js": "3.6.1" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/browser-storage/node_modules/core-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.1.tgz", - "integrity": "sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/event-bus": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-1.3.0.tgz", - "integrity": "sha512-+U5MnCvfnNWvf0lvdqJg8F+Nm8wN+s9ayuBjtiEQxTAcootv7lOnlMgfreqF3l2T0Wet2uZh4JbFVUWf8l3w7g==", - "dependencies": { - "@types/semver": "^7.3.5", - "core-js": "^3.11.2", - "semver": "^7.3.5" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", - "dependencies": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/router": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.2.0.tgz", - "integrity": "sha512-kn9QsL9LuhkIMaSSgdiqRL3SZ6PatuAjXUiyq343BbSnI99Oc5eJH8kU6cT2AHije7wKy/tK8Xe3VQuVO32SZQ==", - "dependencies": { - "core-js": "^3.6.4" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/typings": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-0.2.4.tgz", - "integrity": "sha512-49M8XUDQH27VIQE+13KrqSOYcyOsDUk6Yfw17jbBVtXFoDJ3YBSYYq8YaKeAM3Lz2JVbEpqQW9suAT+EyYSb6g==", - "dependencies": { - "@types/jquery": "2.0.54" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/@nextcloud/vue": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-3.10.2.tgz", - "integrity": "sha512-/8r2fE8V7nw9erjm06x3nCALC+6o9q2CzNSL0eDRfsKXCVySFoZ4bYX+zziQUStienisKDRXRhxh7RUAwkS2+w==", - "dependencies": { - "@nextcloud/auth": "^1.2.3", - "@nextcloud/axios": "^1.3.2", - "@nextcloud/browser-storage": "^0.1.1", - "@nextcloud/capabilities": "^1.0.2", - "@nextcloud/dialogs": "^3.0.0", - "@nextcloud/event-bus": "^1.1.4", - "@nextcloud/l10n": "^1.2.3", - "@nextcloud/router": "^1.0.2", - "core-js": "^3.6.5", - "debounce": "1.2.1", - "emoji-mart-vue-fast": "^7.0.7", - "escape-html": "^1.0.3", - "hammerjs": "^2.0.8", - "linkifyjs": "~2.1.9", - "md5": "^2.2.1", - "regenerator-runtime": "^0.13.5", - "string-length": "^4.0.1", - "striptags": "^3.1.1", - "style-loader": "^2.0.0", - "tributejs": "^5.1.3", - "v-click-outside": "^3.0.1", - "v-tooltip": "^2.0.3", - "vue": "^2.6.11", - "vue-color": "^2.7.1", - "vue-multiselect": "^2.1.6", - "vue-visible": "^1.0.2", - "vue2-datepicker": "^3.6.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/emoji-mart-vue-fast": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-7.0.7.tgz", - "integrity": "sha512-Nrk4IOjKcKKYyMnRm4lreEiPpvDX+h3FKI86SYs05dCFZ0WZIMTGok26dtWvJqseTThS1UghsNEjM4HrfDjIJg==", - "dependencies": { - "@babel/polyfill": "7.2.5", - "@babel/runtime": "7.3.4", - "vue-virtual-scroller": "^1.0.0-rc.2" - }, - "peerDependencies": { - "vue": "^2.0.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/linkifyjs": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.9.tgz", - "integrity": "sha512-74ivurkK6WHvHFozVaGtQWV38FzBwSTGNmJolEgFp7QgR2bl6ArUWlvT4GcHKbPe1z3nWYi+VUdDZk16zDOVug==", - "peerDependencies": { - "jquery": ">= 1.11.0", - "react": ">= 0.14.0", - "react-dom": ">= 0.14.0" - } - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "dependencies": { + "ical.js": "^2.1.0" }, "engines": { - "node": ">=8.9.0" + "node": "^20 || ^22" } }, - "node_modules/@nextcloud/vue-dashboard/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/@nextcloud/vue-dashboard/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/@nextcloud/typings": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-1.9.1.tgz", + "integrity": "sha512-i0l/L5gKW8EACbXHVxXM6wn3sUhY2qmnL2OijppzU4dENC7/hqySMQDer7/+cJbNSNG7uHF/Z+9JmHtDfRfuGg==", + "license": "GPL-3.0-or-later", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/jquery": "3.5.16" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^20.0.0", + "npm": "^10.0.0" } }, - "node_modules/@nextcloud/vue-dashboard/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/@nextcloud/typings/node_modules/@types/jquery": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.16.tgz", + "integrity": "sha512-bsI7y4ZgeMkmpG9OM710RRzDFp+w4P1RGiIt30C1mSBT+ExCleeh4HObwgArnDFELmRrOpXgSYN9VF1hj+f1lw==", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@types/sizzle": "*" } }, - "node_modules/@nextcloud/vue-dashboard/node_modules/style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "node_modules/@nextcloud/vue": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-8.34.0.tgz", + "integrity": "sha512-zUmInTvT4NgbRjWJZbw8nA+h4EqitYKfoCTj3h3Xr930sQZcczQatPtSo5Sps8RAh+JJz3iiAqAawYqS9jvBdA==", + "license": "AGPL-3.0-or-later", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "@floating-ui/dom": "^1.7.4", + "@linusborg/vue-simple-portal": "^0.1.5", + "@nextcloud/auth": "^2.5.3", + "@nextcloud/axios": "^2.5.2", + "@nextcloud/browser-storage": "^0.5.0", + "@nextcloud/capabilities": "^1.2.0", + "@nextcloud/event-bus": "^3.3.2", + "@nextcloud/initial-state": "^2.2.0", + "@nextcloud/l10n": "^3.4.0", + "@nextcloud/logger": "^3.0.2", + "@nextcloud/router": "^3.0.1", + "@nextcloud/sharing": "^0.3.0", + "@nextcloud/timezones": "^0.2.0", + "@nextcloud/vue-select": "^3.26.0", + "@vueuse/components": "^11.0.0", + "@vueuse/core": "^11.0.0", + "blurhash": "^2.0.5", + "clone": "^2.1.2", + "debounce": "^2.2.0", + "dompurify": "^3.3.0", + "emoji-mart-vue-fast": "^15.0.5", + "escape-html": "^1.0.3", + "floating-vue": "^1.0.0-beta.19", + "focus-trap": "^7.6.6", + "linkify-string": "^4.3.2", + "md5": "^2.3.0", + "p-queue": "^8.1.1", + "rehype-external-links": "^3.0.0", + "rehype-highlight": "^7.0.2", + "rehype-react": "^7.1.2", + "remark-breaks": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "remark-unlink-protocols": "^1.0.0", + "splitpanes": "^2.4.1", + "string-length": "^5.0.1", + "striptags": "^3.2.0", + "tabbable": "^6.3.0", + "tributejs": "^5.1.3", + "unified": "^11.0.1", + "unist-builder": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vue": "^2.7.16", + "vue-color": "^2.8.1", + "vue-frag": "^1.4.3", + "vue-router": "^3.6.5", + "vue2-datepicker": "^3.11.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, "node_modules/@nextcloud/vue-select": { @@ -2885,12 +2716,6 @@ "webpack-dev-server": "^5.0.2" } }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "optional": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3298,6 +3123,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, "license": "MIT", "peer": true }, @@ -3370,15 +3196,12 @@ "@types/node": "*" } }, - "node_modules/@types/jquery": { - "version": "2.0.54", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.54.tgz", - "integrity": "sha512-D/PomKwNkDfSKD13DEVQT/pq2TUjN54c6uB341fEZanIzkjfGe7UaFuuaLZbpEiS5j7Wk2MUHAZqZIoECw29lg==" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "peer": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -3413,6 +3236,7 @@ "version": "20.16.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.13.tgz", "integrity": "sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4013,6 +3837,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4024,6 +3849,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, "license": "MIT", "peer": true }, @@ -4031,6 +3857,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, "license": "MIT", "peer": true }, @@ -4038,6 +3865,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, "license": "MIT", "peer": true }, @@ -4045,6 +3873,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4057,6 +3886,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, "license": "MIT", "peer": true }, @@ -4064,6 +3894,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4077,6 +3908,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4087,6 +3919,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, "license": "Apache-2.0", "peer": true, "dependencies": { @@ -4097,6 +3930,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, "license": "MIT", "peer": true }, @@ -4104,6 +3938,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4121,6 +3956,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4135,6 +3971,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4148,6 +3985,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4163,6 +4001,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -4221,6 +4060,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, "license": "BSD-3-Clause", "peer": true }, @@ -4228,6 +4068,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, "license": "Apache-2.0", "peer": true }, @@ -4264,6 +4105,7 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, "peer": true, "bin": { "acorn": "bin/acorn" @@ -4276,6 +4118,7 @@ "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, "license": "MIT", "peer": true, "peerDependencies": { @@ -4296,6 +4139,8 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4353,6 +4198,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -4375,6 +4222,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -4383,7 +4232,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4632,14 +4482,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -4662,6 +4504,8 @@ "version": "0.4.8", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "dev": true, + "peer": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.5.0", @@ -4675,6 +4519,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -4683,6 +4529,8 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0", "core-js-compat": "^3.34.0" @@ -4695,6 +4543,8 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0" }, @@ -4756,6 +4606,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, "engines": { "node": "*" } @@ -4764,7 +4615,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, + "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -4857,7 +4709,9 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4867,7 +4721,8 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -5024,6 +4879,7 @@ "version": "4.22.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5038,6 +4894,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001580", "electron-to-chromium": "^1.4.648", @@ -5081,6 +4938,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, "peer": true }, "node_modules/buffer-xor": { @@ -5226,6 +5084,7 @@ "version": "1.0.30001581", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5239,7 +5098,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "peer": true }, "node_modules/char-regex": { "version": "2.0.1", @@ -5271,8 +5131,9 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5296,7 +5157,8 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -5308,6 +5170,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, "peer": true, "dependencies": { "tslib": "^1.9.0" @@ -5397,6 +5260,7 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, "peer": true }, "node_modules/comment-parser": { @@ -5483,7 +5347,9 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "peer": true }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", @@ -5551,7 +5417,9 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "peer": true }, "node_modules/cookie": { "version": "0.7.1", @@ -5586,6 +5454,8 @@ "version": "3.36.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "dev": true, + "peer": true, "dependencies": { "browserslist": "^4.22.3" }, @@ -6231,7 +6101,9 @@ "node_modules/electron-to-chromium": { "version": "1.4.653", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz", - "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==" + "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==", + "dev": true, + "peer": true }, "node_modules/elliptic": { "version": "6.6.1", @@ -6282,6 +6154,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { "node": ">= 4" } @@ -6301,6 +6174,7 @@ "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -6441,6 +6315,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true, "peer": true }, "node_modules/es-object-atoms": { @@ -6502,6 +6377,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -6987,6 +6864,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -7287,6 +7165,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "peer": true, "dependencies": { "estraverse": "^5.2.0" @@ -7299,6 +7178,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "peer": true, "engines": { "node": ">=4.0" @@ -7308,6 +7188,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "peer": true, "engines": { "node": ">=4.0" @@ -7317,6 +7198,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -7353,6 +7236,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "peer": true, "engines": { "node": ">=0.8.x" @@ -7445,7 +7329,9 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true }, "node_modules/fast-glob": { "version": "3.3.2", @@ -7480,7 +7366,9 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -7581,7 +7469,8 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -7823,15 +7712,12 @@ "node": ">= 0.6" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "peer": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -7889,6 +7775,8 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -7965,6 +7853,8 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7997,6 +7887,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, "license": "BSD-2-Clause", "peer": true }, @@ -8004,6 +7895,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8043,6 +7936,8 @@ "version": "11.10.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -8117,6 +8012,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, "license": "ISC", "peer": true }, @@ -8127,14 +8023,6 @@ "dev": true, "peer": true }, - "node_modules/hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -8746,6 +8634,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8754,7 +8644,9 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "peer": true }, "node_modules/ini": { "version": "1.3.8", @@ -8874,7 +8766,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -8937,6 +8830,8 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "peer": true, "dependencies": { "hasown": "^2.0.0" }, @@ -8981,7 +8876,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "devOptional": true, + "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -9017,7 +8913,8 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -9094,7 +8991,8 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "dev": true, + "peer": true, "engines": { "node": ">=0.12.0" } @@ -9308,6 +9206,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "peer": true, "dependencies": { "@types/node": "*", @@ -9322,6 +9221,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "peer": true, "engines": { "node": ">=8" @@ -9331,6 +9231,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -9342,16 +9243,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "peer": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "peer": true }, "node_modules/js-yaml": { "version": "4.1.1", @@ -9381,6 +9278,8 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -9399,12 +9298,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "peer": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -9417,6 +9319,8 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -9510,6 +9414,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, "peer": true, "engines": { "node": ">=6.11.5" @@ -9565,12 +9470,9 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "peer": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -9591,18 +9493,6 @@ "dev": true, "peer": true }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, "node_modules/lowlight": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz", @@ -9622,28 +9512,10 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "dev": true, + "peer": true, + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/material-colors": { @@ -9981,6 +9853,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "peer": true }, "node_modules/merge2": { @@ -10610,6 +10483,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "peer": true }, "node_modules/nested-property": { @@ -10675,14 +10549,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gettext": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-gettext/-/node-gettext-3.0.0.tgz", - "integrity": "sha512-/VRYibXmVoN6tnSAY2JWhNRhWYJ8Cd844jrZU/DwLVoI4vBI6ceYbd8i42sYZ9uOgDH3S7vslIKOWV/ZrT2YBA==", - "dependencies": { - "lodash.get": "^4.4.2" - } - }, "node_modules/node-polyfill-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", @@ -10726,13 +10592,16 @@ "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "peer": true }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, + "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -10894,6 +10763,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "peer": true, "dependencies": { "wrappy": "1" } @@ -11128,6 +10999,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -11145,7 +11018,9 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "peer": true }, "node_modules/path-posix": { "version": "1.0.0", @@ -11237,7 +11112,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, + "peer": true, "engines": { "node": ">=8.6" }, @@ -11245,14 +11121,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", @@ -11269,16 +11137,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -11601,6 +11459,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -11663,6 +11523,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "peer": true, "dependencies": { "safe-buffer": "^5.1.0" @@ -11708,31 +11569,6 @@ "node": ">= 0.8" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, "node_modules/readable-stream": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", @@ -11755,7 +11591,8 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -11779,12 +11616,16 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "peer": true }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "peer": true, "dependencies": { "regenerate": "^1.4.2" }, @@ -11796,6 +11637,8 @@ "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -11823,6 +11666,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "peer": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -11839,6 +11684,8 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -11850,6 +11697,8 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" } @@ -12098,6 +11947,8 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "peer": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -12271,6 +12122,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -12413,15 +12265,6 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -12479,11 +12322,6 @@ "dev": true, "peer": true }, - "node_modules/scrollparent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.1.0.tgz", - "integrity": "sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA==" - }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -12579,6 +12417,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "peer": true, "dependencies": { "randombytes": "^2.1.0" @@ -12834,14 +12673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -12929,6 +12760,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -13200,6 +13032,8 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13581,6 +13415,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "peer": true, "engines": { "node": ">= 0.4" }, @@ -13646,6 +13482,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "peer": true, "engines": { "node": ">=6" @@ -13655,6 +13492,7 @@ "version": "5.27.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "dev": true, "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -13673,6 +13511,7 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", @@ -13707,6 +13546,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -13786,7 +13626,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -13794,11 +13635,6 @@ "node": ">=8.0" } }, - "node_modules/toastify-js": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", - "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" - }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -13993,6 +13829,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true, "peer": true }, "node_modules/tty-browserify": { @@ -14163,6 +14000,7 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, "license": "MIT", "peer": true }, @@ -14170,6 +14008,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -14178,6 +14018,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "peer": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -14190,6 +14032,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -14198,6 +14042,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -14335,6 +14181,7 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -14349,6 +14196,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -14364,6 +14212,8 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -14453,25 +14303,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v-click-outside": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v-click-outside/-/v-click-outside-3.2.0.tgz", - "integrity": "sha512-QD0bDy38SHJXQBjgnllmkI/rbdiwmq9RC+/+pvrFjYJKTn8dtp7Penf9q1lLBta280fYG2q53mgLhQ+3l3z74w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/v-tooltip": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.1.3.tgz", - "integrity": "sha512-xXngyxLQTOx/yUEy50thb8te7Qo4XU6h4LZB6cvEfVd9mnysUxLEoYwGWDdqR+l69liKsy3IPkdYff3J1gAJ5w==", - "dependencies": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21", - "popper.js": "^1.16.1", - "vue-resize": "^1.0.1" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -14641,20 +14472,6 @@ "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.3.0.tgz", "integrity": "sha512-wnbRh+48RwX/Gt+iqwCSdWpm0hPBwwv9F7MSouUzZ2PsphYVMJB9KkG9iGs+tgBiT57ZiurFEK07Y/rFKx+Ekg==" }, - "node_modules/vue-multiselect": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.9.tgz", - "integrity": "sha512-nGEppmzhQQT2iDz4cl+ZCX3BpeNhygK50zWFTIRS+r7K7i61uWXJWSioMuf+V/161EPQjexI8NaEBdUlF3dp+g==", - "engines": { - "node": ">= 4.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/vue-observe-visibility": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", - "integrity": "sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==" - }, "node_modules/vue-resize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz", @@ -14698,32 +14515,6 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, - "node_modules/vue-virtual-scroller": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-1.1.2.tgz", - "integrity": "sha512-SkUyc7QHCJFB5h1Fya7LxVizlVzOZZuFVipBGHYoTK8dwLs08bIz/tclvRApYhksaJIm/nn51inzO2UjpGJPMQ==", - "dependencies": { - "scrollparent": "^2.0.1", - "vue-observe-visibility": "^0.4.4", - "vue-resize": "^0.4.5" - }, - "peerDependencies": { - "vue": "^2.6.11" - } - }, - "node_modules/vue-virtual-scroller/node_modules/vue-resize": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", - "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==", - "peerDependencies": { - "vue": "^2.3.0" - } - }, - "node_modules/vue-visible": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vue-visible/-/vue-visible-1.0.2.tgz", - "integrity": "sha512-yaX2its9XAJKGuQqf7LsiZHHSkxsIK8rmCOQOvEGEoF41blKRK8qr9my4qYoD6ikdLss4n8tKqYBecmaY0+WJg==" - }, "node_modules/vue2-datepicker": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.11.1.tgz", @@ -14747,6 +14538,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -14851,6 +14643,7 @@ "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -15073,6 +14866,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, "peer": true, "engines": { "node": ">=10.13.0" @@ -15082,6 +14876,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -15186,7 +14981,9 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "peer": true }, "node_modules/write-file-atomic": { "version": "5.0.1", @@ -15262,7 +15059,9 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "peer": true }, "node_modules/yocto-queue": { "version": "0.1.0", @@ -15290,38 +15089,19 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, - "@babel/cli": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.9.tgz", - "integrity": "sha512-vB1UXmGDNEhcf1jNAHKT9IlYk1R+hehVTLFlCLHBi8gfuHQGP6uRjgXVYU0EVlI/qwAWpstqkBdf2aez3/z/5Q==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^2.0.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.2.0", - "make-dir": "^2.1.0", - "slash": "^2.0.0" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - } - } - }, "@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -15331,12 +15111,16 @@ "@babel/compat-data": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==" + "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "dev": true, + "peer": true }, "@babel/core": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz", "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", + "dev": true, + "peer": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.6", @@ -15358,7 +15142,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -15394,6 +15180,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.6", "@jridgewell/gen-mapping": "^0.3.5", @@ -15405,6 +15193,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -15413,6 +15203,8 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.15" } @@ -15421,6 +15213,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.24.6", "@babel/helper-validator-option": "^7.24.6", @@ -15432,7 +15226,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -15440,6 +15236,8 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", + "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -15455,7 +15253,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -15463,6 +15263,8 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -15472,7 +15274,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -15480,6 +15284,8 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -15491,12 +15297,16 @@ "@babel/helper-environment-visitor": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==" + "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", + "dev": true, + "peer": true }, "@babel/helper-function-name": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", + "dev": true, + "peer": true, "requires": { "@babel/template": "^7.24.6", "@babel/types": "^7.24.6" @@ -15506,6 +15316,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.6" } @@ -15514,6 +15326,8 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.23.0" } @@ -15522,6 +15336,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.6" } @@ -15530,6 +15346,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.24.6", "@babel/helper-module-imports": "^7.24.6", @@ -15542,6 +15360,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -15549,12 +15369,16 @@ "@babel/helper-plugin-utils": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==" + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "peer": true }, "@babel/helper-remap-async-to-generator": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -15565,6 +15389,8 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -15575,6 +15401,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.6" } @@ -15583,6 +15411,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.22.5" } @@ -15591,6 +15421,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "dev": true, + "peer": true, "requires": { "@babel/types": "^7.24.6" } @@ -15608,12 +15440,16 @@ "@babel/helper-validator-option": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==" + "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "dev": true, + "peer": true }, "@babel/helper-wrap-function": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -15624,6 +15460,8 @@ "version": "7.27.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "peer": true, "requires": { "@babel/template": "^7.27.2", "@babel/types": "^7.27.6" @@ -15641,6 +15479,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15649,6 +15489,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -15659,6 +15501,8 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -15668,12 +15512,16 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "peer": true, "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15682,6 +15530,8 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -15690,6 +15540,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -15698,6 +15550,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15706,6 +15560,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -15714,6 +15570,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15722,6 +15580,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15730,6 +15590,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -15738,22 +15600,18 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -15762,6 +15620,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15770,6 +15630,8 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -15778,6 +15640,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15786,6 +15650,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15794,6 +15660,8 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -15802,6 +15670,8 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -15810,22 +15680,18 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -15835,6 +15701,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15843,6 +15711,8 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -15854,6 +15724,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -15864,6 +15736,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15872,6 +15746,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15880,6 +15756,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -15889,6 +15767,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -15899,6 +15779,8 @@ "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -15914,6 +15796,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -15923,6 +15807,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15931,6 +15817,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -15940,6 +15828,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -15948,6 +15838,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -15957,6 +15849,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -15966,6 +15860,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -15975,6 +15871,8 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -15984,6 +15882,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -15994,6 +15894,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -16003,6 +15905,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16011,6 +15915,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -16020,6 +15926,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16028,6 +15936,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -16037,6 +15947,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -16047,6 +15959,8 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -16058,6 +15972,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -16067,6 +15983,8 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -16076,6 +15994,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16084,6 +16004,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -16093,6 +16015,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -16102,6 +16026,8 @@ "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -16114,6 +16040,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -16123,6 +16051,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -16132,6 +16062,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -16142,6 +16074,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16150,6 +16084,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -16159,6 +16095,8 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -16170,6 +16108,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16178,6 +16118,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -16187,6 +16129,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16195,6 +16139,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16203,6 +16149,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -16212,6 +16160,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16220,6 +16170,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16228,25 +16180,18 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-typescript": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", - "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" - } - }, "@babel/plugin-transform-unicode-escapes": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.22.5" } @@ -16255,6 +16200,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -16264,6 +16211,8 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -16273,36 +16222,19 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "peer": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/polyfill": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", - "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", - "requires": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.12.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - } - } - }, "@babel/preset-env": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", @@ -16389,7 +16321,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -16397,28 +16331,20 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } }, - "@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" - } - }, "@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "peer": true }, "@babel/runtime": { "version": "7.27.6", @@ -16429,6 +16355,8 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "peer": true, "requires": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", @@ -16439,6 +16367,8 @@ "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", + "dev": true, + "peer": true, "requires": { "@babel/code-frame": "^7.24.6", "@babel/generator": "^7.24.6", @@ -16658,6 +16588,8 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "peer": true, "requires": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -16667,17 +16599,22 @@ "@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true }, "@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "peer": true }, "@jridgewell/source-map": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -16687,12 +16624,16 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true }, "@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "peer": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -16764,9 +16705,9 @@ }, "dependencies": { "axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "requires": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -16801,28 +16742,6 @@ "@nextcloud/initial-state": "^2.1.0" } }, - "@nextcloud/dialogs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-3.1.2.tgz", - "integrity": "sha512-hVgpr/CF0F+cE7tRZHJDVpB1S05K/pDcUMrfDpoxMKhux5SXlpwLXUaWM7iAbHEKYm6ArWdpUyhxBTTAo9yrvg==", - "requires": { - "@nextcloud/l10n": "^1.3.0", - "@nextcloud/typings": "^1.0.0", - "core-js": "^3.6.4", - "toastify-js": "^1.10.0" - }, - "dependencies": { - "@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", - "requires": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" - } - } - } - }, "@nextcloud/eslint-config": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-8.4.1.tgz", @@ -17021,210 +16940,6 @@ } } }, - "@nextcloud/vue-dashboard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nextcloud/vue-dashboard/-/vue-dashboard-2.0.1.tgz", - "integrity": "sha512-eLzdK8Ey5rrs3D6i2OAA5jkZ6lklrAbfnRgL40tZLIJ+MEKvRuPOjwrzhJKxHgVp3rU1rEgkaaPvSNXRVGS1mQ==", - "requires": { - "@nextcloud/vue": "^3.1.1", - "core-js": "^3.6.4", - "vue": "^2.6.11" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", - "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", - "requires": { - "regenerator-runtime": "^0.12.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - } - } - }, - "@nextcloud/auth": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-1.3.0.tgz", - "integrity": "sha512-GfwRM9W7hat4psNdAt74UHEV+drEXQ53klCVp6JpON66ZLPeK5eJ1LQuiQDkpUxZpqNeaumXjiB98h5cug/uQw==", - "requires": { - "@nextcloud/event-bus": "^1.1.3", - "@nextcloud/typings": "^0.2.2", - "core-js": "^3.6.4" - } - }, - "@nextcloud/axios": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-1.8.0.tgz", - "integrity": "sha512-ni29rhouV6aWIeVG5aSv89fS5UIBN3ZADhFsbFKLO+xKuukDQlIwlWWViS3ZuPW6TR5FlK2dF84xnYnfKnHa5w==", - "requires": { - "@babel/cli": "^7.8.4", - "@babel/core": "^7.9.0", - "@babel/preset-env": "^7.9.0", - "@babel/preset-typescript": "^7.9.0", - "@nextcloud/auth": "^1.2.2", - "axios": "^0.24.0", - "core-js": "^3.6.4" - } - }, - "@nextcloud/browser-storage": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nextcloud/browser-storage/-/browser-storage-0.1.1.tgz", - "integrity": "sha512-bWzs/A44rEK8b3CMOFw0ZhsenagrWdsB902LOEwmlMCcFysiFgWiOPbF4/0/ODlOYjvPrO02wf6RigWtb8P+gA==", - "requires": { - "core-js": "3.6.1" - }, - "dependencies": { - "core-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.1.tgz", - "integrity": "sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ==" - } - } - }, - "@nextcloud/event-bus": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-1.3.0.tgz", - "integrity": "sha512-+U5MnCvfnNWvf0lvdqJg8F+Nm8wN+s9ayuBjtiEQxTAcootv7lOnlMgfreqF3l2T0Wet2uZh4JbFVUWf8l3w7g==", - "requires": { - "@types/semver": "^7.3.5", - "core-js": "^3.11.2", - "semver": "^7.3.5" - } - }, - "@nextcloud/l10n": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@nextcloud/l10n/-/l10n-1.6.0.tgz", - "integrity": "sha512-aKGlgrwN9OiafN791sYus0shfwNeU3PlrH6Oi9ISma6iJSvN6a8aJM8WGKCJ9pqBaTR5PrDuckuM/WnybBWb6A==", - "requires": { - "core-js": "^3.6.4", - "node-gettext": "^3.0.0" - } - }, - "@nextcloud/router": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-1.2.0.tgz", - "integrity": "sha512-kn9QsL9LuhkIMaSSgdiqRL3SZ6PatuAjXUiyq343BbSnI99Oc5eJH8kU6cT2AHije7wKy/tK8Xe3VQuVO32SZQ==", - "requires": { - "core-js": "^3.6.4" - } - }, - "@nextcloud/typings": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@nextcloud/typings/-/typings-0.2.4.tgz", - "integrity": "sha512-49M8XUDQH27VIQE+13KrqSOYcyOsDUk6Yfw17jbBVtXFoDJ3YBSYYq8YaKeAM3Lz2JVbEpqQW9suAT+EyYSb6g==", - "requires": { - "@types/jquery": "2.0.54" - } - }, - "@nextcloud/vue": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/@nextcloud/vue/-/vue-3.10.2.tgz", - "integrity": "sha512-/8r2fE8V7nw9erjm06x3nCALC+6o9q2CzNSL0eDRfsKXCVySFoZ4bYX+zziQUStienisKDRXRhxh7RUAwkS2+w==", - "requires": { - "@nextcloud/auth": "^1.2.3", - "@nextcloud/axios": "^1.3.2", - "@nextcloud/browser-storage": "^0.1.1", - "@nextcloud/capabilities": "^1.0.2", - "@nextcloud/dialogs": "^3.0.0", - "@nextcloud/event-bus": "^1.1.4", - "@nextcloud/l10n": "^1.2.3", - "@nextcloud/router": "^1.0.2", - "core-js": "^3.6.5", - "debounce": "1.2.1", - "emoji-mart-vue-fast": "^7.0.7", - "escape-html": "^1.0.3", - "hammerjs": "^2.0.8", - "linkifyjs": "~2.1.9", - "md5": "^2.2.1", - "regenerator-runtime": "^0.13.5", - "string-length": "^4.0.1", - "striptags": "^3.1.1", - "style-loader": "^2.0.0", - "tributejs": "^5.1.3", - "v-click-outside": "^3.0.1", - "v-tooltip": "^2.0.3", - "vue": "^2.6.11", - "vue-color": "^2.7.1", - "vue-multiselect": "^2.1.6", - "vue-visible": "^1.0.2", - "vue2-datepicker": "^3.6.3" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - }, - "debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" - }, - "emoji-mart-vue-fast": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/emoji-mart-vue-fast/-/emoji-mart-vue-fast-7.0.7.tgz", - "integrity": "sha512-Nrk4IOjKcKKYyMnRm4lreEiPpvDX+h3FKI86SYs05dCFZ0WZIMTGok26dtWvJqseTThS1UghsNEjM4HrfDjIJg==", - "requires": { - "@babel/polyfill": "7.2.5", - "@babel/runtime": "7.3.4", - "vue-virtual-scroller": "^1.0.0-rc.2" - } - }, - "linkifyjs": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.9.tgz", - "integrity": "sha512-74ivurkK6WHvHFozVaGtQWV38FzBwSTGNmJolEgFp7QgR2bl6ArUWlvT4GcHKbPe1z3nWYi+VUdDZk16zDOVug==", - "requires": {} - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - } - } - }, "@nextcloud/vue-select": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/@nextcloud/vue-select/-/vue-select-3.26.0.tgz", @@ -17238,12 +16953,6 @@ "dev": true, "requires": {} }, - "@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "optional": true - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -17458,6 +17167,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, "peer": true }, "@types/express": { @@ -17526,15 +17236,12 @@ "@types/node": "*" } }, - "@types/jquery": { - "version": "2.0.54", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.54.tgz", - "integrity": "sha512-D/PomKwNkDfSKD13DEVQT/pq2TUjN54c6uB341fEZanIzkjfGe7UaFuuaLZbpEiS5j7Wk2MUHAZqZIoECw29lg==" - }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "peer": true }, "@types/json5": { "version": "0.0.29", @@ -17567,6 +17274,7 @@ "version": "20.16.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.13.tgz", "integrity": "sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==", + "dev": true, "peer": true, "requires": { "undici-types": "~6.19.2" @@ -17972,6 +17680,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -17982,24 +17691,28 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, "peer": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, "peer": true }, "@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, "peer": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", @@ -18011,12 +17724,14 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, "peer": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18029,6 +17744,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" @@ -18038,6 +17754,7 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, "peer": true, "requires": { "@xtuc/long": "4.2.2" @@ -18047,12 +17764,14 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, "peer": true }, "@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18069,6 +17788,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18082,6 +17802,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18094,6 +17815,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18108,6 +17830,7 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, "peer": true, "requires": { "@webassemblyjs/ast": "1.12.1", @@ -18142,12 +17865,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, "peer": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, "peer": true }, "abort-controller": { @@ -18175,12 +17900,14 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, "peer": true }, "acorn-import-attributes": { "version": "1.9.5", "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, "peer": true, "requires": {} }, @@ -18196,6 +17923,8 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18239,6 +17968,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, "requires": {} }, "ansi-html-community": { @@ -18251,13 +17982,16 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "peer": true }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -18444,14 +18178,6 @@ "possible-typed-array-names": "^1.0.0" } }, - "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, "babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -18467,6 +18193,8 @@ "version": "0.4.8", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "dev": true, + "peer": true, "requires": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.5.0", @@ -18476,7 +18204,9 @@ "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, @@ -18484,6 +18214,8 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.5.0", "core-js-compat": "^3.34.0" @@ -18493,6 +18225,8 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.5.0" } @@ -18529,13 +18263,15 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true + "dev": true, + "peer": true }, "bluebird": { "version": "3.7.2", @@ -18617,6 +18353,8 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "peer": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -18626,7 +18364,8 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "fill-range": "^7.1.1" } @@ -18769,6 +18508,8 @@ "version": "4.22.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, + "peer": true, "requires": { "caniuse-lite": "^1.0.30001580", "electron-to-chromium": "^1.4.648", @@ -18791,6 +18532,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, "peer": true }, "buffer-xor": { @@ -18894,7 +18636,9 @@ "caniuse-lite": { "version": "1.0.30001581", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz", - "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==" + "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==", + "dev": true, + "peer": true }, "char-regex": { "version": "2.0.1", @@ -18915,7 +18659,8 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -18931,7 +18676,8 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "is-glob": "^4.0.1" } @@ -18942,6 +18688,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, "peer": true, "requires": { "tslib": "^1.9.0" @@ -19011,6 +18758,7 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, "peer": true }, "comment-parser": { @@ -19082,7 +18830,9 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true, + "peer": true }, "connect-history-api-fallback": { "version": "2.0.0", @@ -19134,7 +18884,9 @@ "convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "peer": true }, "cookie": { "version": "0.7.1", @@ -19159,6 +18911,8 @@ "version": "3.36.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "dev": true, + "peer": true, "requires": { "browserslist": "^4.22.3" } @@ -19612,7 +19366,9 @@ "electron-to-chromium": { "version": "1.4.653", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz", - "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==" + "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==", + "dev": true, + "peer": true }, "elliptic": { "version": "6.6.1", @@ -19658,7 +19414,8 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "encodeurl": { "version": "2.0.0", @@ -19671,6 +19428,7 @@ "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, "peer": true, "requires": { "graceful-fs": "^4.2.4", @@ -19779,6 +19537,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true, "peer": true }, "es-object-atoms": { @@ -19825,7 +19584,9 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "peer": true }, "escape-html": { "version": "1.0.3", @@ -20336,6 +20097,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "peer": true, "requires": { "esrecurse": "^4.3.0", @@ -20384,6 +20146,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "peer": true, "requires": { "estraverse": "^5.2.0" @@ -20393,6 +20156,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "peer": true } } @@ -20401,12 +20165,15 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "peer": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true, + "peer": true }, "etag": { "version": "1.8.1", @@ -20431,6 +20198,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "peer": true }, "evp_bytestokey": { @@ -20511,7 +20279,9 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "peer": true }, "fast-glob": { "version": "3.3.2", @@ -20542,7 +20312,9 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true }, "fast-levenshtein": { "version": "2.0.6", @@ -20609,7 +20381,8 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "to-regex-range": "^5.0.1" } @@ -20786,15 +20559,12 @@ "dev": true, "peer": true }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true, + "peer": true }, "fsevents": { "version": "2.3.3", @@ -20832,7 +20602,9 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "peer": true }, "get-intrinsic": { "version": "1.3.0", @@ -20886,6 +20658,8 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -20899,6 +20673,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, "requires": { "brace-expansion": "^1.1.7" } @@ -20919,6 +20695,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, "peer": true }, "global-modules": { @@ -20946,7 +20723,9 @@ "globals": { "version": "11.10.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "dev": true, + "peer": true }, "globalthis": { "version": "1.0.3", @@ -20998,6 +20777,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, "peer": true }, "graphemer": { @@ -21007,11 +20787,6 @@ "dev": true, "peer": true }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" - }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -21456,6 +21231,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "peer": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -21464,7 +21241,9 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "peer": true }, "ini": { "version": "1.3.8", @@ -21552,7 +21331,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "binary-extensions": "^2.0.0" } @@ -21594,6 +21374,8 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "peer": true, "requires": { "hasown": "^2.0.0" } @@ -21619,7 +21401,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "devOptional": true + "dev": true, + "peer": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -21642,7 +21425,8 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "is-extglob": "^2.1.1" } @@ -21686,7 +21470,8 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true + "dev": true, + "peer": true }, "is-number-object": { "version": "1.0.7", @@ -21826,6 +21611,7 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, "peer": true, "requires": { "@types/node": "*", @@ -21837,12 +21623,14 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "peer": true, "requires": { "has-flag": "^4.0.0" @@ -21850,16 +21638,12 @@ } } }, - "jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "peer": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "peer": true }, "js-yaml": { "version": "4.1.1", @@ -21881,7 +21665,9 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true }, "json-buffer": { "version": "3.0.1", @@ -21894,12 +21680,15 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, "peer": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -21911,7 +21700,9 @@ "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "peer": true }, "keyv": { "version": "4.5.4", @@ -21987,6 +21778,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, "peer": true }, "loader-utils": { @@ -22029,12 +21821,9 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "peer": true }, "lodash.merge": { "version": "4.6.2", @@ -22055,15 +21844,6 @@ "dev": true, "peer": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "lowlight": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz", @@ -22078,26 +21858,12 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "peer": true, "requires": { "yallist": "^3.0.2" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } - }, "material-colors": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", @@ -22324,6 +22090,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "peer": true }, "merge2": { @@ -22673,6 +22440,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "peer": true }, "nested-property": { @@ -22709,14 +22477,6 @@ "dev": true, "peer": true }, - "node-gettext": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-gettext/-/node-gettext-3.0.0.tgz", - "integrity": "sha512-/VRYibXmVoN6tnSAY2JWhNRhWYJ8Cd844jrZU/DwLVoI4vBI6ceYbd8i42sYZ9uOgDH3S7vslIKOWV/ZrT2YBA==", - "requires": { - "lodash.get": "^4.4.2" - } - }, "node-polyfill-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", @@ -22753,13 +22513,16 @@ "node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "peer": true }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true + "dev": true, + "peer": true }, "nth-check": { "version": "2.1.1", @@ -22875,6 +22638,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "peer": true, "requires": { "wrappy": "1" } @@ -23038,7 +22803,9 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "peer": true }, "path-key": { "version": "3.1.1", @@ -23050,7 +22817,9 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "peer": true }, "path-posix": { "version": "1.0.0", @@ -23131,12 +22900,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "dev": true, + "peer": true }, "pkg-dir": { "version": "7.0.0", @@ -23148,11 +22913,6 @@ "find-up": "^6.3.0" } }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, "possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -23369,7 +23129,9 @@ "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true }, "qs": { "version": "6.13.0", @@ -23404,6 +23166,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "peer": true, "requires": { "safe-buffer": "^5.1.0" @@ -23440,25 +23203,6 @@ "unpipe": "1.0.0" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, "readable-stream": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", @@ -23477,7 +23221,8 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "picomatch": "^2.2.1" } @@ -23495,12 +23240,16 @@ "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "peer": true }, "regenerate-unicode-properties": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "peer": true, "requires": { "regenerate": "^1.4.2" } @@ -23509,6 +23258,8 @@ "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "peer": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -23530,6 +23281,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "peer": true, "requires": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -23543,6 +23296,8 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "peer": true, "requires": { "jsesc": "~0.5.0" }, @@ -23550,7 +23305,9 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "peer": true } } }, @@ -23724,6 +23481,8 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "peer": true, "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -23839,6 +23598,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "peer": true }, "safe-regex-test": { @@ -23907,15 +23667,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "peer": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, "schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -23961,11 +23712,6 @@ } } }, - "scrollparent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.1.0.tgz", - "integrity": "sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA==" - }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -24043,6 +23789,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "peer": true, "requires": { "randombytes": "^2.1.0" @@ -24238,11 +23985,6 @@ "object-inspect": "^1.13.1" } }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -24310,6 +24052,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "peer": true, "requires": { "buffer-from": "^1.0.0", @@ -24528,6 +24271,8 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "peer": true, "requires": { "ansi-regex": "^5.0.1" } @@ -24779,7 +24524,9 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "peer": true }, "svg-tags": { "version": "1.0.0", @@ -24833,12 +24580,14 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, "peer": true }, "terser": { "version": "5.27.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "dev": true, "peer": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -24851,6 +24600,7 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.20", @@ -24864,6 +24614,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "peer": true, "requires": { "@types/json-schema": "^7.0.8", @@ -24927,16 +24678,12 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, + "peer": true, "requires": { "is-number": "^7.0.0" } }, - "toastify-js": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/toastify-js/-/toastify-js-1.12.0.tgz", - "integrity": "sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==" - }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -25081,6 +24828,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true, "peer": true }, "tty-browserify": { @@ -25203,17 +24951,22 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, "peer": true }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "peer": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "peer": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -25222,12 +24975,16 @@ "unicode-match-property-value-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "peer": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "peer": true }, "unified": { "version": "11.0.4", @@ -25321,6 +25078,8 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "peer": true, "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -25330,6 +25089,8 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, "requires": { "punycode": "^2.1.0" } @@ -25402,22 +25163,6 @@ "dev": true, "peer": true }, - "v-click-outside": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v-click-outside/-/v-click-outside-3.2.0.tgz", - "integrity": "sha512-QD0bDy38SHJXQBjgnllmkI/rbdiwmq9RC+/+pvrFjYJKTn8dtp7Penf9q1lLBta280fYG2q53mgLhQ+3l3z74w==" - }, - "v-tooltip": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.1.3.tgz", - "integrity": "sha512-xXngyxLQTOx/yUEy50thb8te7Qo4XU6h4LZB6cvEfVd9mnysUxLEoYwGWDdqR+l69liKsy3IPkdYff3J1gAJ5w==", - "requires": { - "@babel/runtime": "^7.13.10", - "lodash": "^4.17.21", - "popper.js": "^1.16.1", - "vue-resize": "^1.0.1" - } - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -25537,16 +25282,6 @@ "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.3.0.tgz", "integrity": "sha512-wnbRh+48RwX/Gt+iqwCSdWpm0hPBwwv9F7MSouUzZ2PsphYVMJB9KkG9iGs+tgBiT57ZiurFEK07Y/rFKx+Ekg==" }, - "vue-multiselect": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-2.1.9.tgz", - "integrity": "sha512-nGEppmzhQQT2iDz4cl+ZCX3BpeNhygK50zWFTIRS+r7K7i61uWXJWSioMuf+V/161EPQjexI8NaEBdUlF3dp+g==" - }, - "vue-observe-visibility": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", - "integrity": "sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==" - }, "vue-resize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz", @@ -25587,29 +25322,6 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, - "vue-virtual-scroller": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-1.1.2.tgz", - "integrity": "sha512-SkUyc7QHCJFB5h1Fya7LxVizlVzOZZuFVipBGHYoTK8dwLs08bIz/tclvRApYhksaJIm/nn51inzO2UjpGJPMQ==", - "requires": { - "scrollparent": "^2.0.1", - "vue-observe-visibility": "^0.4.4", - "vue-resize": "^0.4.5" - }, - "dependencies": { - "vue-resize": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", - "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==", - "requires": {} - } - } - }, - "vue-visible": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vue-visible/-/vue-visible-1.0.2.tgz", - "integrity": "sha512-yaX2its9XAJKGuQqf7LsiZHHSkxsIK8rmCOQOvEGEoF41blKRK8qr9my4qYoD6ikdLss4n8tKqYBecmaY0+WJg==" - }, "vue2-datepicker": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.11.1.tgz", @@ -25628,6 +25340,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, "peer": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -25702,6 +25415,7 @@ "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "dev": true, "peer": true, "requires": { "@types/estree": "^1.0.5", @@ -25733,6 +25447,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, "peer": true, "requires": { "@types/json-schema": "^7.0.8", @@ -25856,6 +25571,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, "peer": true }, "websocket-driver": { @@ -25927,7 +25643,9 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "peer": true }, "write-file-atomic": { "version": "5.0.1", @@ -25974,7 +25692,9 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "peer": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index d478709a..9e5476e0 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,7 @@ "@nextcloud/l10n": "^3.1.0", "@nextcloud/paths": "^2.1.0", "@nextcloud/router": "^3.0.1", - "@nextcloud/vue": "^8.11.3", - "@nextcloud/vue-dashboard": "^2.0.1", + "@nextcloud/vue": "^8.22.0", "lodash": "^4.17.21", "vue": "^2.7.16", "vue-material-design-icons": "^5.3.0", diff --git a/src/components/Dashboard.vue b/src/components/DashboardWidget.vue similarity index 74% rename from src/components/Dashboard.vue rename to src/components/DashboardWidget.vue index e00cc957..5f8d3fe2 100644 --- a/src/components/Dashboard.vue +++ b/src/components/DashboardWidget.vue @@ -4,7 +4,7 @@ --> <template> - <DashboardWidget id="recommendations" :items="recommendedFiles"> + <NcDashboardWidget id="recommendations" :items="recommendedFiles"> <template #default="{ item }"> <RecommendedFile :id="item.id" :key="item.id" @@ -16,25 +16,30 @@ :has-preview="item.hasPreview" /> </template> <template #empty-content> - <EmptyContent id="recommendations--empty-content" + <NcEmptyContent id="recommendations--empty-content" icon="icon-files-dark"> <template #description> {{ t('recommendations', 'No recommendations yet') }} </template> - </EmptyContent> + </NcEmptyContent> </template> - </DashboardWidget> + </NcDashboardWidget> </template> <script> -import { translate as t } from '@nextcloud/l10n' -import { DashboardWidget } from '@nextcloud/vue-dashboard' -import EmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' +import { t } from '@nextcloud/l10n' +import NcDashboardWidget from '@nextcloud/vue/dist/Components/NcDashboardWidget.js' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js' import RecommendedFile from './RecommendedFile.vue' export default { - name: 'Dashboard', - components: { RecommendedFile, DashboardWidget, EmptyContent }, + name: 'DashboardWidget', + + components: { + RecommendedFile, + NcDashboardWidget, + NcEmptyContent, + }, computed: { enabled() { return this.$store.state.enabled diff --git a/src/components/Recommendations.vue b/src/components/FilesRecommendations.vue similarity index 98% rename from src/components/Recommendations.vue rename to src/components/FilesRecommendations.vue index ecb6435e..9001b042 100644 --- a/src/components/Recommendations.vue +++ b/src/components/FilesRecommendations.vue @@ -28,7 +28,7 @@ import { translate as t } from '@nextcloud/l10n' import RecommendedFile from './RecommendedFile.vue' export default { - name: 'Recommendations', + name: 'FilesRecommendations', components: { RecommendedFile }, computed: { enabled() { diff --git a/src/dashboard.js b/src/dashboard.js index f55e750d..f41c7946 100644 --- a/src/dashboard.js +++ b/src/dashboard.js @@ -4,7 +4,7 @@ */ import Vue from 'vue' -import Dashboard from './components/Dashboard.vue' +import DashboardWidget from './components/DashboardWidget.vue' import store from './store/store.js' // Load recommendations @@ -13,7 +13,7 @@ store.dispatch('fetchRecommendations', true) document.addEventListener('DOMContentLoaded', function() { OCA.Dashboard.register('recommendations', (el) => { - const View = Vue.extend(Dashboard) + const View = Vue.extend(DashboardWidget) // eslint-disable-next-line no-unused-vars const vm = new View({ propsData: {}, diff --git a/src/main.js b/src/main.js index dd4baade..c6587713 100644 --- a/src/main.js +++ b/src/main.js @@ -5,11 +5,11 @@ import Vue from 'vue' import { Header, registerFileListHeaders } from '@nextcloud/files' -import Recommendations from './components/Recommendations.vue' +import FilesRecommendations from './components/FilesRecommendations.vue' import Settings from './components/Settings.vue' import store from './store/store.js' -const View = Vue.extend(Recommendations) +const View = Vue.extend(FilesRecommendations) const header = new Header({ id: 'recommendations',