diff --git a/.eslintrc.js b/.eslintrc.js index 11abf973b..afec4cd58 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -27,7 +27,7 @@ module.exports = { 'Squire': "readonly", 'SquireUI': "readonly", // node_modules/knockout but dev/External/ko.js is used -// 'ko': "readonly", + 'ko': "readonly", // vendors/routes/ 'hasher': "readonly", 'signals': "readonly", diff --git a/README.md b/README.md index da244e448..2de06793a 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ The result is faster and smaller download code (good for mobile networks). Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill for array.flat(). -* Added dev/prototype-*.js for some additional features +* Added dev/prototype*.js for some additional features * boot.js without webpack overhead * Modified Jua.js to be without jQuery * Replaced ProgressJS with simple native dropin @@ -107,22 +107,22 @@ RainLoop 1.14 vs SnappyMail |js/* |RainLoop |Snappy | |----------- |--------: |--------: | -|admin.js |2.130.942 | 666.175 | -|app.js |4.184.455 |2.412.164 | +|admin.js |2.130.942 | 665.605 | +|app.js |4.184.455 |2.402.380 | |boot.js | 671.522 | 5.285 | -|libs.js | 647.614 | 238.674 | +|libs.js | 647.614 | 238.766 | |polyfills.js | 325.834 | 0 | -|TOTAL |7.960.367 |3.322.298 | +|TOTAL |7.960.367 |3.312.036 | |js/min/* |RainLoop |Snappy |Rain gzip |gzip |brotli | |--------------- |--------: |--------: |--------: |--------: |--------: | -|admin.min.js | 252.147 | 91.598 | 73.657 | 23.547 | 20.518 | -|app.min.js | 511.202 | 325.187 |140.462 | 83.936 | 68.135 | +|admin.min.js | 252.147 | 91.510 | 73.657 | 23.529 | 20.480 | +|app.min.js | 511.202 | 322.449 |140.462 | 83.183 | 67.656 | |boot.min.js | 66.007 | 2.918 | 22.567 | 1.500 | 1.275 | -|libs.min.js | 572.545 | 134.223 |176.720 | 48.183 | 42.816 | +|libs.min.js | 572.545 | 134.315 |176.720 | 48.216 | 42.855 | |polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 | -|TOTAL |1.434.353 | 553.926 |424.718 |157.166 |132.744 | -|TOTAL (no admin) |1.182.206 | 462.328 |351.061 |133.619 |112.226 | +|TOTAL |1.434.353 | 551.192 |424.718 |156.428 |132.266 | +|TOTAL (no admin) |1.182.206 | 459.682 |351.061 |132.899 |111.786 | For a user its around 61% smaller and faster than traditional RainLoop. @@ -156,7 +156,7 @@ For a user its around 61% smaller and faster than traditional RainLoop. ### Squire vs CKEditor -The [Squire](https://github.com/neilj/Squire) implementation is not 100% compatible yet, but is shows the massive overhead of CKEditor. +The [Squire](https://github.com/neilj/Squire) implementation is not 100% compatible yet, but it shows the massive overhead of CKEditor. Still TODO: diff --git a/dev/Knoin/AbstractModel.js b/dev/Knoin/AbstractModel.js index 3cb7b0f15..72df00560 100644 --- a/dev/Knoin/AbstractModel.js +++ b/dev/Knoin/AbstractModel.js @@ -5,6 +5,18 @@ function disposeOne(disposable) { } } +function typeCast(current, value) { + switch (typeof current) + { + case 'boolean': return !!value; + case 'string': return null != value ? '' + value : ''; + case 'number': + value = parseInt(value, 10); + return (isNaN(value) || !isFinite(value)) ? 0 : value; + } + return value; +} + export class AbstractModel { disposables = []; @@ -13,7 +25,7 @@ export class AbstractModel { */ constructor() { /* - if (new.target === Parent) { + if (new.target === AbstractModel) { throw new Error("Can't instantiate abstract class!"); } this.sModelName = new.target.name; @@ -50,15 +62,35 @@ export class AbstractModel { * @returns {*Model} */ static reviveFromJson(json) { - // Object/Attachment - // Object/Contact - // Object/Email - // Object/Filter - // Object/Folder - // Object/Message - // Object/Template - return this.validJson(json) ? new this() : null; -// json && Object.entries(json).forEach(([key, value]) => '@' !== key[0] && (this[key] = value)); + let obj = this.validJson(json) ? new this() : null; + try { + obj && Object.entries(json).forEach(([key, value]) => { + if ('@' !== key[0]) { + key = key[0].toLowerCase() + key.substr(1); + switch (typeof obj[key]) + { + case 'function': + if (ko.isObservable(obj[key]) && !ko.isObservableArray(obj[key])) { + obj[key](typeCast(obj[key](), value)); + } +// else { console.log('('+(typeof obj[key])+') '+key+' not revived'); } + break; + case 'boolean': + case 'string': + case 'number': + obj[key] = typeCast(obj[key], value); + break; +// case 'undefined': +// default: +// console.log('('+(typeof obj[key])+') '+key+' not revived'); + } + } + }); + } catch (e) { + console.log(this.name); + console.error(e); + } + return obj; } } diff --git a/dev/Model/Attachment.js b/dev/Model/Attachment.js index 235bc4950..1ff48eddd 100644 --- a/dev/Model/Attachment.js +++ b/dev/Model/Attachment.js @@ -47,23 +47,6 @@ class AttachmentModel extends AbstractModel { static reviveFromJson(json) { const attachment = super.reviveFromJson(json); if (attachment) { - attachment.mimeType = ((json.MimeType || '').toLowerCase()).trim(); - attachment.fileName = json.FileName.trim(); - // if it is inline - attachment.isInline = !!json.IsInline; - // if inline image is linked with CID in html - // and 'src="cid:' or background-image:url(cid:) - attachment.isLinked = !!json.IsLinked; - attachment.isThumbnail = !!json.IsThumbnail; - attachment.cid = json.CID; - attachment.contentLocation = json.ContentLocation; - attachment.download = json.Download; - - attachment.folder = json.Folder; - attachment.uid = json.Uid; - attachment.mimeIndex = json.MimeIndex; - attachment.framed = !!json.Framed; - attachment.friendlySize = File.friendlySize(json.EstimatedSize); attachment.cidWithoutTags = attachment.cid.replace(/^<+/, '').replace(/>+$/, ''); diff --git a/dev/Model/Contact.js b/dev/Model/Contact.js index d94c45067..8ae626c5c 100644 --- a/dev/Model/Contact.js +++ b/dev/Model/Contact.js @@ -2,7 +2,6 @@ import ko from 'ko'; import { ContactPropertyModel } from 'Model/ContactProperty'; import { ContactPropertyType } from 'Common/Enums'; -import { pInt, pString } from 'Common/Utils'; import { AbstractModel } from 'Knoin/AbstractModel'; @@ -53,10 +52,6 @@ class ContactModel extends AbstractModel { static reviveFromJson(json) { const contact = super.reviveFromJson(json); if (contact) { - contact.id = pInt(json.id); - contact.display = pString(json.display); - contact.readOnly = !!json.readOnly; - let list = []; if (Array.isNotEmpty(json.properties)) { json.properties.forEach(property => { @@ -103,7 +98,7 @@ class ContactModel extends AbstractModel { * @returns {string} */ generateUid() { - return pString(this.id); + return ''+this.id; } /** diff --git a/dev/Model/ContactProperty.js b/dev/Model/ContactProperty.js index b372180e7..3eaabcb7f 100644 --- a/dev/Model/ContactProperty.js +++ b/dev/Model/ContactProperty.js @@ -42,16 +42,7 @@ class ContactPropertyModel extends AbstractModel { }; } - static reviveFromJson(json) { - const property = super.reviveFromJson(json); - if (property) { - property.type(pInt(json.type)); - property.typeStr(pString(json.typeStr)); - property.value(pString(json.value)); - return property; - } - return null; - } +// static reviveFromJson(json) {} } export { ContactPropertyModel, ContactPropertyModel as default }; diff --git a/dev/Model/Email.js b/dev/Model/Email.js index 434a78b4b..22960beb3 100644 --- a/dev/Model/Email.js +++ b/dev/Model/Email.js @@ -289,13 +289,7 @@ class EmailModel extends AbstractModel { */ static reviveFromJson(json) { const email = super.reviveFromJson(json); - if (email) { - email.name = json.Name; - email.email = json.Email; - email.dkimStatus = (json.DkimStatus || ''); - email.dkimValue = (json.DkimValue || ''); - email.clearDuplicateName(); - } + email && email.clearDuplicateName(); return email; } diff --git a/dev/Model/Filter.js b/dev/Model/Filter.js index 81b26116a..9e92c9290 100644 --- a/dev/Model/Filter.js +++ b/dev/Model/Filter.js @@ -216,10 +216,6 @@ class FilterModel extends AbstractModel { const filter = super.reviveFromJson(json); if (filter) { filter.id = pString(json.ID); - filter.name(pString(json.Name)); - filter.enabled(!!json.Enabled); - - filter.conditionsType(pString(json.ConditionsType)); filter.conditions([]); @@ -229,13 +225,6 @@ class FilterModel extends AbstractModel { ); } - filter.actionType(pString(json.ActionType)); - - filter.actionValue(pString(json.ActionValue)); - filter.actionValueSecond(pString(json.ActionValueSecond)); - filter.actionValueThird(pString(json.ActionValueThird)); - filter.actionValueFourth(pString(json.ActionValueFourth)); - filter.actionNoStop(!json.Stop); filter.actionKeep(!!json.Keep); filter.actionMarkAsRead(!!json.MarkAsRead); diff --git a/dev/Model/FilterCondition.js b/dev/Model/FilterCondition.js index 80e78cfcf..9d3624a00 100644 --- a/dev/Model/FilterCondition.js +++ b/dev/Model/FilterCondition.js @@ -1,7 +1,6 @@ import ko from 'ko'; import { FilterConditionField, FilterConditionType } from 'Common/Enums'; -import { pString } from 'Common/Utils'; import { AbstractModel } from 'Knoin/AbstractModel'; @@ -56,16 +55,7 @@ class FilterConditionModel extends AbstractModel { return true; } - static reviveFromJson(json) { - const filter = super.reviveFromJson(json); - if (filter) { - this.field(pString(json.field)); - this.type(pString(json.type)); - this.value(pString(json.value)); - this.valueSecond(pString(json.valueSecond)); - } - return filter; - } +// static reviveFromJson(json) {} toJson() { return { diff --git a/dev/Model/Folder.js b/dev/Model/Folder.js index 43394571d..f4473bcfe 100644 --- a/dev/Model/Folder.js +++ b/dev/Model/Folder.js @@ -49,17 +49,11 @@ class FolderModel extends AbstractModel { static reviveFromJson(json) { const folder = super.reviveFromJson(json); if (folder) { - folder.name(json.Name); - folder.delimiter = json.Delimiter; - folder.fullName = json.FullName; - folder.fullNameRaw = json.FullNameRaw; - folder.fullNameHash = json.FullNameHash; folder.deep = json.FullNameRaw.split(folder.delimiter).length - 1; folder.selectable = !!json.IsSelectable; folder.existen = !!json.IsExists; folder.subScribed(!!json.IsSubscribed); - folder.checkable(!!json.Checkable); folder.isInbox = ko.computed(() => FolderType.Inbox === folder.type()); diff --git a/dev/Model/Message.js b/dev/Model/Message.js index 87ad7f31e..f2dc5ea65 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -100,11 +100,6 @@ class MessageModel extends AbstractModel { const oMessageModel = super.reviveFromJson(json); if (oMessageModel) { oMessageModel.folderFullNameRaw = json.Folder; - oMessageModel.uid = json.Uid; - oMessageModel.hash = json.Hash; - oMessageModel.requestHash = json.RequestHash; - - oMessageModel.size(pInt(json.Size)); oMessageModel.from = EmailCollectionModel.reviveFromJson(json.From); oMessageModel.to = EmailCollectionModel.reviveFromJson(json.To); @@ -114,7 +109,6 @@ class MessageModel extends AbstractModel { oMessageModel.deliveredTo = EmailCollectionModel.reviveFromJson(json.DeliveredTo); oMessageModel.unsubsribeLinks = Array.isNotEmpty(json.UnsubsribeLinks) ? json.UnsubsribeLinks : []; - oMessageModel.subject(json.Subject); if (isArray(json.SubjectParts)) { oMessageModel.subjectPrefix(json.SubjectParts[0]); oMessageModel.subjectSuffix(json.SubjectParts[1]); @@ -123,8 +117,6 @@ class MessageModel extends AbstractModel { oMessageModel.subjectSuffix(oMessageModel.subject()); } - oMessageModel.dateTimeStampInUTC(pInt(json.DateTimeStampInUTC)); - oMessageModel.fromEmailString(oMessageModel.from.toString(true)); oMessageModel.fromClearEmailString(oMessageModel.from.toStringClear()); oMessageModel.toEmailsString(oMessageModel.to.toString(true)); diff --git a/dev/Model/Template.js b/dev/Model/Template.js index e2427c278..e880336d8 100644 --- a/dev/Model/Template.js +++ b/dev/Model/Template.js @@ -1,7 +1,5 @@ import ko from 'ko'; -import { pString } from 'Common/Utils'; - import { AbstractModel } from 'Knoin/AbstractModel'; class TemplateModel extends AbstractModel { @@ -10,7 +8,7 @@ class TemplateModel extends AbstractModel { * @param {string} name * @param {string} body */ - constructor(id, name, body) { + constructor(id = '', name = '', body = '') { super(); this.id = id; @@ -21,21 +19,7 @@ class TemplateModel extends AbstractModel { this.deleteAccess = ko.observable(false); } - /** - * @static - * @param {FetchJsonTemplate} json - * @returns {?TemplateModel} - */ - static reviveFromJson(json) { - const template = super.reviveFromJson(json); - if (template) { - template.id = pString(json.ID); - template.name = pString(json.Name); - template.body = pString(json.Body); - template.populated = !!json.Populated; - } - return template; - } +// static reviveFromJson(json) {} } export { TemplateModel, TemplateModel as default }; diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Response.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Response.php index c1f850240..15cbd922d 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Response.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Response.php @@ -431,7 +431,7 @@ trait Response 'FileName' => \MailSo\Base\Utils::ClearFileName( \MailSo\Base\Utils::ClearXss($mResponse->FileName(true))), 'EstimatedSize' => $mResponse->EstimatedSize(), - 'CID' => $mResponse->Cid(), + 'Cid' => $mResponse->Cid(), 'ContentLocation' => $mResponse->ContentLocation(), 'IsInline' => $mResponse->IsInline(), 'IsThumbnail' => $this->GetCapa(false, false, Capa::ATTACHMENT_THUMBNAILS), diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Template.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Template.php index 951225431..ee75d1153 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Template.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Model/Template.php @@ -86,11 +86,11 @@ class Template implements \JsonSerializable } } return array( -// '@Object' => 'Object/Template', - 'ID' => $this->Id(), - 'Name' => $this->Name(), - 'Body' => $sBody, - 'Populated' => $bPopulated + '@Object' => 'Object/Template', + 'id' => $this->Id(), + 'name' => $this->Name(), + 'body' => $sBody, + 'populated' => $bPopulated ); } diff --git a/vendors/knockout/build/output/knockout-latest.debug.js b/vendors/knockout/build/output/knockout-latest.debug.js index d59863ed9..1fcab31e3 100644 --- a/vendors/knockout/build/output/knockout-latest.debug.js +++ b/vendors/knockout/build/output/knockout-latest.debug.js @@ -1046,6 +1046,7 @@ ko.isObservableArray = instance => { }; ko.exportSymbol('observableArray', ko.observableArray); +ko.exportSymbol('isObservableArray', ko.isObservableArray); var arrayChangeEventName = 'arrayChange'; ko.extenders['trackArrayChanges'] = (target, options) => { // Use the provided options--each call to trackArrayChanges overwrites the previously set options diff --git a/vendors/knockout/build/output/knockout-latest.js b/vendors/knockout/build/output/knockout-latest.js index ae9e97590..8d01335d2 100644 --- a/vendors/knockout/build/output/knockout-latest.js +++ b/vendors/knockout/build/output/knockout-latest.js @@ -4,92 +4,92 @@ * License: MIT (http://www.opensource.org/licenses/mit-license.php) */ -(E=>{function I(b,c){return null===b||typeof b in ha?b===c:!1}function G(b,c){var e;return()=>{e||(e=a.a.setTimeout(()=>{e=void 0;b()},c))}}function J(b,c){var e;return()=>{clearTimeout(e);e=a.a.setTimeout(b,c)}}function U(b,c){null!==c&&c.o&&c.o()}function Y(b,c){var e=this.Fc,f=e[F];f.ia||(this.lb&&this.Qa[c]?(e.Sb(c,b,this.Qa[c]),this.Qa[c]=null,--this.lb):f.u[c]||e.Sb(c,b,f.A?{Y:b}:e.sc(b)),b.ta&&b.wc())}var V=E.document,Z={},a="undefined"!==typeof Z?Z:{};a.s=(b,c)=>{b=b.split(".");for(var e= -a,f=0;f{b[c]=e};a.version="3.5.1-sm";a.s("version",a.version);a.a=(()=>{const b=(h,l,d,g)=>Array.prototype[h].call(l,d,g),c=(h,l)=>{l&&Object.entries(l).forEach(d=>h[d[0]]=d[1]);return h},e=(h,l)=>{h.__proto__=l;return h};var f={__proto__:[]}instanceof Array;return{Z:(h,l,d)=>Array.prototype.forEach.call(h,l,d),$:(h,l)=>Array.prototype.indexOf.call(h,l,void 0),Vb:(h,l,d)=>b("find",h,(g,k,m)=>l.call(d,g,k,m)),Ma:(h,l)=>{l=a.a.$(h,l);0{if(l instanceof Array)h.push.apply(h,l);else for(var d=0,g=l.length;dh&&Object.entries(h).forEach(d=>l(d[0],d[1])),Ea:(h,l,d)=>{if(!h)return h;var g={};Object.entries(h).forEach(k=>g[k[0]]=l.call(d,k[1],k[0],h));return g},ob:h=>{for(;h.firstChild;)a.removeNode(h.firstChild)},wb:h=>{var l=a.a.qa(h),d=(l[0]&&l[0].ownerDocument||V).createElement("div");h.forEach(g=>d.append(a.oa(g)));return d}, +(E=>{function I(b,c){return null===b||typeof b in ha?b===c:!1}function G(b,c){var e;return()=>{e||(e=a.a.setTimeout(()=>{e=void 0;b()},c))}}function J(b,c){var e;return()=>{clearTimeout(e);e=a.a.setTimeout(b,c)}}function U(b,c){null!==c&&c.s&&c.s()}function Y(b,c){var e=this.Gc,f=e[F];f.ia||(this.lb&&this.Qa[c]?(e.Sb(c,b,this.Qa[c]),this.Qa[c]=null,--this.lb):f.u[c]||e.Sb(c,b,f.A?{Y:b}:e.tc(b)),b.ta&&b.xc())}var V=E.document,Z={},a="undefined"!==typeof Z?Z:{};a.m=(b,c)=>{b=b.split(".");for(var e= +a,f=0;f{b[c]=e};a.version="3.5.1-sm";a.m("version",a.version);a.a=(()=>{const b=(h,l,d,g)=>Array.prototype[h].call(l,d,g),c=(h,l)=>{l&&Object.entries(l).forEach(d=>h[d[0]]=d[1]);return h},e=(h,l)=>{h.__proto__=l;return h};var f={__proto__:[]}instanceof Array;return{Z:(h,l,d)=>Array.prototype.forEach.call(h,l,d),$:(h,l)=>Array.prototype.indexOf.call(h,l,void 0),Vb:(h,l,d)=>b("find",h,(g,k,m)=>l.call(d,g,k,m)),Ma:(h,l)=>{l=a.a.$(h,l);0{if(l instanceof Array)h.push.apply(h,l);else for(var d=0,g=l.length;dh&&Object.entries(h).forEach(d=>l(d[0],d[1])),Ea:(h,l,d)=>{if(!h)return h;var g={};Object.entries(h).forEach(k=>g[k[0]]=l.call(d,k[1],k[0],h));return g},ob:h=>{for(;h.firstChild;)a.removeNode(h.firstChild)},wb:h=>{var l=a.a.qa(h),d=(l[0]&&l[0].ownerDocument||V).createElement("div");h.forEach(g=>d.append(a.oa(g)));return d}, Oa:(h,l)=>b("map",h,l?d=>a.oa(d.cloneNode(!0)):d=>d.cloneNode(!0)),Fa:(h,l)=>{a.a.ob(h);l&&h.append.apply(h,l)},Ba:(h,l)=>{if(h.length){for(l=8===l.nodeType&&l.parentNode||l;h.length&&h[0].parentNode!==l;)h.splice(0,1);for(;1null==h?"":h.trim?h.trim():h.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),cd:(h,l)=>{h=h||"";return l.length> -h.length?!1:h.substring(0,l.length)===l},Ic:(h,l)=>l.contains(1!==h.nodeType?h.parentNode:h),nb:h=>a.a.Ic(h,h.ownerDocument.documentElement),da:h=>h&&h.tagName&&h.tagName.toLowerCase(),Zb:h=>a.onError?function(){try{return h.apply(this,arguments)}catch(l){throw a.onError&&a.onError(l),l;}}:h,setTimeout:(h,l)=>setTimeout(a.a.Zb(h),l),cc:h=>setTimeout(()=>{a.onError&&a.onError(h);throw h;},0),K:(h,l,d)=>{h.addEventListener(l,a.a.Zb(d),!1)},tc:(h,l)=>{if(!h||!h.nodeType)throw Error("element must be a DOM node when calling triggerEvent"); -h.dispatchEvent(new Event(l))},g:h=>a.O(h)?h():h,Wc:h=>a.O(h)?h.D():h,Hb:(h,l,d)=>{if(l){var g=d?"add":"remove";l.split(/\s+/).forEach(k=>h.classList[g](k))}},Bb:(h,l)=>h.textContent=a.a.g(l)||"",qa:h=>Array.from(h)}})();a.s("utils",a.a);a.s("unwrap",a.a.g);a.a.b=new function(){var b=0,c="__ko__"+Date.now(),e=(f,h)=>{var l=f[c];!l&&h&&(l=f[c]={});return l};return{get:(f,h)=>(f=e(f,!1))&&f[h],set:(f,h,l)=>{(f=e(f,void 0!==l))&&(f[h]=l)},rb:(f,h,l)=>{f=e(f,!0);return f[h]||(f[h]=l)},clear:f=>f[c]?(delete f[c], +h.length?!1:h.substring(0,l.length)===l},Jc:(h,l)=>l.contains(1!==h.nodeType?h.parentNode:h),nb:h=>a.a.Jc(h,h.ownerDocument.documentElement),da:h=>h&&h.tagName&&h.tagName.toLowerCase(),Zb:h=>a.onError?function(){try{return h.apply(this,arguments)}catch(l){throw a.onError&&a.onError(l),l;}}:h,setTimeout:(h,l)=>setTimeout(a.a.Zb(h),l),cc:h=>setTimeout(()=>{a.onError&&a.onError(h);throw h;},0),K:(h,l,d)=>{h.addEventListener(l,a.a.Zb(d),!1)},uc:(h,l)=>{if(!h||!h.nodeType)throw Error("element must be a DOM node when calling triggerEvent"); +h.dispatchEvent(new Event(l))},g:h=>a.O(h)?h():h,Wc:h=>a.O(h)?h.D():h,Hb:(h,l,d)=>{if(l){var g=d?"add":"remove";l.split(/\s+/).forEach(k=>h.classList[g](k))}},Bb:(h,l)=>h.textContent=a.a.g(l)||"",qa:h=>Array.from(h)}})();a.m("utils",a.a);a.m("unwrap",a.a.g);a.a.b=new function(){var b=0,c="__ko__"+Date.now(),e=(f,h)=>{var l=f[c];!l&&h&&(l=f[c]={});return l};return{get:(f,h)=>(f=e(f,!1))&&f[h],set:(f,h,l)=>{(f=e(f,void 0!==l))&&(f[h]=l)},rb:(f,h,l)=>{f=e(f,!0);return f[h]||(f[h]=l)},clear:f=>f[c]?(delete f[c], !0):!1,X:()=>b++ +c}};a.a.N=new function(){function b(d,g){var k=a.a.b.get(d,f);void 0===k&&g&&(k=[],a.a.b.set(d,f,k));return k}function c(d){var g=b(d,!1);if(g){g=g.slice(0);for(var k=0;k{if("function"!=typeof g)throw Error("Callback must be a function"); -b(d,!0).push(g)},Ab:(d,g)=>{var k=b(d,!1);k&&(a.a.Ma(k,g),0==k.length&&a.a.b.set(d,f,void 0))},oa:d=>{a.m.I(()=>{h[d.nodeType]&&(c(d),l[d.nodeType]&&e(d.getElementsByTagName("*")))});return d},removeNode:d=>{a.oa(d);d.parentNode&&d.parentNode.removeChild(d)}}};a.oa=a.a.N.oa;a.removeNode=a.a.N.removeNode;a.s("utils.domNodeDisposal",a.a.N);a.s("utils.domNodeDisposal.addDisposeCallback",a.a.N.wa);(()=>{var b=[0,"",""],c=[1,"","
"],e=[3,"","
"],f=[1, +b(d,!0).push(g)},Ab:(d,g)=>{var k=b(d,!1);k&&(a.a.Ma(k,g),0==k.length&&a.a.b.set(d,f,void 0))},oa:d=>{a.o.I(()=>{h[d.nodeType]&&(c(d),l[d.nodeType]&&e(d.getElementsByTagName("*")))});return d},removeNode:d=>{a.oa(d);d.parentNode&&d.parentNode.removeChild(d)}}};a.oa=a.a.N.oa;a.removeNode=a.a.N.removeNode;a.m("utils.domNodeDisposal",a.a.N);a.m("utils.domNodeDisposal.addDisposeCallback",a.a.N.wa);(()=>{var b=[0,"",""],c=[1,"","
"],e=[3,"","
"],f=[1, ""],h={thead:c,tbody:c,tfoot:c,tr:[2,"","
"],td:e,th:e,option:f,optgroup:f};a.a.Ya=(l,d)=>{var g=d;g||(g=V);d=g.parentWindow||g.defaultView||E;var k=a.a.Db(l).toLowerCase();g=g.createElement("div");var m=(k=k.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&h[k[1]]||b;k=m[0];l="ignored
"+m[1]+l+m[2]+"
";for("function"==typeof d.innerShiv?g.append(d.innerShiv(l)):g.innerHTML=l;k--;)g=g.lastChild;return a.a.qa(g.lastChild.childNodes)}; -a.a.Uc=(l,d)=>{l=a.a.Ya(l,d);return l.length&&l[0].parentElement||a.a.wb(l)};a.a.rc=(l,d)=>{a.a.ob(l);d=a.a.g(d);if(null!==d&&void 0!==d){"string"!=typeof d&&(d=d.toString());d=a.a.Ya(d,l.ownerDocument);for(var g=0;g{function b(){if(e)for(var d=e,g=0,k;hd){if(5E3<=++g){h=e;a.a.cc(Error("'Too much recursion' after processing "+g+" task groups."));break}d=e}try{k()}catch(m){a.a.cc(m)}}h=e=c.length=0}var c=[],e=0,f=1,h=0,l=(d=>{var g= -V.createElement("div");(new MutationObserver(d)).observe(g,{attributes:!0});return()=>g.classList.toggle("foo")})(b);return{pc:d=>{e||l(b);c[e++]=d;return f++},cancel:d=>{d-=f-e;d>=h&&d{b.throttleEvaluation=c;var e=null;return a.i({read:b,write:f=>{clearTimeout(e);e=a.a.setTimeout(()=>b(f),c)}})},rateLimit:(b,c)=>{if("number"==typeof c)var e=c;else{e=c.timeout;var f=c.method}var h="function"==typeof f?f:"notifyWhenChangesStop"==f?J:G;b.vb(l=> -h(l,e,c))},notify:(b,c)=>{b.equalityComparer="always"==c?null:I}};var ha={undefined:1,"boolean":1,number:1,string:1};a.s("extenders",a.pb);a.Eb=function(b,c,e){this.Y=b;this.Jb=c;this.Kb=e;this.eb=!1;this.Ja=this.fb=null;a.ba(this,"dispose",this.o);a.ba(this,"disposeWhenNodeIsRemoved",this.j)};a.Eb.prototype.o=function(){this.eb||(this.Ja&&a.a.N.Ab(this.fb,this.Ja),this.eb=!0,this.Kb(),this.Y=this.Jb=this.Kb=this.fb=this.Ja=null)};a.Eb.prototype.j=function(b){this.fb=b;a.a.N.wa(b,this.Ja=this.o.bind(this))}; -a.T=function(){a.a.Za(this,O);O.Va(this)};var O={Va:b=>{b.L={change:[]};b.Qb=1},subscribe:function(b,c,e){var f=this;e=e||"change";var h=new a.Eb(f,c?b.bind(c):b,()=>{a.a.Ma(f.L[e],h);f.La&&f.La(e)});f.xa&&f.xa(e);f.L[e]||(f.L[e]=[]);f.L[e].push(h);return h},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.ab();if(this.Ca(c)){c="change"===c&&this.uc||this.L[c].slice(0);try{a.m.Wb();for(var e=0,f;f=c[e];++e)f.eb||f.Jb(b)}finally{a.m.end()}}},Ta:function(){return this.Qb},Nc:function(b){return this.Ta()!== -b},ab:function(){++this.Qb},vb:function(b){var c=this,e=a.O(c),f,h,l,d,g;c.Ka||(c.Ka=c.notifySubscribers,c.notifySubscribers=function(m,p){p&&"change"!==p?"beforeChange"===p?this.Nb(m):this.Ka(m,p):this.Ob(m)});var k=b(()=>{c.ta=!1;e&&d===c&&(d=c.Lb?c.Lb():c());var m=h||g&&c.Xa(l,d);g=h=f=!1;m&&c.Ka(l=d)});c.Ob=(m,p)=>{p&&c.ta||(g=!p);c.uc=c.L.change.slice(0);c.ta=f=!0;d=m;k()};c.Nb=m=>{f||(l=m,c.Ka(m,"beforeChange"))};c.Pb=()=>{g=!0};c.wc=()=>{c.Xa(l,c.D(!0))&&(h=!0)}},Ca:function(b){return this.L[b]&& -this.L[b].length},Lc:function(b){if(b)return this.L[b]&&this.L[b].length||0;var c=0;a.a.J(this.L,(e,f)=>c+=f.length);return c},Xa:function(b,c){return!this.equalityComparer||!this.equalityComparer(b,c)},toString:()=>"[object Object]",extend:function(b){var c=this;b&&a.a.J(b,(e,f)=>{e=a.pb[e];"function"==typeof e&&(c=e(c,f)||c)});return c}};a.ba(O,"init",O.Va);a.ba(O,"subscribe",O.subscribe);a.ba(O,"extend",O.extend);a.ba(O,"getSubscriptionsCount",O.Lc);a.a.na&&a.a.setPrototypeOf(O,Function.prototype); -a.T.fn=O;a.Qc=b=>null!=b&&"function"==typeof b.subscribe&&"function"==typeof b.notifySubscribers;a.ya=a.m=(()=>{function b(l){e.push(f);f=l}function c(){f=e.pop()}var e=[],f,h=0;return{Wb:b,end:c,oc:l=>{if(f){if(!a.Qc(l))throw Error("Only subscribable things can act as dependencies");f.Cc.call(f.Dc,l,l.vc||(l.vc=++h))}},I:(l,d,g)=>{try{return b(),l.apply(d,g||[])}finally{c()}},Sa:()=>{if(f)return f.i.Sa()},qb:()=>{if(f)return f.i.qb()},tb:()=>{if(f)return f.tb},i:()=>{if(f)return f.i}}})();var P= -Symbol("_latestValue");a.ka=b=>{function c(){if(0{if((b="function"==typeof b&&b[R])&&b!==Q[R]&&b!==a.i.fn[R])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.kc=b=>"function"==typeof b&&(b[R]===Q[R]||b[R]===a.i.fn[R]&&b.ic);a.s("observable",a.ka);a.s("isObservable",a.O);a.s("observable.fn",Q);a.ba(Q,"valueHasMutated",Q.Ia);a.ra=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); +a.a.Uc=(l,d)=>{l=a.a.Ya(l,d);return l.length&&l[0].parentElement||a.a.wb(l)};a.a.sc=(l,d)=>{a.a.ob(l);d=a.a.g(d);if(null!==d&&void 0!==d){"string"!=typeof d&&(d=d.toString());d=a.a.Ya(d,l.ownerDocument);for(var g=0;g{function b(){if(e)for(var d=e,g=0,k;hd){if(5E3<=++g){h=e;a.a.cc(Error("'Too much recursion' after processing "+g+" task groups."));break}d=e}try{k()}catch(m){a.a.cc(m)}}h=e=c.length=0}var c=[],e=0,f=1,h=0,l=(d=>{var g= +V.createElement("div");(new MutationObserver(d)).observe(g,{attributes:!0});return()=>g.classList.toggle("foo")})(b);return{qc:d=>{e||l(b);c[e++]=d;return f++},cancel:d=>{d-=f-e;d>=h&&d{b.throttleEvaluation=c;var e=null;return a.i({read:b,write:f=>{clearTimeout(e);e=a.a.setTimeout(()=>b(f),c)}})},rateLimit:(b,c)=>{if("number"==typeof c)var e=c;else{e=c.timeout;var f=c.method}var h="function"==typeof f?f:"notifyWhenChangesStop"==f?J:G;b.vb(l=> +h(l,e,c))},notify:(b,c)=>{b.equalityComparer="always"==c?null:I}};var ha={undefined:1,"boolean":1,number:1,string:1};a.m("extenders",a.pb);a.Eb=function(b,c,e){this.Y=b;this.Jb=c;this.Kb=e;this.eb=!1;this.Ja=this.fb=null;a.ba(this,"dispose",this.s);a.ba(this,"disposeWhenNodeIsRemoved",this.j)};a.Eb.prototype.s=function(){this.eb||(this.Ja&&a.a.N.Ab(this.fb,this.Ja),this.eb=!0,this.Kb(),this.Y=this.Jb=this.Kb=this.fb=this.Ja=null)};a.Eb.prototype.j=function(b){this.fb=b;a.a.N.wa(b,this.Ja=this.s.bind(this))}; +a.T=function(){a.a.Za(this,O);O.Va(this)};var O={Va:b=>{b.L={change:[]};b.Qb=1},subscribe:function(b,c,e){var f=this;e=e||"change";var h=new a.Eb(f,c?b.bind(c):b,()=>{a.a.Ma(f.L[e],h);f.La&&f.La(e)});f.xa&&f.xa(e);f.L[e]||(f.L[e]=[]);f.L[e].push(h);return h},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.ab();if(this.Ca(c)){c="change"===c&&this.vc||this.L[c].slice(0);try{a.o.Wb();for(var e=0,f;f=c[e];++e)f.eb||f.Jb(b)}finally{a.o.end()}}},Ta:function(){return this.Qb},Oc:function(b){return this.Ta()!== +b},ab:function(){++this.Qb},vb:function(b){var c=this,e=a.O(c),f,h,l,d,g;c.Ka||(c.Ka=c.notifySubscribers,c.notifySubscribers=function(m,p){p&&"change"!==p?"beforeChange"===p?this.Nb(m):this.Ka(m,p):this.Ob(m)});var k=b(()=>{c.ta=!1;e&&d===c&&(d=c.Lb?c.Lb():c());var m=h||g&&c.Xa(l,d);g=h=f=!1;m&&c.Ka(l=d)});c.Ob=(m,p)=>{p&&c.ta||(g=!p);c.vc=c.L.change.slice(0);c.ta=f=!0;d=m;k()};c.Nb=m=>{f||(l=m,c.Ka(m,"beforeChange"))};c.Pb=()=>{g=!0};c.xc=()=>{c.Xa(l,c.D(!0))&&(h=!0)}},Ca:function(b){return this.L[b]&& +this.L[b].length},Mc:function(b){if(b)return this.L[b]&&this.L[b].length||0;var c=0;a.a.J(this.L,(e,f)=>c+=f.length);return c},Xa:function(b,c){return!this.equalityComparer||!this.equalityComparer(b,c)},toString:()=>"[object Object]",extend:function(b){var c=this;b&&a.a.J(b,(e,f)=>{e=a.pb[e];"function"==typeof e&&(c=e(c,f)||c)});return c}};a.ba(O,"init",O.Va);a.ba(O,"subscribe",O.subscribe);a.ba(O,"extend",O.extend);a.ba(O,"getSubscriptionsCount",O.Mc);a.a.na&&a.a.setPrototypeOf(O,Function.prototype); +a.T.fn=O;a.Qc=b=>null!=b&&"function"==typeof b.subscribe&&"function"==typeof b.notifySubscribers;a.ya=a.o=(()=>{function b(l){e.push(f);f=l}function c(){f=e.pop()}var e=[],f,h=0;return{Wb:b,end:c,pc:l=>{if(f){if(!a.Qc(l))throw Error("Only subscribable things can act as dependencies");f.Dc.call(f.Ec,l,l.wc||(l.wc=++h))}},I:(l,d,g)=>{try{return b(),l.apply(d,g||[])}finally{c()}},Sa:()=>{if(f)return f.i.Sa()},qb:()=>{if(f)return f.i.qb()},tb:()=>{if(f)return f.tb},i:()=>{if(f)return f.i}}})();var P= +Symbol("_latestValue");a.ka=b=>{function c(){if(0{if((b="function"==typeof b&&b[R])&&b!==Q[R]&&b!==a.i.fn[R])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!b};a.lc=b=>"function"==typeof b&&(b[R]===Q[R]||b[R]===a.i.fn[R]&&b.ic);a.m("observable",a.ka);a.m("isObservable",a.O);a.m("observable.fn",Q);a.ba(Q,"valueHasMutated",Q.Ia);a.ra=b=>{b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); b=a.ka(b);a.a.Za(b,a.ra.fn);return b.extend({trackArrayChanges:!0})};a.ra.fn={remove:function(b){for(var c=this.D(),e=[],f="function"!=typeof b||a.O(b)?function(d){return d===b}:b,h=0;h{a.ra.fn[b]=function(){var c=this.D();this.bb();this.Yb(c,b,arguments);var e=c[b].apply(c,arguments);this.Ia();return e===c?this:e}});["slice"].forEach(b=>{a.ra.fn[b]=function(){var c=this();return c[b].apply(c,arguments)}});a.Pc=b=>a.O(b)&&"function"==typeof b.remove&&"function"==typeof b.push; -a.s("observableArray",a.ra);a.pb.trackArrayChanges=(b,c)=>{function e(){function q(){if(g){var u=[].concat(b.D()||[]);if(b.Ca("arrayChange")){if(!h||1++g,null,"spectate"),k=[].concat(b.D()||[]),h=null,l=b.subscribe(q))}b.jb={};c&&"object"==typeof c&&a.a.extend(b.jb,c);b.jb.sparse=!0;if(!b.Yb){var f=!1,h=null,l,d,g=0,k,m=b.xa,p=b.La;b.xa=q=>{m&&m.call(b,q);"arrayChange"===q&& -e()};b.La=q=>{p&&p.call(b,q);"arrayChange"!==q||b.Ca("arrayChange")||(l&&l.o(),d&&d.o(),d=l=null,f=!1,k=void 0)};b.Yb=(q,u,y)=>{function t(C,A,H){return x[x.length]={status:C,value:A,index:H}}if(f&&!g){var x=[],n=q.length,r=y.length,v=0;switch(u){case "push":v=n;case "unshift":for(u=0;uy[0]?n+y[0]:y[0]),n);n=1===r?n:Math.min(u+(y[1]||0),n);r=u+r-2;v=Math.max(n,r);for(var w= -[],B=[],z=2;ub[e.ua]=e.Y);return b},sb:function(b){if(!this[F].M)return!1;var c=this.qb();return-1!==a.a.$(c,b)?!0:!!a.a.Vb(c,e=>e.sb&&e.sb(b))},Sb:function(b,c,e){if(this[F].zb&&c===this)throw Error("A 'pure' computed must not be called recursively");this[F].u[b]=e;e.ua=this[F].M++;e.va=c.Ta()},Da:function(){var b, -c=this[F].u;for(b in c)if(Object.prototype.hasOwnProperty.call(c,b)){var e=c[b];if(this.sa&&e.Y.ta||e.Y.Nc(e.va))return!0}},fd:function(){this.sa&&!this[F].Wa&&this.sa(!1)},ha:function(){var b=this[F];return b.ca||0b.V(!0),c)):b.sa?b.sa(!0):b.V(!0)},V:function(b){var c=this[F], -e=c.za,f=!1;if(!c.Wa&&!c.ia){if(c.j&&!a.a.nb(c.j)||e&&e()){if(!c.Fb){this.o();return}}else c.Fb=!1;c.Wa=!0;try{f=this.Kc(b)}finally{c.Wa=!1}return f}},Kc:function(b){var c=this[F],e=c.zb?void 0:!c.M;var f={Fc:this,Qa:c.u,lb:c.M};a.m.Wb({Dc:f,Cc:Y,i:this,tb:e});c.u={};c.M=0;var h=this.Jc(c,f);c.M?f=this.Xa(c.P,h):(this.o(),f=!0);f&&(c.A?this.ab():this.notifySubscribers(c.P,"beforeChange"),c.P=h,this.notifySubscribers(c.P,"spectate"),!c.A&&b&&this.notifySubscribers(c.P),this.Pb&&this.Pb());e&&this.notifySubscribers(c.P, -"awake");return f},Jc:(b,c)=>{try{var e=b.nc;return b.Ra?e.call(b.Ra):e()}finally{a.m.end(),c.lb&&!b.A&&a.a.J(c.Qa,U),b.ja=b.ca=!1}},D:function(b){var c=this[F];(c.ca&&(b||!c.M)||c.A&&this.Da())&&this.V();return c.P},vb:function(b){a.T.fn.vb.call(this,b);this.Lb=function(){this[F].A||(this[F].ja?this.V():this[F].ca=!1);return this[F].P};this.sa=function(c){this.Nb(this[F].P);this[F].ca=!0;c&&(this[F].ja=!0);this.Ob(this,!c)}},o:function(){var b=this[F];!b.A&&b.u&&a.a.J(b.u,(c,e)=>e.o&&e.o());b.j&& -b.mb&&a.a.N.Ab(b.j,b.mb);b.u=void 0;b.M=0;b.ia=!0;b.ja=!1;b.ca=!1;b.A=!1;b.j=void 0;b.za=void 0;b.nc=void 0;this.ic||(b.Ra=void 0)}},ia={xa:function(b){var c=this,e=c[F];if(!e.ia&&e.A&&"change"==b){e.A=!1;if(e.ja||c.Da())e.u=null,e.M=0,c.V()&&c.ab();else{var f=[];a.a.J(e.u,(h,l)=>f[l.ua]=h);a.a.Z(f,(h,l)=>{var d=e.u[h],g=c.sc(d.Y);g.ua=l;g.va=d.va;e.u[h]=g});c.Da()&&c.V()&&c.ab()}e.ia||c.notifySubscribers(e.P,"awake")}},La:function(b){var c=this[F];c.ia||"change"!=b||this.Ca("change")||(a.a.J(c.u, -(e,f)=>{f.o&&(c.u[e]={Y:f.Y,ua:f.ua,va:f.va},f.o())}),c.A=!0,this.notifySubscribers(void 0,"asleep"))},Ta:function(){var b=this[F];b.A&&(b.ja||this.Da())&&this.V();return a.T.fn.Ta.call(this)}},ja={xa:function(b){"change"!=b&&"beforeChange"!=b||this.D()}};a.a.na&&a.a.setPrototypeOf(W,a.T.fn);W[a.ka.xc]=a.i;a.s("computed",a.i);a.s("computed.fn",W);a.ba(W,"dispose",W.o);a.Yc=b=>{if("function"===typeof b)return a.i(b,void 0,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.i(b,void 0)};(()=>{a.B={S:b=> -{switch(a.a.da(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.b.get(b,a.c.options.yb):b.value;case "select":return 0<=b.selectedIndex?a.B.S(b.options[b.selectedIndex]):void 0;default:return b.value}},cb:(b,c,e)=>{switch(a.a.da(b)){case "option":"string"===typeof c?(a.a.b.set(b,a.c.options.yb,void 0),delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.b.set(b,a.c.options.yb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:"");break;case "select":if(""===c||null=== -c)c=void 0;for(var f=-1,h=0,l=b.options.length,d;h{function b(g){g=a.a.Db(g);123===g.charCodeAt(0)&&(g=g.slice(1,-1));g+="\n,";var k=[],m=g.match(f),p=[],q=0;if(1=q){k.push(x&&p.length?{key:x,value:p.join("")}:{unknown:x||p.join("")});var x= -q=0;p=[];continue}}else if(58===t){if(!q&&!x&&1===p.length){x=p.pop();continue}}else if(47===t&&1m(t.key||t.unknown,t.value));q.length&&m("_ko_property_writers","{"+q.join(",")+" }");return p.join(",")},Sc:(g,k)=>{for(var m=0;m{if(g&&a.O(g))!a.kc(g)||q&&g.D()===p||g(p);else if((g=k.get("_ko_property_writers"))&& -g[m])g[m](p)}}})();(()=>{function b(d){return 8==d.nodeType&&f.test(d.nodeValue)}function c(d){return 8==d.nodeType&&h.test(d.nodeValue)}function e(d,g){for(var k=d,m=1,p=[];k=k.nextSibling;){if(c(k)&&(a.a.b.set(k,l,!0),m--,0===m))return p;p.push(k);b(k)&&m++}if(!g)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}var f=/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__";a.h={la:{},childNodes:d=>b(d)?e(d):d.childNodes,Aa:d=>{if(b(d)){d=a.h.childNodes(d); -for(var g=0,k=d.length;g{if(b(d)){a.h.Aa(d);d=d.nextSibling;for(var k=0,m=g.length;k{if(b(d)){var k=d.nextSibling;d=d.parentNode}else k=d.firstChild;d.insertBefore(g,k)},jc:(d,g,k)=>{k?(k=k.nextSibling,b(d)&&(d=d.parentNode),d.insertBefore(g,k)):a.h.prepend(d,g)},firstChild:d=>{if(!b(d)){if(d.firstChild&&c(d.firstChild))throw Error("Found invalid end comment, as the first child of "+ -d);return d.firstChild}return!d.nextSibling||c(d.nextSibling)?null:d.nextSibling},nextSibling:d=>{if(b(d)){var g=e(d,void 0);d=g?0(d=d.nodeValue.match(f))?d[1]:null}})();(function(){a.aa=function(){this.Bc={}};a.a.extend(a.aa.prototype,{nodeHasBindings:b=> -{switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.l.getComponentNameForNode(b);case 8:return a.h.Mc(b);default:return!1}},getBindings:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b):null;return a.l.Rb(e,b,c,!1)},getBindingAccessors:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b,{valueAccessors:!0}):null;return a.l.Rb(e,b,c,!0)},getBindingsString:b=>{switch(b.nodeType){case 1:return b.getAttribute("data-bind"); -case 8:return a.h.dd(b)}return null},parseBindingsString:function(b,c,e,f){try{var h=this.Bc,l=b+(f&&f.valueAccessors||""),d;if(!(d=h[l])){var g="with($context){with($data||{}){return{"+a.H.Xc(b,f)+"}}}";var k=new Function("$context","$element",g);d=h[l]=k}return d(c,e)}catch(m){throw m.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+m.message,m;}}});a.aa.instance=new a.aa})();(()=>{function b(n){var r=(n=a.a.b.get(n,x))&&n.G;r&&(n.G=null,r.mc())}function c(n,r,v){this.node= -n;this.Xb=r;this.Na=[];this.C=!1;r.G||a.a.N.wa(n,b);v&&v.G&&(v.G.Na.push(n),this.gb=v)}function e(n){return a.a.Ea(a.m.I(n),(r,v)=>()=>n()[v])}function f(n,r,v){return"function"===typeof n?e(n.bind(null,r,v)):a.a.Ea(n,w=>()=>w)}function h(n,r){return e(this.getBindings.bind(this,n,r))}function l(n,r){var v=a.h.firstChild(r);if(v){var w,B=a.aa.instance,z=B.preprocessNode;if(z){for(;w=v;)v=a.h.nextSibling(w),z.call(B,w);v=a.h.firstChild(r)}for(;w=v;)v=a.h.nextSibling(w),d(n,w)}a.f.notify(r,a.f.C)}function d(n, +this.remove(function(f){return 0<=a.a.$(b,f)}):[]},indexOf:function(b){return a.a.$(this(),b)}};a.a.na&&a.a.setPrototypeOf(a.ra.fn,a.ka.fn);"pop push reverse shift sort splice unshift".split(" ").forEach(b=>{a.ra.fn[b]=function(){var c=this.D();this.bb();this.Yb(c,b,arguments);var e=c[b].apply(c,arguments);this.Ia();return e===c?this:e}});["slice"].forEach(b=>{a.ra.fn[b]=function(){var c=this();return c[b].apply(c,arguments)}});a.kc=b=>a.O(b)&&"function"==typeof b.remove&&"function"==typeof b.push; +a.m("observableArray",a.ra);a.m("isObservableArray",a.kc);a.pb.trackArrayChanges=(b,c)=>{function e(){function q(){if(g){var u=[].concat(b.D()||[]);if(b.Ca("arrayChange")){if(!h||1++g,null,"spectate"),k=[].concat(b.D()||[]),h=null,l=b.subscribe(q))}b.jb={};c&&"object"==typeof c&&a.a.extend(b.jb,c);b.jb.sparse=!0;if(!b.Yb){var f=!1,h=null,l,d,g=0,k,m=b.xa,p=b.La;b.xa=q=>{m&& +m.call(b,q);"arrayChange"===q&&e()};b.La=q=>{p&&p.call(b,q);"arrayChange"!==q||b.Ca("arrayChange")||(l&&l.s(),d&&d.s(),d=l=null,f=!1,k=void 0)};b.Yb=(q,u,y)=>{function t(C,A,H){return x[x.length]={status:C,value:A,index:H}}if(f&&!g){var x=[],n=q.length,r=y.length,v=0;switch(u){case "push":v=n;case "unshift":for(u=0;uy[0]?n+y[0]:y[0]),n);n=1===r?n:Math.min(u+(y[1]||0),n); +r=u+r-2;v=Math.max(n,r);for(var w=[],B=[],z=2;ub[e.ua]=e.Y);return b},sb:function(b){if(!this[F].M)return!1;var c=this.qb();return-1!==a.a.$(c,b)?!0:!!a.a.Vb(c,e=>e.sb&&e.sb(b))},Sb:function(b,c,e){if(this[F].zb&&c===this)throw Error("A 'pure' computed must not be called recursively");this[F].u[b]=e;e.ua=this[F].M++; +e.va=c.Ta()},Da:function(){var b,c=this[F].u;for(b in c)if(Object.prototype.hasOwnProperty.call(c,b)){var e=c[b];if(this.sa&&e.Y.ta||e.Y.Oc(e.va))return!0}},fd:function(){this.sa&&!this[F].Wa&&this.sa(!1)},ha:function(){var b=this[F];return b.ca||0b.V(!0),c)):b.sa?b.sa(!0): +b.V(!0)},V:function(b){var c=this[F],e=c.za,f=!1;if(!c.Wa&&!c.ia){if(c.j&&!a.a.nb(c.j)||e&&e()){if(!c.Fb){this.s();return}}else c.Fb=!1;c.Wa=!0;try{f=this.Lc(b)}finally{c.Wa=!1}return f}},Lc:function(b){var c=this[F],e=c.zb?void 0:!c.M;var f={Gc:this,Qa:c.u,lb:c.M};a.o.Wb({Ec:f,Dc:Y,i:this,tb:e});c.u={};c.M=0;var h=this.Kc(c,f);c.M?f=this.Xa(c.P,h):(this.s(),f=!0);f&&(c.A?this.ab():this.notifySubscribers(c.P,"beforeChange"),c.P=h,this.notifySubscribers(c.P,"spectate"),!c.A&&b&&this.notifySubscribers(c.P), +this.Pb&&this.Pb());e&&this.notifySubscribers(c.P,"awake");return f},Kc:(b,c)=>{try{var e=b.oc;return b.Ra?e.call(b.Ra):e()}finally{a.o.end(),c.lb&&!b.A&&a.a.J(c.Qa,U),b.ja=b.ca=!1}},D:function(b){var c=this[F];(c.ca&&(b||!c.M)||c.A&&this.Da())&&this.V();return c.P},vb:function(b){a.T.fn.vb.call(this,b);this.Lb=function(){this[F].A||(this[F].ja?this.V():this[F].ca=!1);return this[F].P};this.sa=function(c){this.Nb(this[F].P);this[F].ca=!0;c&&(this[F].ja=!0);this.Ob(this,!c)}},s:function(){var b=this[F]; +!b.A&&b.u&&a.a.J(b.u,(c,e)=>e.s&&e.s());b.j&&b.mb&&a.a.N.Ab(b.j,b.mb);b.u=void 0;b.M=0;b.ia=!0;b.ja=!1;b.ca=!1;b.A=!1;b.j=void 0;b.za=void 0;b.oc=void 0;this.ic||(b.Ra=void 0)}},ia={xa:function(b){var c=this,e=c[F];if(!e.ia&&e.A&&"change"==b){e.A=!1;if(e.ja||c.Da())e.u=null,e.M=0,c.V()&&c.ab();else{var f=[];a.a.J(e.u,(h,l)=>f[l.ua]=h);a.a.Z(f,(h,l)=>{var d=e.u[h],g=c.tc(d.Y);g.ua=l;g.va=d.va;e.u[h]=g});c.Da()&&c.V()&&c.ab()}e.ia||c.notifySubscribers(e.P,"awake")}},La:function(b){var c=this[F];c.ia|| +"change"!=b||this.Ca("change")||(a.a.J(c.u,(e,f)=>{f.s&&(c.u[e]={Y:f.Y,ua:f.ua,va:f.va},f.s())}),c.A=!0,this.notifySubscribers(void 0,"asleep"))},Ta:function(){var b=this[F];b.A&&(b.ja||this.Da())&&this.V();return a.T.fn.Ta.call(this)}},ja={xa:function(b){"change"!=b&&"beforeChange"!=b||this.D()}};a.a.na&&a.a.setPrototypeOf(W,a.T.fn);W[a.ka.yc]=a.i;a.m("computed",a.i);a.m("computed.fn",W);a.ba(W,"dispose",W.s);a.Yc=b=>{if("function"===typeof b)return a.i(b,void 0,{pure:!0});b=a.a.extend({},b);b.pure= +!0;return a.i(b,void 0)};(()=>{a.B={S:b=>{switch(a.a.da(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.b.get(b,a.c.options.yb):b.value;case "select":return 0<=b.selectedIndex?a.B.S(b.options[b.selectedIndex]):void 0;default:return b.value}},cb:(b,c,e)=>{switch(a.a.da(b)){case "option":"string"===typeof c?(a.a.b.set(b,a.c.options.yb,void 0),delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.b.set(b,a.c.options.yb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c? +c:"");break;case "select":if(""===c||null===c)c=void 0;for(var f=-1,h=0,l=b.options.length,d;h{function b(g){g=a.a.Db(g);123===g.charCodeAt(0)&&(g=g.slice(1,-1));g+="\n,";var k=[],m=g.match(f),p=[],q=0;if(1=q){k.push(x&&p.length?{key:x,value:p.join("")}: +{unknown:x||p.join("")});var x=q=0;p=[];continue}}else if(58===t){if(!q&&!x&&1===p.length){x=p.pop();continue}}else if(47===t&&1m(t.key||t.unknown,t.value));q.length&&m("_ko_property_writers","{"+q.join(",")+" }");return p.join(",")},Sc:(g,k)=>{for(var m=0;m{if(g&&a.O(g))!a.lc(g)||q&&g.D()=== +p||g(p);else if((g=k.get("_ko_property_writers"))&&g[m])g[m](p)}}})();(()=>{function b(d){return 8==d.nodeType&&f.test(d.nodeValue)}function c(d){return 8==d.nodeType&&h.test(d.nodeValue)}function e(d,g){for(var k=d,m=1,p=[];k=k.nextSibling;){if(c(k)&&(a.a.b.set(k,l,!0),m--,0===m))return p;p.push(k);b(k)&&m++}if(!g)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}var f=/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__";a.h={la:{},childNodes:d=> +b(d)?e(d):d.childNodes,Aa:d=>{if(b(d)){d=a.h.childNodes(d);for(var g=0,k=d.length;g{if(b(d)){a.h.Aa(d);d=d.nextSibling;for(var k=0,m=g.length;k{if(b(d)){var k=d.nextSibling;d=d.parentNode}else k=d.firstChild;d.insertBefore(g,k)},jc:(d,g,k)=>{k?(k=k.nextSibling,b(d)&&(d=d.parentNode),d.insertBefore(g,k)):a.h.prepend(d,g)},firstChild:d=>{if(!b(d)){if(d.firstChild&&c(d.firstChild))throw Error("Found invalid end comment, as the first child of "+ +d);return d.firstChild}return!d.nextSibling||c(d.nextSibling)?null:d.nextSibling},nextSibling:d=>{if(b(d)){var g=e(d,void 0);d=g?0(d=d.nodeValue.match(f))?d[1]:null}})();(function(){a.aa=function(){this.Cc={}};a.a.extend(a.aa.prototype,{nodeHasBindings:b=> +{switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.l.getComponentNameForNode(b);case 8:return a.h.Nc(b);default:return!1}},getBindings:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b):null;return a.l.Rb(e,b,c,!1)},getBindingAccessors:function(b,c){var e=this.getBindingsString(b,c);e=e?this.parseBindingsString(e,c,b,{valueAccessors:!0}):null;return a.l.Rb(e,b,c,!0)},getBindingsString:b=>{switch(b.nodeType){case 1:return b.getAttribute("data-bind"); +case 8:return a.h.dd(b)}return null},parseBindingsString:function(b,c,e,f){try{var h=this.Cc,l=b+(f&&f.valueAccessors||""),d;if(!(d=h[l])){var g="with($context){with($data||{}){return{"+a.H.Xc(b,f)+"}}}";var k=new Function("$context","$element",g);d=h[l]=k}return d(c,e)}catch(m){throw m.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+m.message,m;}}});a.aa.instance=new a.aa})();(()=>{function b(n){var r=(n=a.a.b.get(n,x))&&n.G;r&&(n.G=null,r.nc())}function c(n,r,v){this.node= +n;this.Xb=r;this.Na=[];this.C=!1;r.G||a.a.N.wa(n,b);v&&v.G&&(v.G.Na.push(n),this.gb=v)}function e(n){return a.a.Ea(a.o.I(n),(r,v)=>()=>n()[v])}function f(n,r,v){return"function"===typeof n?e(n.bind(null,r,v)):a.a.Ea(n,w=>()=>w)}function h(n,r){return e(this.getBindings.bind(this,n,r))}function l(n,r){var v=a.h.firstChild(r);if(v){var w,B=a.aa.instance,z=B.preprocessNode;if(z){for(;w=v;)v=a.h.nextSibling(w),z.call(B,w);v=a.h.firstChild(r)}for(;w=v;)v=a.h.nextSibling(w),d(n,w)}a.f.notify(r,a.f.C)}function d(n, r){var v=n;if(1===r.nodeType||a.aa.instance.nodeHasBindings(r))v=k(r,null,n).bindingContextForDescendants;v&&!y[a.a.da(r)]&&l(v,r)}function g(n){var r=[],v={},w=[];a.a.J(n,function C(z){if(!v[z]){var A=a.getBindingHandler(z);A&&(A.after&&(w.push(z),a.a.Z(A.after,H=>{if(n[H]){if(-1!==a.a.$(w,H))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+w.join(", "));C(H)}}),w.length--),r.push({key:z,hc:A}));v[z]=!0}});return r}function k(n,r,v){var w=a.a.b.rb(n,x, -{}),B=w.yc;if(!r){if(B)throw Error("You cannot apply bindings multiple times to the same element.");w.yc=!0}B||(w.context=v);w.xb||(w.xb={});if(r&&"function"!==typeof r)var z=r;else{var C=a.aa.instance,A=C.getBindingAccessors||h,H=a.i(()=>{if(z=r?r(v,n):A.call(C,n,v)){if(v[p])v[p]();if(v[u])v[u]()}return z},null,{j:n});z&&H.ha()||(H=null)}var N=v,K;if(z){var L=H?D=>()=>H()[D]():D=>z[D];function M(){return a.a.Ea(H?H():z,D=>D())}M.get=D=>z[D]&&L(D)();M.has=D=>D in z;a.f.C in z&&a.f.subscribe(n,a.f.C, -()=>{var D=z[a.f.C]();if(D){var S=a.h.childNodes(n);S.length&&D(S,a.bc(S[0]))}});a.f.ga in z&&(N=a.f.Cb(n,v),a.f.subscribe(n,a.f.ga,()=>{var D=z[a.f.ga]();D&&a.h.firstChild(n)&&D(n)}));w=g(z);a.a.Z(w,D=>{var S=D.hc.init,ca=D.hc.update,T=D.key;if(8===n.nodeType&&!a.h.la[T])throw Error("The binding '"+T+"' cannot be used with virtual elements");try{"function"==typeof S&&a.m.I(()=>{var X=S(n,L(T),M,N.$data,N);if(X&&X.controlsDescendantBindings){if(void 0!==K)throw Error("Multiple bindings ("+K+" and "+ +{}),B=w.zc;if(!r){if(B)throw Error("You cannot apply bindings multiple times to the same element.");w.zc=!0}B||(w.context=v);w.xb||(w.xb={});if(r&&"function"!==typeof r)var z=r;else{var C=a.aa.instance,A=C.getBindingAccessors||h,H=a.i(()=>{if(z=r?r(v,n):A.call(C,n,v)){if(v[p])v[p]();if(v[u])v[u]()}return z},null,{j:n});z&&H.ha()||(H=null)}var N=v,K;if(z){var L=H?D=>()=>H()[D]():D=>z[D];function M(){return a.a.Ea(H?H():z,D=>D())}M.get=D=>z[D]&&L(D)();M.has=D=>D in z;a.f.C in z&&a.f.subscribe(n,a.f.C, +()=>{var D=z[a.f.C]();if(D){var S=a.h.childNodes(n);S.length&&D(S,a.bc(S[0]))}});a.f.ga in z&&(N=a.f.Cb(n,v),a.f.subscribe(n,a.f.ga,()=>{var D=z[a.f.ga]();D&&a.h.firstChild(n)&&D(n)}));w=g(z);a.a.Z(w,D=>{var S=D.hc.init,ca=D.hc.update,T=D.key;if(8===n.nodeType&&!a.h.la[T])throw Error("The binding '"+T+"' cannot be used with virtual elements");try{"function"==typeof S&&a.o.I(()=>{var X=S(n,L(T),M,N.$data,N);if(X&&X.controlsDescendantBindings){if(void 0!==K)throw Error("Multiple bindings ("+K+" and "+ T+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");K=T}}),"function"==typeof ca&&a.i(()=>ca(n,L(T),M,N.$data,N),null,{j:n})}catch(X){throw X.message='Unable to process binding "'+T+": "+z[T]+'"\nMessage: '+X.message,X;}})}w=void 0===K;return{shouldBindDescendants:w,bindingContextForDescendants:w&&N}}function m(n,r){return n&&n instanceof a.U?n:new a.U(n,void 0,void 0,r)}var p=Symbol("_subscribable"),q=Symbol("_ancestorBindingInfo"), u=Symbol("_dataDependency");a.c={};var y={script:!0,textarea:!0,template:!0};a.getBindingHandler=n=>a.c[n];var t={};a.U=function(n,r,v,w,B){function z(){var M=N?H():H,D=a.a.g(M);r?(a.a.extend(C,r),q in r&&(C[q]=r[q])):(C.$parents=[],C.$root=D,C.ko=a);C[p]=L;A?D=C.$data:(C.$rawData=M,C.$data=D);v&&(C[v]=D);w&&w(C,r,D);if(r&&r[p]&&!a.ya.i().sb(r[p]))r[p]();K&&(C[u]=K);return C.$data}var C=this,A=n===t,H=A?void 0:n,N="function"==typeof H&&!a.O(H),K=B&&B.dataDependency;if(B&&B.exportDependencies)z(); else{var L=a.Yc(z);L.D();L.ha()?L.equalityComparer=null:C[p]=void 0}};a.U.prototype.createChildContext=function(n,r,v,w){!w&&r&&"object"==typeof r&&(w=r,r=w.as,v=w.extend);if(r&&w&&w.noChildContext){var B="function"==typeof n&&!a.O(n);return new a.U(t,this,null,z=>{v&&v(z);z[r]=B?n():n},w)}return new a.U(n,this,r,(z,C)=>{z.$parentContext=C;z.$parent=C.$data;z.$parents=(C.$parents||[]).slice(0);z.$parents.unshift(z.$parent);v&&v(z)},w)};a.U.prototype.extend=function(n,r){return new a.U(t,this,null, -v=>a.a.extend(v,"function"==typeof n?n(v):n),r)};var x=a.a.b.X();c.prototype.mc=function(){this.gb&&this.gb.G&&this.gb.G.Hc(this.node)};c.prototype.Hc=function(n){a.a.Ma(this.Na,n);!this.Na.length&&this.C&&this.ac()};c.prototype.ac=function(){this.C=!0;this.Xb.G&&!this.Na.length&&(this.Xb.G=null,a.a.N.Ab(this.node,b),a.f.notify(this.node,a.f.ga),this.mc())};a.f={C:"childrenComplete",ga:"descendantsComplete",subscribe:(n,r,v,w,B)=>{var z=a.a.b.rb(n,x,{});z.pa||(z.pa=new a.T);B&&B.notifyImmediately&& -z.xb[r]&&a.m.I(v,w,[n]);return z.pa.subscribe(v,w,r)},notify:(n,r)=>{var v=a.a.b.get(n,x);if(v&&(v.xb[r]=!0,v.pa&&v.pa.notifySubscribers(n,r),r==a.f.C))if(v.G)v.G.ac();else if(void 0===v.G&&v.pa&&v.pa.Ca(a.f.ga))throw Error("descendantsComplete event not supported for bindings on this node");},Cb:(n,r)=>{var v=a.a.b.rb(n,x,{});v.G||(v.G=new c(n,v,r[q]));return r[q]==v?r:r.extend(w=>{w[q]=v})}};a.bd=n=>(n=a.a.b.get(n,x))&&n.context;a.hb=(n,r,v)=>k(n,r,m(v));a.ed=(n,r,v)=>{v=m(v);return a.hb(n,f(r, -v,n),v)};a.Ub=(n,r)=>{1!==r.nodeType&&8!==r.nodeType||l(m(n),r)};a.Tb=function(n,r,v){if(2>arguments.length){if(r=V.body,!r)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!r||1!==r.nodeType&&8!==r.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");d(m(n,v),r)};a.bc=n=>(n=n&&[1,8].includes(n.nodeType)&&a.bd(n))?n.$data:void 0;a.s("bindingHandlers",a.c);a.s("applyBindings", -a.Tb);a.s("applyBindingAccessorsToNode",a.hb);a.s("dataFor",a.bc)})();(()=>{function b(d,g){return Object.prototype.hasOwnProperty.call(d,g)?d[g]:void 0}function c(d,g){var k=b(h,d);if(k)k.subscribe(g);else{k=h[d]=new a.T;k.subscribe(g);e(d,(p,q)=>{q=!(!q||!q.synchronous);l[d]={definition:p,Rc:q};delete h[d];m||q?k.notifySubscribers(p):a.Gb.pc(()=>k.notifySubscribers(p))});var m=!0}}function e(d,g){f("getConfig",[d],k=>{k?f("loadComponent",[d,k],m=>g(m,k)):g(null,null)})}function f(d,g,k,m){m||(m= -a.l.loaders.slice(0));var p=m.shift();if(p){var q=p[d];if(q){var u=!1;if(void 0!==q.apply(p,g.concat(function(y){u?k(null):null!==y?k(y):f(d,g,k,m)}))&&(u=!0,!p.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else f(d,g,k,m)}else k(null)}var h={},l={};a.l={get:(d,g)=>{var k=b(l,d);k?k.Rc?a.m.I(()=>g(k.definition)):a.Gb.pc(()=>g(k.definition)):c(d,g)},Ec:d=>delete l[d],Mb:f};a.l.loaders=[];a.s("components", +v=>a.a.extend(v,"function"==typeof n?n(v):n),r)};var x=a.a.b.X();c.prototype.nc=function(){this.gb&&this.gb.G&&this.gb.G.Ic(this.node)};c.prototype.Ic=function(n){a.a.Ma(this.Na,n);!this.Na.length&&this.C&&this.ac()};c.prototype.ac=function(){this.C=!0;this.Xb.G&&!this.Na.length&&(this.Xb.G=null,a.a.N.Ab(this.node,b),a.f.notify(this.node,a.f.ga),this.nc())};a.f={C:"childrenComplete",ga:"descendantsComplete",subscribe:(n,r,v,w,B)=>{var z=a.a.b.rb(n,x,{});z.pa||(z.pa=new a.T);B&&B.notifyImmediately&& +z.xb[r]&&a.o.I(v,w,[n]);return z.pa.subscribe(v,w,r)},notify:(n,r)=>{var v=a.a.b.get(n,x);if(v&&(v.xb[r]=!0,v.pa&&v.pa.notifySubscribers(n,r),r==a.f.C))if(v.G)v.G.ac();else if(void 0===v.G&&v.pa&&v.pa.Ca(a.f.ga))throw Error("descendantsComplete event not supported for bindings on this node");},Cb:(n,r)=>{var v=a.a.b.rb(n,x,{});v.G||(v.G=new c(n,v,r[q]));return r[q]==v?r:r.extend(w=>{w[q]=v})}};a.bd=n=>(n=a.a.b.get(n,x))&&n.context;a.hb=(n,r,v)=>k(n,r,m(v));a.ed=(n,r,v)=>{v=m(v);return a.hb(n,f(r, +v,n),v)};a.Ub=(n,r)=>{1!==r.nodeType&&8!==r.nodeType||l(m(n),r)};a.Tb=function(n,r,v){if(2>arguments.length){if(r=V.body,!r)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!r||1!==r.nodeType&&8!==r.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");d(m(n,v),r)};a.bc=n=>(n=n&&[1,8].includes(n.nodeType)&&a.bd(n))?n.$data:void 0;a.m("bindingHandlers",a.c);a.m("applyBindings", +a.Tb);a.m("applyBindingAccessorsToNode",a.hb);a.m("dataFor",a.bc)})();(()=>{function b(d,g){return Object.prototype.hasOwnProperty.call(d,g)?d[g]:void 0}function c(d,g){var k=b(h,d);if(k)k.subscribe(g);else{k=h[d]=new a.T;k.subscribe(g);e(d,(p,q)=>{q=!(!q||!q.synchronous);l[d]={definition:p,Rc:q};delete h[d];m||q?k.notifySubscribers(p):a.Gb.qc(()=>k.notifySubscribers(p))});var m=!0}}function e(d,g){f("getConfig",[d],k=>{k?f("loadComponent",[d,k],m=>g(m,k)):g(null,null)})}function f(d,g,k,m){m||(m= +a.l.loaders.slice(0));var p=m.shift();if(p){var q=p[d];if(q){var u=!1;if(void 0!==q.apply(p,g.concat(function(y){u?k(null):null!==y?k(y):f(d,g,k,m)}))&&(u=!0,!p.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else f(d,g,k,m)}else k(null)}var h={},l={};a.l={get:(d,g)=>{var k=b(l,d);k?k.Rc?a.o.I(()=>g(k.definition)):a.Gb.qc(()=>g(k.definition)):c(d,g)},Fc:d=>delete l[d],Mb:f};a.l.loaders=[];a.m("components", a.l)})();(()=>{function b(d,g,k,m){var p={},q=2;g=k.template;k=k.viewModel;g?a.l.Mb("loadTemplate",[d,g],u=>{p.template=u;0===--q&&m(p)}):0===--q&&m(p);k?a.l.Mb("loadViewModel",[d,k],u=>{p[l]=u;0===--q&&m(p)}):0===--q&&m(p)}function c(d,g,k){if("function"===typeof g)k(p=>new g(p));else if("function"===typeof g[l])k(g[l]);else if("instance"in g){var m=g.instance;k(()=>m)}else"viewModel"in g?c(d,g.viewModel,k):d("Unknown viewModel value: "+g)}function e(d){if("template"==a.a.da(d)&&d.content instanceof -DocumentFragment)return a.a.Oa(d.content.childNodes);throw"Template Source Element not a