diff --git a/HomeUI/dist/css/3610.css b/HomeUI/dist/css/1570.css similarity index 100% rename from HomeUI/dist/css/3610.css rename to HomeUI/dist/css/1570.css diff --git a/HomeUI/dist/css/7806.css b/HomeUI/dist/css/2152.css similarity index 100% rename from HomeUI/dist/css/7806.css rename to HomeUI/dist/css/2152.css diff --git a/HomeUI/dist/css/4210.css b/HomeUI/dist/css/3707.css similarity index 100% rename from HomeUI/dist/css/4210.css rename to HomeUI/dist/css/3707.css diff --git a/HomeUI/dist/css/5713.css b/HomeUI/dist/css/447.css similarity index 100% rename from HomeUI/dist/css/5713.css rename to HomeUI/dist/css/447.css diff --git a/HomeUI/dist/js/3610.js b/HomeUI/dist/js/1570.js similarity index 99% rename from HomeUI/dist/js/3610.js rename to HomeUI/dist/js/1570.js index dde0ce710..dd5f2593e 100644 --- a/HomeUI/dist/js/3610.js +++ b/HomeUI/dist/js/1570.js @@ -1 +1 @@ -"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[3610],{69180:(t,a,e)=>{e.r(a),e.d(a,{default:()=>G});var s=function(){var t=this,a=t._self._c;return a("div",[a("div",{class:t.managedApplication?"d-none":""},[a("b-tabs",{attrs:{pills:""},on:{"activate-tab":function(a){return t.tabChanged()}}},[a("b-tab",{attrs:{title:"Installed"}},[a("b-overlay",{attrs:{show:t.tableconfig.installed.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"apps-installed-table",attrs:{striped:"",outlined:"",responsive:"",items:t.tableconfig.installed.apps,fields:t.isLoggedIn()?t.tableconfig.installed.loggedInFields:t.tableconfig.installed.fields,"show-empty":"","empty-text":"No Flux Apps installed","sort-icon-left":""},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(visit)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(a){return t.openApp(e.item.name)}}},[a("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(state)",fn:function(e){return[a("kbd",{class:t.getBadgeClass(e.item.name),staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getStateByName(e.item.name)))]),t._v(" ")])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.installed.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterOne,callback:function(a){t.$set(t.appLocationOptions,"filterOne",a)},expression:"appLocationOptions.filterOne"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterOne},on:{click:function(a){t.appLocationOptions.filterOne=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterOne,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(Name)",fn:function(a){return[t._v(" "+t._s(t.getAppName(a.item.name))+" ")]}},{key:"cell(Description)",fn:function(a){return[t._v(" "+t._s(a.item.description)+" ")]}},{key:"cell(actions)",fn:function(e){return[a("b-button-toolbar",[a("b-button-group",{attrs:{size:"sm"}},[t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Start App",expression:"'Start App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`start-installed-app-${e.item.name}`,disabled:t.isAppInList(e.item.name,t.tableconfig.running.apps),size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-start",class:{"disable-hover":t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"play-fill"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`start-installed-app-${e.item.name}`,"confirm-button":"Start App"},on:{confirm:function(a){return t.startApp(e.item.name)}}}),t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Stop App",expression:"'Stop App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`stop-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark",disabled:!t.isAppInList(e.item.name,t.tableconfig.running.apps)}},[a("b-icon",{staticClass:"icon-style-stop",class:{"disable-hover":!t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"stop-circle"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`stop-installed-app-${e.item.name}`,"confirm-button":"Stop App"},on:{confirm:function(a){return t.stopApp(e.item.name)}}}),t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Restart App",expression:"'Restart App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`restart-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-restart",attrs:{scale:"1",icon:"bootstrap-reboot"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`restart-installed-app-${e.item.name}`,"confirm-button":"Restart App"},on:{confirm:function(a){return t.restartApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove App",expression:"'Remove App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`remove-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-trash",attrs:{scale:"1",icon:"trash"}})],1),a("confirm-dialog",{attrs:{target:`remove-installed-app-${e.item.name}`,"confirm-button":"Remove App"},on:{confirm:function(a){return t.removeApp(e.item.name)}}})],1)],1)]}}])})],1)],1),t.tableconfig.installed?.apps?.length>0?a("div",{staticClass:"mt-1"},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1.4",icon:"layers"}}),t._v("  "),a("b",[t._v(" "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.tableconfig.installed?.apps?.length)+" ")])])],1):t._e()],1)],1)],1),a("b-tab",{attrs:{title:"Available"}},[a("b-overlay",{attrs:{show:t.tableconfig.available.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.tableconfig.globalAvailable.perPage,callback:function(a){t.$set(t.tableconfig.globalAvailable,"perPage",a)},expression:"tableconfig.globalAvailable.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.globalAvailable.filter,callback:function(a){t.$set(t.tableconfig.globalAvailable,"filter",a)},expression:"tableconfig.globalAvailable.filter"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.tableconfig.globalAvailable.filter},on:{click:function(a){t.tableconfig.globalAvailable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12 mt-0"}},[a("b-table",{staticClass:"apps-globalAvailable-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.globalAvailable.perPage,"current-page":t.tableconfig.globalAvailable.currentPage,items:t.tableconfig.globalAvailable.apps,fields:t.isFluxAdminLoggedIn()?t.tableconfig.globalAvailable.loggedInFields:t.tableconfig.globalAvailable.fields,filter:t.tableconfig.globalAvailable.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Flux Apps Globally Available"},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.globalAvailable.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterTree,callback:function(a){t.$set(t.appLocationOptions,"filterTree",a)},expression:"appLocationOptions.filterTree"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterTree},on:{click:function(a){t.appLocationOptions.filterTree=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterTree,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(install)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Install App",expression:"'Install App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap",attrs:{id:`install-app-${e.item.name}`,size:"sm",pill:"",variant:"primary"}},[a("b-icon",{attrs:{scale:"0.9",icon:"layer-forward"}}),t._v(" Install ")],1),a("confirm-dialog",{attrs:{target:`install-app-${e.item.name}`,"confirm-button":"Install App"},on:{confirm:function(a){return t.installAppLocally(e.item.name)}}})]}}])})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.tableconfig?.globalAvailable?.apps?.length||1,"per-page":t.tableconfig.globalAvailable.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.globalAvailable.currentPage,callback:function(a){t.$set(t.tableconfig.globalAvailable,"currentPage",a)},expression:"tableconfig.globalAvailable.currentPage"}})],1)],1)],1)],1)],1),a("b-tab",{attrs:{title:"My Local Apps"}},[a("b-overlay",{attrs:{show:t.tableconfig.installed.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.local.pageOptions},model:{value:t.tableconfig.local.perPage,callback:function(a){t.$set(t.tableconfig.local,"perPage",a)},expression:"tableconfig.local.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.local.filter,callback:function(a){t.$set(t.tableconfig.local,"filter",a)},expression:"tableconfig.local.filter"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.tableconfig.local.filter},on:{click:function(a){t.tableconfig.local.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"apps-local-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.local.perPage,"current-page":t.tableconfig.local.currentPage,items:t.tableconfig.local.apps,fields:t.tableconfig.local.fields,"sort-by":t.tableconfig.local.sortBy,"sort-desc":t.tableconfig.local.sortDesc,"sort-direction":t.tableconfig.local.sortDirection,filter:t.tableconfig.local.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Local Apps owned."},on:{"update:sortBy":function(a){return t.$set(t.tableconfig.local,"sortBy",a)},"update:sort-by":function(a){return t.$set(t.tableconfig.local,"sortBy",a)},"update:sortDesc":function(a){return t.$set(t.tableconfig.local,"sortDesc",a)},"update:sort-desc":function(a){return t.$set(t.tableconfig.local,"sortDesc",a)},filtered:t.onFilteredLocal},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(visit)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(a){return t.openApp(e.item.name)}}},[a("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(state)",fn:function(e){return[a("kbd",{class:t.getBadgeClass(e.item.name),staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getStateByName(e.item.name)))]),t._v(" ")])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.local.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterTree,callback:function(a){t.$set(t.appLocationOptions,"filterTree",a)},expression:"appLocationOptions.filterTree"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterTree},on:{click:function(a){t.appLocationOptions.filterTree=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterTree,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(Name)",fn:function(a){return[t._v(" "+t._s(t.getAppName(a.item.name))+" ")]}},{key:"cell(Description)",fn:function(a){return[t._v(" "+t._s(a.item.description)+" ")]}},{key:"cell(actions)",fn:function(e){return[a("b-button-toolbar",[a("b-button-group",{attrs:{size:"sm"}},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Start App",expression:"'Start App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`start-local-app-${e.item.name}`,disabled:t.isAppInList(e.item.name,t.tableconfig.running.apps),size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-start",class:{"disable-hover":t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"play-fill"}})],1),a("confirm-dialog",{attrs:{target:`start-local-app-${e.item.name}`,"confirm-button":"Start App"},on:{confirm:function(a){return t.startApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Stop App",expression:"'Stop App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`stop-local-app-${e.item.name}`,size:"sm",variant:"outline-dark",disabled:!t.isAppInList(e.item.name,t.tableconfig.running.apps)}},[a("b-icon",{staticClass:"icon-style-stop",class:{"disable-hover":!t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"stop-circle"}})],1),a("confirm-dialog",{attrs:{target:`stop-local-app-${e.item.name}`,"confirm-button":"Stop App"},on:{confirm:function(a){return t.stopApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Restart App",expression:"'Restart App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`restart-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-restart",attrs:{scale:"1",icon:"bootstrap-reboot"}})],1),a("confirm-dialog",{attrs:{target:`restart-local-app-${e.item.name}`,"confirm-button":"Restart App"},on:{confirm:function(a){return t.restartApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove App",expression:"'Remove App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`remove-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-trash",attrs:{scale:"1",icon:"trash"}})],1),a("confirm-dialog",{attrs:{target:`remove-local-app-${e.item.name}`,"confirm-button":"Remove App"},on:{confirm:function(a){return t.removeApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage App",expression:"'Manage App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`manage-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-gear",attrs:{scale:"1",icon:"gear"}})],1),a("confirm-dialog",{attrs:{target:`manage-local-app-${e.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(a){return t.openAppManagement(e.item.name)}}})],1)],1)]}}])})],1),a("b-col",{attrs:{cols:"12"}},[a("div",{staticClass:"d-flex justify-content-between align-items-center"},[a("div",[t.isLoggedIn()&&t.tableconfig?.local?.totalRows>0?a("div",{staticClass:"d-inline ml-2"},[a("b-icon",{attrs:{scale:"1.4",icon:"layers"}}),a("b",[t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.tableconfig.local.totalRows)+" ")])])],1):t._e()]),a("div",{staticClass:"text-center flex-grow-1"},[t.tableconfig?.local?.totalRows>0?a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.tableconfig.local.totalRows,"per-page":t.tableconfig.local.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.local.currentPage,callback:function(a){t.$set(t.tableconfig.local,"currentPage",a)},expression:"tableconfig.local.currentPage"}}):t._e()],1)])])],1)],1)],1)],1)],1),t.output.length>0?a("div",{staticClass:"actionCenter"},[a("br"),a("b-row",[a("b-col",{attrs:{cols:"9"}},[a("b-form-textarea",{ref:"outputTextarea",staticClass:"mt-1",attrs:{plaintext:"","no-resize":"",rows:t.output.length+1,value:t.stringOutput()}})],1),t.downloadOutputReturned?a("b-col",{attrs:{cols:"3"}},[a("h3",[t._v("Downloads")]),t._l(t.downloadOutput,(function(e){return a("div",{key:e.id},[a("h4",[t._v(" "+t._s(e.id))]),a("b-progress",{attrs:{value:e.detail.current/e.detail.total*100,max:"100",striped:"",height:"1rem",variant:e.variant}}),a("br")],1)}))],2):t._e()],1)],1):t._e()],1),t.managedApplication?a("div",[a("management",{attrs:{"app-name":t.managedApplication,global:!1,"installed-apps":t.tableconfig.installed.apps},on:{back:function(a){return t.clearManagedApplication()}}})],1):t._e()])},i=[],n=(e(70560),e(58887)),o=e(51015),l=e(16521),r=e(50725),c=e(86855),p=e(26253),d=e(15193),m=e(41984),u=e(45969),g=e(46709),b=e(22183),h=e(8051),f=e(4060),v=e(22418),y=e(333),C=e(66126),S=e(10962),w=e(45752),A=e(20266),_=e(20629),x=e(34547),k=e(87156),$=e(51748),P=e(67890),L=e(43672),N=e(27616);const O=e(58971),D=e(80129),R=e(63005),B=e(57306),I={components:{BTabs:n.M,BTab:o.L,BTable:l.h,BCol:r.l,BCard:c._,BRow:p.T,BButton:d.T,BButtonToolbar:m.r,BButtonGroup:u.a,BFormGroup:g.x,BFormInput:b.e,BFormSelect:h.K,BInputGroup:f.w,BInputGroupAppend:v.B,BFormTextarea:y.y,BOverlay:C.X,BPagination:S.c,BProgress:w.D,ConfirmDialog:k.Z,ListEntry:$.Z,Management:P.Z,ToastificationContent:x.Z},directives:{Ripple:A.Z},data(){return{stateAppsNames:[],tableKey:0,timeoptions:R,output:[],downloading:!1,downloadOutputReturned:!1,downloadOutput:{},managedApplication:"",daemonBlockCount:-1,tableconfig:{running:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"Visit",thStyle:{width:"3%"}},{key:"actions",label:"Actions",thStyle:{width:"15%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"Visit",thStyle:{width:"3%"}}],loading:!0},installed:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"state",label:"State",class:"text-center",thStyle:{width:"2%"}},{key:"description",label:"Description",class:"text-left"},{key:"actions",label:"",thStyle:{width:"12%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"2%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0},available:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"install",label:"",thStyle:{width:"5%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description",thStyle:{width:"80%"}}],loading:!0},globalAvailable:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"install",label:"",thStyle:{width:"5%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description",thStyle:{width:"80%"}}],loading:!0,perPage:50,pageOptions:[5,10,25,50,100],filter:"",filterOn:[],currentPage:1,totalRows:1},local:{apps:[],status:"",fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"actions",label:"",thStyle:{width:"15%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],perPage:5,pageOptions:[5,10,25,50,100],sortBy:"",sortDesc:!1,sortDirection:"asc",connectedPeers:[],filter:"",filterOn:[],currentPage:1,totalRows:1}},tier:"",appLocations:[],appLocationFields:[{key:"ip",label:"IP Address",sortable:!0},{key:"visit",label:""}],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,filterOne:"",filterTwo:"",filterTree:""},callResponse:{status:"",data:""}}},computed:{...(0,_.rn)("flux",["config","userconfig","privilege"]),isApplicationInstalledLocally(){if(this.tableconfig.installed.apps){const t=this.tableconfig.installed.apps.find((t=>t.name===this.managedApplication));return!!t}return!1}},mounted(){this.getFluxNodeStatus(),this.appsGetAvailableApps(),this.appsGetListRunningApps(),this.appsGetInstalledApps(),this.appsGetListGlobalApps();const{hostname:t,port:a}=window.location,e=/[A-Za-z]/g;if(!t.match(e)&&("string"===typeof t&&this.$store.commit("flux/setUserIp",t),+a>16100)){const t=+a+1;this.$store.commit("flux/setFluxPort",t)}this.getDaemonBlockCount()},methods:{openNodeFluxOS(t,a){if(console.log(t,a),a&&t){const e=t,s=a,i=`http://${e}:${s}`;this.openSite(i)}else this.showToast("danger","Unable to open FluxOS :(")},tabChanged(){this.tableconfig.installed.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.available.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.globalAvailable.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.appLocations=[],!1===this.downloading&&(this.output=[])},isLessThanTwoDays(t){const a=t?.split(",").map((t=>t.trim()));let e=0,s=0,i=0;for(const o of a)o.includes("days")?e=parseInt(o,10):o.includes("hours")?s=parseInt(o,10):o.includes("minutes")&&(i=parseInt(o,10));const n=24*e*60+60*s+i;return n<2880},getServiceUsageValue(t,a,e){if("undefined"===typeof e?.compose)return this.usage=[+e.ram,+e.cpu,+e.hdd],this.usage[t];const s=this.getServiceUsage(a,e.compose);return s[t]},getServiceUsage(t,a){const[e,s,i]=a.reduce(((t,a)=>{const e=+a.ram||0,s=+a.cpu||0,i=+a.hdd||0;return t[0]+=e,t[1]+=s,t[2]+=i,t}),[0,0,0]);return[e,s.toFixed(1),i]},getBadgeClass(t){const a=this.getStateByName(t);return{"alert-success":"running"===a,"alert-danger":"stopped"===a}},getStateByName(t){const a=this.stateAppsNames.filter((a=>a.name===t));return a?.length>0?a[0].state:"stopped"},isAppInList(t,a){return 0!==a?.length&&a.some((a=>a.name===t))},minutesToString(t){let a=60*t;const e={day:86400,hour:3600,minute:60,second:1},s=[];for(const i in e){const t=Math.floor(a/e[i]);1===t&&s.push(` ${t} ${i}`),t>=2&&s.push(` ${t} ${i}s`),a%=e[i]}return s},labelForExpire(t,a){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const e=t||22e3,s=a+e-this.daemonBlockCount;if(s<1)return"Application Expired";const i=2*s,n=this.minutesToString(i);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},async appsGetListGlobalApps(){this.tableconfig.globalAvailable.loading=!0,console.log("CALL1");const t=await L.Z.globalAppSpecifications();console.log(t),console.log("CALL2");const a=t.data.data.sort(((t,a)=>t.name.toLowerCase()>a.name.toLowerCase()?1:-1));console.log("CALL3"),this.tableconfig.globalAvailable.apps=a,this.tableconfig.globalAvailable.loading=!1,this.tableconfig.globalAvailable.status=t.data.status},async getDaemonBlockCount(){const t=await N.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},async getFluxNodeStatus(){const t=await N.Z.getFluxNodeStatus();"success"===t.data.status&&(this.tier=t.data.data.tier)},async appsGetInstalledApps(){this.tableconfig.installed.loading=!0;const t=await L.Z.installedApps();this.tableconfig.installed.status=t.data.status,this.tableconfig.installed.apps=t.data.data,this.tableconfig.installed.loading=!1;const a=localStorage.getItem("zelidauth"),e=D.parse(a);this.tableconfig.local.apps=this.tableconfig.installed.apps.filter((t=>t.owner===e.zelid)),this.tableconfig.local.totalRows=this.tableconfig.local.apps.length},async appsGetListRunningApps(t=0){this.tableconfig.running.loading=!0;const a=this;setTimeout((async()=>{const t=await L.Z.listRunningApps(),e=t.data.data,s=[],i=[];a.stateAppsNames=[],e.forEach((t=>{const e=t.Names[0].startsWith("/flux")?t.Names[0].slice(5):t.Names[0].slice(4);if(e.includes("_")){if(s.push(e.split("_")[1]),!e.includes("watchtower")){const s={name:e.split("_")[1],state:t.State};a.stateAppsNames.push(s)}}else if(s.push(e),!e.includes("watchtower")){const s={name:e,state:t.State};a.stateAppsNames.push(s)}}));const n=[...new Set(s)];for(const a of n){const t=await L.Z.getAppSpecifics(a);"success"===t.data.status&&i.push(t.data.data)}a.tableconfig.running.status=t.data.status,a.tableconfig.running.apps=i,a.tableconfig.running.loading=!1,a.tableconfig.running.status=t.data.data}),t)},async appsGetAvailableApps(){this.tableconfig.available.loading=!0;const t=await L.Z.availableApps();this.tableconfig.available.status=t.data.status,this.tableconfig.available.apps=t.data.data,this.tableconfig.available.loading=!1},openApp(t,a,e){if(e&&a){const t=`http://${a}:${e}`;this.openSite(t)}else{const a=this.installedApp(t),e=O.get("backendURL")||`http://${this.userconfig.externalip}:${this.config.apiPort}`,s=e.split(":")[1].split("//")[1],i=a.port||a.ports?a?.ports[0]:a?.compose[0].ports[0];if(""===i)return void this.showToast("danger","Unable to open App :(, App does not have a port.");const n=`http://${s}:${i}`;this.openSite(n)}},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let a=0;aa.name===t))},openSite(t){const a=window.open(t,"_blank");a.focus()},async stopApp(t){this.output=[],this.showToast("warning",`Stopping ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.stopApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async startApp(t){this.output=[],this.showToast("warning",`Starting ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.startApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async restartApp(t){this.output=[],this.showToast("warning",`Restarting ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.restartApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async pauseApp(t){this.output=[],this.showToast("warning",`Pausing ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.pauseApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data)},async unpauseApp(t){this.output=[],this.showToast("warning",`Unpausing ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.unpauseApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data)},redeployAppSoft(t){this.redeployApp(t,!1)},redeployAppHard(t){this.redeployApp(t,!0)},async redeployApp(t,a){const e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.showToast("warning",`Redeploying ${this.getAppName(t)}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/redeploy/${t}/${a}`,i);"error"===n.data.status?this.showToast("danger",n.data.data.message||n.data.data):(this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data))},async removeApp(t){const a=this.getAppName(t),e=this;this.output=[],this.showToast("warning",`Removing ${a}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/appremove/${t}`,i);"error"===n.data.status?this.showToast("danger",n.data.data.message||n.data.data):(this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data),setTimeout((()=>{this.appsGetInstalledApps(),this.appsGetListRunningApps(),e.managedApplication=""}),5e3))},async installAppLocally(t){const a=this.getAppName(t),e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.downloading=!0,this.showToast("warning",`Installing ${a}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/installapplocally/${t}`,i);if("error"===n.data.status)this.showToast("danger",n.data.data.message||n.data.data);else{console.log(n),this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),console.log(this.output);for(let t=0;t{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.loadLocations(t)})))},async loadLocations(t){console.log(t),this.appLocations=[];const a=await L.Z.getAppLocation(t.item.name).catch((t=>{this.showToast("danger",t.message||t)}));if(console.log(a),"success"===a.data.status){const t=a.data.data;this.appLocations=t,this.appLocationOptions.totalRows=this.appLocations.length}},openAppManagement(t){const a=this.getAppName(t);this.managedApplication=a},clearManagedApplication(){this.managedApplication="",this.appsGetInstalledApps(),this.appsGetListRunningApps()},onFilteredLocal(t){this.tableconfig.local.totalRows=t.length,this.tableconfig.local.currentPage=1},stringOutput(){let t="";return this.output.forEach((a=>{"success"===a.status?t+=`${a.data.message||a.data}\r\n`:"Downloading"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:a.progressDetail,variant:"danger"}):"Verifying Checksum"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"warning"}):"Download complete"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"info"}):"Extracting"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:a.progressDetail,variant:"primary"}):"Pull complete"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"success"}):"error"===a.status?t+=`Error: ${JSON.stringify(a.data)}\r\n`:t+=`${a.status}\r\n`})),t},showToast(t,a,e="InfoIcon"){this.$toast({component:x.Z,props:{title:a,icon:e,variant:t}})},constructAutomaticDomains(t,a="",e,s=0){const i=e.toLowerCase(),n=a.toLowerCase();if(!n){const a=[];0===s&&a.push(`${i}.app.runonflux.io`);for(let e=0;et.code===a))||{name:"ALL"};return`Continent: ${e.name||"Unkown"}`}if(t.startsWith("b")){const a=t.slice(1),e=B.countries.find((t=>t.code===a))||{name:"ALL"};return`Country: ${e.name||"Unkown"}`}if(t.startsWith("ac")){const a=t.slice(2),e=a.split("_"),s=e[0],i=e[1],n=e[2],o=B.continents.find((t=>t.code===s))||{name:"ALL"},l=B.countries.find((t=>t.code===i))||{name:"ALL"};let r=`Allowed location: Continent: ${o.name}`;return i&&(r+=`, Country: ${l.name}`),n&&(r+=`, Region: ${n}`),r}if(t.startsWith("a!c")){const a=t.slice(3),e=a.split("_"),s=e[0],i=e[1],n=e[2],o=B.continents.find((t=>t.code===s))||{name:"ALL"},l=B.countries.find((t=>t.code===i))||{name:"ALL"};let r=`Forbidden location: Continent: ${o.name}`;return i&&(r+=`, Country: ${l.name}`),n&&(r+=`, Region: ${n}`),r}return"All locations allowed"}}},T=I;var M=e(1001),F=(0,M.Z)(T,s,i,!1,null,null,null);const G=F.exports},63005:(t,a,e)=>{e.r(a),e.d(a,{default:()=>n});const s={year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"},i={year:"numeric",month:"short",day:"numeric"},n={shortDate:s,date:i}}}]); \ No newline at end of file +"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[1570],{69180:(t,a,e)=>{e.r(a),e.d(a,{default:()=>G});var s=function(){var t=this,a=t._self._c;return a("div",[a("div",{class:t.managedApplication?"d-none":""},[a("b-tabs",{attrs:{pills:""},on:{"activate-tab":function(a){return t.tabChanged()}}},[a("b-tab",{attrs:{title:"Installed"}},[a("b-overlay",{attrs:{show:t.tableconfig.installed.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"apps-installed-table",attrs:{striped:"",outlined:"",responsive:"",items:t.tableconfig.installed.apps,fields:t.isLoggedIn()?t.tableconfig.installed.loggedInFields:t.tableconfig.installed.fields,"show-empty":"","empty-text":"No Flux Apps installed","sort-icon-left":""},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(visit)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(a){return t.openApp(e.item.name)}}},[a("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(state)",fn:function(e){return[a("kbd",{class:t.getBadgeClass(e.item.name),staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getStateByName(e.item.name)))]),t._v(" ")])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.installed.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterOne,callback:function(a){t.$set(t.appLocationOptions,"filterOne",a)},expression:"appLocationOptions.filterOne"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterOne},on:{click:function(a){t.appLocationOptions.filterOne=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterOne,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(Name)",fn:function(a){return[t._v(" "+t._s(t.getAppName(a.item.name))+" ")]}},{key:"cell(Description)",fn:function(a){return[t._v(" "+t._s(a.item.description)+" ")]}},{key:"cell(actions)",fn:function(e){return[a("b-button-toolbar",[a("b-button-group",{attrs:{size:"sm"}},[t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Start App",expression:"'Start App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`start-installed-app-${e.item.name}`,disabled:t.isAppInList(e.item.name,t.tableconfig.running.apps),size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-start",class:{"disable-hover":t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"play-fill"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`start-installed-app-${e.item.name}`,"confirm-button":"Start App"},on:{confirm:function(a){return t.startApp(e.item.name)}}}),t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Stop App",expression:"'Stop App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`stop-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark",disabled:!t.isAppInList(e.item.name,t.tableconfig.running.apps)}},[a("b-icon",{staticClass:"icon-style-stop",class:{"disable-hover":!t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"stop-circle"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`stop-installed-app-${e.item.name}`,"confirm-button":"Stop App"},on:{confirm:function(a){return t.stopApp(e.item.name)}}}),t.isFluxAdminLoggedIn()?a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Restart App",expression:"'Restart App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`restart-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-restart",attrs:{scale:"1",icon:"bootstrap-reboot"}})],1):t._e(),a("confirm-dialog",{attrs:{target:`restart-installed-app-${e.item.name}`,"confirm-button":"Restart App"},on:{confirm:function(a){return t.restartApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove App",expression:"'Remove App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`remove-installed-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-trash",attrs:{scale:"1",icon:"trash"}})],1),a("confirm-dialog",{attrs:{target:`remove-installed-app-${e.item.name}`,"confirm-button":"Remove App"},on:{confirm:function(a){return t.removeApp(e.item.name)}}})],1)],1)]}}])})],1)],1),t.tableconfig.installed?.apps?.length>0?a("div",{staticClass:"mt-1"},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1.4",icon:"layers"}}),t._v("  "),a("b",[t._v(" "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.tableconfig.installed?.apps?.length)+" ")])])],1):t._e()],1)],1)],1),a("b-tab",{attrs:{title:"Available"}},[a("b-overlay",{attrs:{show:t.tableconfig.available.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.tableconfig.globalAvailable.perPage,callback:function(a){t.$set(t.tableconfig.globalAvailable,"perPage",a)},expression:"tableconfig.globalAvailable.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.globalAvailable.filter,callback:function(a){t.$set(t.tableconfig.globalAvailable,"filter",a)},expression:"tableconfig.globalAvailable.filter"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.tableconfig.globalAvailable.filter},on:{click:function(a){t.tableconfig.globalAvailable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12 mt-0"}},[a("b-table",{staticClass:"apps-globalAvailable-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.globalAvailable.perPage,"current-page":t.tableconfig.globalAvailable.currentPage,items:t.tableconfig.globalAvailable.apps,fields:t.isFluxAdminLoggedIn()?t.tableconfig.globalAvailable.loggedInFields:t.tableconfig.globalAvailable.fields,filter:t.tableconfig.globalAvailable.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Flux Apps Globally Available"},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.globalAvailable.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterTree,callback:function(a){t.$set(t.appLocationOptions,"filterTree",a)},expression:"appLocationOptions.filterTree"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterTree},on:{click:function(a){t.appLocationOptions.filterTree=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterTree,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(install)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Install App",expression:"'Install App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap",attrs:{id:`install-app-${e.item.name}`,size:"sm",pill:"",variant:"primary"}},[a("b-icon",{attrs:{scale:"0.9",icon:"layer-forward"}}),t._v(" Install ")],1),a("confirm-dialog",{attrs:{target:`install-app-${e.item.name}`,"confirm-button":"Install App"},on:{confirm:function(a){return t.installAppLocally(e.item.name)}}})]}}])})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.tableconfig?.globalAvailable?.apps?.length||1,"per-page":t.tableconfig.globalAvailable.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.globalAvailable.currentPage,callback:function(a){t.$set(t.tableconfig.globalAvailable,"currentPage",a)},expression:"tableconfig.globalAvailable.currentPage"}})],1)],1)],1)],1)],1),a("b-tab",{attrs:{title:"My Local Apps"}},[a("b-overlay",{attrs:{show:t.tableconfig.installed.loading,variant:"transparent",blur:"5px"}},[a("b-card",[a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.local.pageOptions},model:{value:t.tableconfig.local.perPage,callback:function(a){t.$set(t.tableconfig.local,"perPage",a)},expression:"tableconfig.local.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.local.filter,callback:function(a){t.$set(t.tableconfig.local,"filter",a)},expression:"tableconfig.local.filter"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.tableconfig.local.filter},on:{click:function(a){t.tableconfig.local.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"apps-local-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.local.perPage,"current-page":t.tableconfig.local.currentPage,items:t.tableconfig.local.apps,fields:t.tableconfig.local.fields,"sort-by":t.tableconfig.local.sortBy,"sort-desc":t.tableconfig.local.sortDesc,"sort-direction":t.tableconfig.local.sortDirection,filter:t.tableconfig.local.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Local Apps owned."},on:{"update:sortBy":function(a){return t.$set(t.tableconfig.local,"sortBy",a)},"update:sort-by":function(a){return t.$set(t.tableconfig.local,"sortBy",a)},"update:sortDesc":function(a){return t.$set(t.tableconfig.local,"sortDesc",a)},"update:sort-desc":function(a){return t.$set(t.tableconfig.local,"sortDesc",a)},filtered:t.onFilteredLocal},scopedSlots:t._u([{key:"cell(name)",fn:function(e){return[a("div",{staticClass:"text-left"},[a("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[a("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(e.item.name)+"  ")],1),a("br"),a("small",{staticStyle:{"font-size":"11px"}},[a("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(1,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(0,e.item.name,e.item)))]),t._v(" ")]),t._v("   "),a("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getServiceUsageValue(2,e.item.name,e.item)))]),t._v(" ")]),t._v("  "),a("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),a("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(e.item.instances))]),t._v(" ")])],1),a("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(e.item.expire,e.item.height))}},[t._v("   "),a("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(e.item.expire,e.item.height))+"   ")],1)])])]}},{key:"cell(visit)",fn:function(e){return[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(a){return t.openApp(e.item.name)}}},[a("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)]}},{key:"cell(description)",fn:function(e){return[a("kbd",{staticClass:"text-secondary textarea",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(e.item.description))])]}},{key:"cell(state)",fn:function(e){return[a("kbd",{class:t.getBadgeClass(e.item.name),staticStyle:{"border-radius":"15px"}},[t._v(" "),a("b",[t._v(t._s(t.getStateByName(e.item.name)))]),t._v(" ")])]}},{key:"cell(show_details)",fn:function(e){return[a("a",{on:{click:function(a){return t.showLocations(e,t.tableconfig.local.apps)}}},[e.detailsShowing?t._e():a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),e.detailsShowing?a("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(e){return[a("b-card",{staticClass:"mx-2"},[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),a("div",{staticClass:"ml-1"},[e.item.owner?a("list-entry",{attrs:{title:"Owner",data:e.item.owner}}):t._e(),e.item.hash?a("list-entry",{attrs:{title:"Hash",data:e.item.hash}}):t._e(),e.item.version>=5?a("div",[e.item.contacts.length>0?a("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(e.item.contacts)}}):t._e(),e.item.geolocation.length?a("div",t._l(e.item.geolocation,(function(e){return a("div",{key:e},[a("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(e)}})],1)})),0):a("div",[a("list-entry",{attrs:{title:"Continent",data:"All"}}),a("list-entry",{attrs:{title:"Country",data:"All"}}),a("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),e.item.instances?a("list-entry",{attrs:{title:"Instances",data:e.item.instances.toString()}}):t._e(),a("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(e.item.expire,e.item.height)}}),e.item?.nodes?.length>0?a("list-entry",{attrs:{title:"Enterprise Nodes",data:e.item.nodes?e.item.nodes.toString():"Not scoped"}}):t._e(),a("list-entry",{attrs:{title:"Static IP",data:e.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),e.item.version<=3?a("div",[a("b-card",[a("list-entry",{attrs:{title:"Repository",data:e.item.repotag}}),a("list-entry",{attrs:{title:"Custom Domains",data:e.item.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(e.item.ports,void 0,e.item.name).toString()}}),a("list-entry",{attrs:{title:"Ports",data:e.item.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:e.item.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:e.item.containerData}}),a("list-entry",{attrs:{title:"Enviroment Parameters",data:e.item.enviromentParameters.length>0?e.item.enviromentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:e.item.commands.length>0?e.item.commands.toString():"none"}}),e.item.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${e.item.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${e.item.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${e.item.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${e.item.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${e.item.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${e.item.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${e.item.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${e.item.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${e.item.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${e.item.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${e.item.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${e.item.hdd} GB`}})],1)],1)],1):a("div",[a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(e.item.compose,(function(s,i){return a("b-card",{key:i,staticClass:"mb-0"},[a("h3",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[a("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),a("div",{staticClass:"ml-1"},[a("list-entry",{attrs:{title:"Name",data:s.name}}),a("list-entry",{attrs:{title:"Description",data:s.description}}),a("list-entry",{attrs:{title:"Repository",data:s.repotag}}),a("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),a("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),a("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,s.name,e.item.name,i).toString()}}),a("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),a("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),a("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),a("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),a("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),a("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?a("div",[a("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),a("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),a("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),a("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),a("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),a("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),a("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),a("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),a("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):a("div",[a("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),a("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),a("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),a("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[a("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[a("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),a("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),a("b-row",[a("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[a("b-form-group",{staticClass:"mb-0"},[a("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),a("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(a){t.$set(t.appLocationOptions,"perPage",a)},expression:"appLocationOptions.perPage"}})],1)],1),a("b-col",{staticClass:"my-1",attrs:{md:"8"}},[a("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[a("b-input-group",{attrs:{size:"sm"}},[a("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filterTree,callback:function(a){t.$set(t.appLocationOptions,"filterTree",a)},expression:"appLocationOptions.filterTree"}}),a("b-input-group-append",[a("b-button",{attrs:{disabled:!t.appLocationOptions.filterTree},on:{click:function(a){t.appLocationOptions.filterTree=""}}},[t._v(" Clear ")])],1)],1)],1)],1),a("b-col",{attrs:{cols:"12"}},[a("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filterTree,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(e){return[a("div",{staticClass:"no-wrap"},[a("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[a("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),a("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[a("b",[t._v("  "+t._s(e.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(s){return[a("div",{staticClass:"d-flex justify-content-end"},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(a){t.openApp(e.item.name,s.item.ip.split(":")[0],t.getProperPort(e.item))}}},[a("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(a){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[a("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),a("b-col",{attrs:{cols:"12"}},[a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(a){t.$set(t.appLocationOptions,"currentPage",a)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(Name)",fn:function(a){return[t._v(" "+t._s(t.getAppName(a.item.name))+" ")]}},{key:"cell(Description)",fn:function(a){return[t._v(" "+t._s(a.item.description)+" ")]}},{key:"cell(actions)",fn:function(e){return[a("b-button-toolbar",[a("b-button-group",{attrs:{size:"sm"}},[a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Start App",expression:"'Start App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`start-local-app-${e.item.name}`,disabled:t.isAppInList(e.item.name,t.tableconfig.running.apps),size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-start",class:{"disable-hover":t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"play-fill"}})],1),a("confirm-dialog",{attrs:{target:`start-local-app-${e.item.name}`,"confirm-button":"Start App"},on:{confirm:function(a){return t.startApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Stop App",expression:"'Stop App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`stop-local-app-${e.item.name}`,size:"sm",variant:"outline-dark",disabled:!t.isAppInList(e.item.name,t.tableconfig.running.apps)}},[a("b-icon",{staticClass:"icon-style-stop",class:{"disable-hover":!t.isAppInList(e.item.name,t.tableconfig.running.apps)},attrs:{scale:"1.2",icon:"stop-circle"}})],1),a("confirm-dialog",{attrs:{target:`stop-local-app-${e.item.name}`,"confirm-button":"Stop App"},on:{confirm:function(a){return t.stopApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Restart App",expression:"'Restart App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`restart-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-restart",attrs:{scale:"1",icon:"bootstrap-reboot"}})],1),a("confirm-dialog",{attrs:{target:`restart-local-app-${e.item.name}`,"confirm-button":"Restart App"},on:{confirm:function(a){return t.restartApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove App",expression:"'Remove App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`remove-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-trash",attrs:{scale:"1",icon:"trash"}})],1),a("confirm-dialog",{attrs:{target:`remove-local-app-${e.item.name}`,"confirm-button":"Remove App"},on:{confirm:function(a){return t.removeApp(e.item.name)}}}),a("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage App",expression:"'Manage App'",modifiers:{hover:!0,top:!0}}],staticClass:"no-wrap",attrs:{id:`manage-local-app-${e.item.name}`,size:"sm",variant:"outline-dark"}},[a("b-icon",{staticClass:"icon-style-gear",attrs:{scale:"1",icon:"gear"}})],1),a("confirm-dialog",{attrs:{target:`manage-local-app-${e.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(a){return t.openAppManagement(e.item.name)}}})],1)],1)]}}])})],1),a("b-col",{attrs:{cols:"12"}},[a("div",{staticClass:"d-flex justify-content-between align-items-center"},[a("div",[t.isLoggedIn()&&t.tableconfig?.local?.totalRows>0?a("div",{staticClass:"d-inline ml-2"},[a("b-icon",{attrs:{scale:"1.4",icon:"layers"}}),a("b",[t._v("  "),a("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.tableconfig.local.totalRows)+" ")])])],1):t._e()]),a("div",{staticClass:"text-center flex-grow-1"},[t.tableconfig?.local?.totalRows>0?a("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.tableconfig.local.totalRows,"per-page":t.tableconfig.local.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.local.currentPage,callback:function(a){t.$set(t.tableconfig.local,"currentPage",a)},expression:"tableconfig.local.currentPage"}}):t._e()],1)])])],1)],1)],1)],1)],1),t.output.length>0?a("div",{staticClass:"actionCenter"},[a("br"),a("b-row",[a("b-col",{attrs:{cols:"9"}},[a("b-form-textarea",{ref:"outputTextarea",staticClass:"mt-1",attrs:{plaintext:"","no-resize":"",rows:t.output.length+1,value:t.stringOutput()}})],1),t.downloadOutputReturned?a("b-col",{attrs:{cols:"3"}},[a("h3",[t._v("Downloads")]),t._l(t.downloadOutput,(function(e){return a("div",{key:e.id},[a("h4",[t._v(" "+t._s(e.id))]),a("b-progress",{attrs:{value:e.detail.current/e.detail.total*100,max:"100",striped:"",height:"1rem",variant:e.variant}}),a("br")],1)}))],2):t._e()],1)],1):t._e()],1),t.managedApplication?a("div",[a("management",{attrs:{"app-name":t.managedApplication,global:!1,"installed-apps":t.tableconfig.installed.apps},on:{back:function(a){return t.clearManagedApplication()}}})],1):t._e()])},i=[],n=(e(70560),e(58887)),o=e(51015),l=e(16521),r=e(50725),c=e(86855),p=e(26253),d=e(15193),m=e(41984),u=e(45969),g=e(46709),b=e(22183),h=e(8051),f=e(4060),v=e(22418),y=e(333),C=e(66126),S=e(10962),w=e(45752),A=e(20266),_=e(20629),x=e(34547),k=e(87156),$=e(51748),P=e(78182),L=e(43672),N=e(27616);const O=e(58971),D=e(80129),R=e(63005),B=e(57306),I={components:{BTabs:n.M,BTab:o.L,BTable:l.h,BCol:r.l,BCard:c._,BRow:p.T,BButton:d.T,BButtonToolbar:m.r,BButtonGroup:u.a,BFormGroup:g.x,BFormInput:b.e,BFormSelect:h.K,BInputGroup:f.w,BInputGroupAppend:v.B,BFormTextarea:y.y,BOverlay:C.X,BPagination:S.c,BProgress:w.D,ConfirmDialog:k.Z,ListEntry:$.Z,Management:P.Z,ToastificationContent:x.Z},directives:{Ripple:A.Z},data(){return{stateAppsNames:[],tableKey:0,timeoptions:R,output:[],downloading:!1,downloadOutputReturned:!1,downloadOutput:{},managedApplication:"",daemonBlockCount:-1,tableconfig:{running:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"Visit",thStyle:{width:"3%"}},{key:"actions",label:"Actions",thStyle:{width:"15%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"Visit",thStyle:{width:"3%"}}],loading:!0},installed:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"state",label:"State",class:"text-center",thStyle:{width:"2%"}},{key:"description",label:"Description",class:"text-left"},{key:"actions",label:"",thStyle:{width:"12%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"2%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0},available:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"install",label:"",thStyle:{width:"5%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description",thStyle:{width:"80%"}}],loading:!0},globalAvailable:{apps:[],status:"",loggedInFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"install",label:"",thStyle:{width:"5%"}}],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description",thStyle:{width:"80%"}}],loading:!0,perPage:50,pageOptions:[5,10,25,50,100],filter:"",filterOn:[],currentPage:1,totalRows:1},local:{apps:[],status:"",fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0},{key:"description",label:"Description"},{key:"actions",label:"",thStyle:{width:"15%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],perPage:5,pageOptions:[5,10,25,50,100],sortBy:"",sortDesc:!1,sortDirection:"asc",connectedPeers:[],filter:"",filterOn:[],currentPage:1,totalRows:1}},tier:"",appLocations:[],appLocationFields:[{key:"ip",label:"IP Address",sortable:!0},{key:"visit",label:""}],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,filterOne:"",filterTwo:"",filterTree:""},callResponse:{status:"",data:""}}},computed:{...(0,_.rn)("flux",["config","userconfig","privilege"]),isApplicationInstalledLocally(){if(this.tableconfig.installed.apps){const t=this.tableconfig.installed.apps.find((t=>t.name===this.managedApplication));return!!t}return!1}},mounted(){this.getFluxNodeStatus(),this.appsGetAvailableApps(),this.appsGetListRunningApps(),this.appsGetInstalledApps(),this.appsGetListGlobalApps();const{hostname:t,port:a}=window.location,e=/[A-Za-z]/g;if(!t.match(e)&&("string"===typeof t&&this.$store.commit("flux/setUserIp",t),+a>16100)){const t=+a+1;this.$store.commit("flux/setFluxPort",t)}this.getDaemonBlockCount()},methods:{openNodeFluxOS(t,a){if(console.log(t,a),a&&t){const e=t,s=a,i=`http://${e}:${s}`;this.openSite(i)}else this.showToast("danger","Unable to open FluxOS :(")},tabChanged(){this.tableconfig.installed.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.available.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.globalAvailable.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.appLocations=[],!1===this.downloading&&(this.output=[])},isLessThanTwoDays(t){const a=t?.split(",").map((t=>t.trim()));let e=0,s=0,i=0;for(const o of a)o.includes("days")?e=parseInt(o,10):o.includes("hours")?s=parseInt(o,10):o.includes("minutes")&&(i=parseInt(o,10));const n=24*e*60+60*s+i;return n<2880},getServiceUsageValue(t,a,e){if("undefined"===typeof e?.compose)return this.usage=[+e.ram,+e.cpu,+e.hdd],this.usage[t];const s=this.getServiceUsage(a,e.compose);return s[t]},getServiceUsage(t,a){const[e,s,i]=a.reduce(((t,a)=>{const e=+a.ram||0,s=+a.cpu||0,i=+a.hdd||0;return t[0]+=e,t[1]+=s,t[2]+=i,t}),[0,0,0]);return[e,s.toFixed(1),i]},getBadgeClass(t){const a=this.getStateByName(t);return{"alert-success":"running"===a,"alert-danger":"stopped"===a}},getStateByName(t){const a=this.stateAppsNames.filter((a=>a.name===t));return a?.length>0?a[0].state:"stopped"},isAppInList(t,a){return 0!==a?.length&&a.some((a=>a.name===t))},minutesToString(t){let a=60*t;const e={day:86400,hour:3600,minute:60,second:1},s=[];for(const i in e){const t=Math.floor(a/e[i]);1===t&&s.push(` ${t} ${i}`),t>=2&&s.push(` ${t} ${i}s`),a%=e[i]}return s},labelForExpire(t,a){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const e=t||22e3,s=a+e-this.daemonBlockCount;if(s<1)return"Application Expired";const i=2*s,n=this.minutesToString(i);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},async appsGetListGlobalApps(){this.tableconfig.globalAvailable.loading=!0,console.log("CALL1");const t=await L.Z.globalAppSpecifications();console.log(t),console.log("CALL2");const a=t.data.data.sort(((t,a)=>t.name.toLowerCase()>a.name.toLowerCase()?1:-1));console.log("CALL3"),this.tableconfig.globalAvailable.apps=a,this.tableconfig.globalAvailable.loading=!1,this.tableconfig.globalAvailable.status=t.data.status},async getDaemonBlockCount(){const t=await N.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},async getFluxNodeStatus(){const t=await N.Z.getFluxNodeStatus();"success"===t.data.status&&(this.tier=t.data.data.tier)},async appsGetInstalledApps(){this.tableconfig.installed.loading=!0;const t=await L.Z.installedApps();this.tableconfig.installed.status=t.data.status,this.tableconfig.installed.apps=t.data.data,this.tableconfig.installed.loading=!1;const a=localStorage.getItem("zelidauth"),e=D.parse(a);this.tableconfig.local.apps=this.tableconfig.installed.apps.filter((t=>t.owner===e.zelid)),this.tableconfig.local.totalRows=this.tableconfig.local.apps.length},async appsGetListRunningApps(t=0){this.tableconfig.running.loading=!0;const a=this;setTimeout((async()=>{const t=await L.Z.listRunningApps(),e=t.data.data,s=[],i=[];a.stateAppsNames=[],e.forEach((t=>{const e=t.Names[0].startsWith("/flux")?t.Names[0].slice(5):t.Names[0].slice(4);if(e.includes("_")){if(s.push(e.split("_")[1]),!e.includes("watchtower")){const s={name:e.split("_")[1],state:t.State};a.stateAppsNames.push(s)}}else if(s.push(e),!e.includes("watchtower")){const s={name:e,state:t.State};a.stateAppsNames.push(s)}}));const n=[...new Set(s)];for(const a of n){const t=await L.Z.getAppSpecifics(a);"success"===t.data.status&&i.push(t.data.data)}a.tableconfig.running.status=t.data.status,a.tableconfig.running.apps=i,a.tableconfig.running.loading=!1,a.tableconfig.running.status=t.data.data}),t)},async appsGetAvailableApps(){this.tableconfig.available.loading=!0;const t=await L.Z.availableApps();this.tableconfig.available.status=t.data.status,this.tableconfig.available.apps=t.data.data,this.tableconfig.available.loading=!1},openApp(t,a,e){if(e&&a){const t=`http://${a}:${e}`;this.openSite(t)}else{const a=this.installedApp(t),e=O.get("backendURL")||`http://${this.userconfig.externalip}:${this.config.apiPort}`,s=e.split(":")[1].split("//")[1],i=a.port||a.ports?a?.ports[0]:a?.compose[0].ports[0];if(""===i)return void this.showToast("danger","Unable to open App :(, App does not have a port.");const n=`http://${s}:${i}`;this.openSite(n)}},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let a=0;aa.name===t))},openSite(t){const a=window.open(t,"_blank");a.focus()},async stopApp(t){this.output=[],this.showToast("warning",`Stopping ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.stopApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async startApp(t){this.output=[],this.showToast("warning",`Starting ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.startApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async restartApp(t){this.output=[],this.showToast("warning",`Restarting ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.restartApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListRunningApps(5e3)},async pauseApp(t){this.output=[],this.showToast("warning",`Pausing ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.pauseApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data)},async unpauseApp(t){this.output=[],this.showToast("warning",`Unpausing ${this.getAppName(t)}`);const a=localStorage.getItem("zelidauth"),e=await L.Z.unpauseApp(a,t);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data)},redeployAppSoft(t){this.redeployApp(t,!1)},redeployAppHard(t){this.redeployApp(t,!0)},async redeployApp(t,a){const e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.showToast("warning",`Redeploying ${this.getAppName(t)}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/redeploy/${t}/${a}`,i);"error"===n.data.status?this.showToast("danger",n.data.data.message||n.data.data):(this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data))},async removeApp(t){const a=this.getAppName(t),e=this;this.output=[],this.showToast("warning",`Removing ${a}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/appremove/${t}`,i);"error"===n.data.status?this.showToast("danger",n.data.data.message||n.data.data):(this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data),setTimeout((()=>{this.appsGetInstalledApps(),this.appsGetListRunningApps(),e.managedApplication=""}),5e3))},async installAppLocally(t){const a=this.getAppName(t),e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.downloading=!0,this.showToast("warning",`Installing ${a}`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},n=await L.Z.justAPI().get(`/apps/installapplocally/${t}`,i);if("error"===n.data.status)this.showToast("danger",n.data.data.message||n.data.data);else{console.log(n),this.output=JSON.parse(`[${n.data.replace(/}{/g,"},{")}]`),console.log(this.output);for(let t=0;t{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.loadLocations(t)})))},async loadLocations(t){console.log(t),this.appLocations=[];const a=await L.Z.getAppLocation(t.item.name).catch((t=>{this.showToast("danger",t.message||t)}));if(console.log(a),"success"===a.data.status){const t=a.data.data;this.appLocations=t,this.appLocationOptions.totalRows=this.appLocations.length}},openAppManagement(t){const a=this.getAppName(t);this.managedApplication=a},clearManagedApplication(){this.managedApplication="",this.appsGetInstalledApps(),this.appsGetListRunningApps()},onFilteredLocal(t){this.tableconfig.local.totalRows=t.length,this.tableconfig.local.currentPage=1},stringOutput(){let t="";return this.output.forEach((a=>{"success"===a.status?t+=`${a.data.message||a.data}\r\n`:"Downloading"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:a.progressDetail,variant:"danger"}):"Verifying Checksum"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"warning"}):"Download complete"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"info"}):"Extracting"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:a.progressDetail,variant:"primary"}):"Pull complete"===a.status?(this.downloadOutputReturned=!0,this.downloadOutput[a.id]={id:a.id,detail:{current:1,total:1},variant:"success"}):"error"===a.status?t+=`Error: ${JSON.stringify(a.data)}\r\n`:t+=`${a.status}\r\n`})),t},showToast(t,a,e="InfoIcon"){this.$toast({component:x.Z,props:{title:a,icon:e,variant:t}})},constructAutomaticDomains(t,a="",e,s=0){const i=e.toLowerCase(),n=a.toLowerCase();if(!n){const a=[];0===s&&a.push(`${i}.app.runonflux.io`);for(let e=0;et.code===a))||{name:"ALL"};return`Continent: ${e.name||"Unkown"}`}if(t.startsWith("b")){const a=t.slice(1),e=B.countries.find((t=>t.code===a))||{name:"ALL"};return`Country: ${e.name||"Unkown"}`}if(t.startsWith("ac")){const a=t.slice(2),e=a.split("_"),s=e[0],i=e[1],n=e[2],o=B.continents.find((t=>t.code===s))||{name:"ALL"},l=B.countries.find((t=>t.code===i))||{name:"ALL"};let r=`Allowed location: Continent: ${o.name}`;return i&&(r+=`, Country: ${l.name}`),n&&(r+=`, Region: ${n}`),r}if(t.startsWith("a!c")){const a=t.slice(3),e=a.split("_"),s=e[0],i=e[1],n=e[2],o=B.continents.find((t=>t.code===s))||{name:"ALL"},l=B.countries.find((t=>t.code===i))||{name:"ALL"};let r=`Forbidden location: Continent: ${o.name}`;return i&&(r+=`, Country: ${l.name}`),n&&(r+=`, Region: ${n}`),r}return"All locations allowed"}}},T=I;var M=e(1001),F=(0,M.Z)(T,s,i,!1,null,null,null);const G=F.exports},63005:(t,a,e)=>{e.r(a),e.d(a,{default:()=>n});const s={year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"},i={year:"numeric",month:"short",day:"numeric"},n={shortDate:s,date:i}}}]); \ No newline at end of file diff --git a/HomeUI/dist/js/7806.js b/HomeUI/dist/js/2152.js similarity index 99% rename from HomeUI/dist/js/7806.js rename to HomeUI/dist/js/2152.js index c529aea66..9f33f23d0 100644 --- a/HomeUI/dist/js/7806.js +++ b/HomeUI/dist/js/2152.js @@ -1 +1 @@ -"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[7806],{76567:(t,e,a)=>{a.r(e),a.d(e,{default:()=>X});var s=function(){var t=this,e=t._self._c;return e("div",[t.managedApplication?t._e():e("b-tabs",{attrs:{pills:""},on:{"activate-tab":t.tabChanged}},[e("my-apps-tab",{ref:"activeApps",attrs:{apps:t.activeApps,loading:t.loading.active,"logged-in":t.loggedIn,"current-block-height":t.daemonBlockCount},on:{"open-app-management":t.openAppManagement}}),e("my-apps-tab",{ref:"expiredApps",attrs:{apps:t.expiredApps,loading:t.loading.expired,"logged-in":t.loggedIn,"current-block-height":t.daemonBlockCount,"active-apps-tab":!1}})],1),t.managedApplication?e("management",{attrs:{"app-name":t.managedApplication,global:!0,"installed-apps":[]},on:{back:t.clearManagedApplication}}):t._e()],1)},i=[],n=(a(70560),a(67890)),o=function(){var t=this,e=t._self._c;return e("b-tab",{attrs:{active:t.activeAppsTab,title:t.activeAppsTab?"My Active Apps":"My Expired Apps"}},[e("b-overlay",{attrs:{show:t.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Per Page","label-cols-sm":"auto","label-align-sm":"left"}},[e("b-form-select",{staticClass:"w-50",attrs:{size:"sm",options:t.tableOptions.pageOptions},model:{value:t.tableOptions.perPage,callback:function(e){t.$set(t.tableOptions,"perPage",e)},expression:"tableOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{type:"search",placeholder:"Type to Search"},model:{value:t.tableOptions.filter,callback:function(e){t.$set(t.tableOptions,"filter",e)},expression:"tableOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableOptions.filter},on:{click:function(e){t.tableOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1)],1),e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"myapps-table",attrs:{striped:"",outlined:"",responsive:"",items:t.apps,fields:t.mergedFields,"sort-by":t.tableOptions.sortBy,"sort-desc":t.tableOptions.sortDesc,"sort-direction":t.tableOptions.sortDirection,filter:t.tableOptions.filter,"per-page":t.tableOptions.perPage,"current-page":t.tableOptions.currentPage,"show-empty":"","sort-icon-left":"","empty-text":t.emptyText},on:{"update:sortBy":function(e){return t.$set(t.tableOptions,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.tableOptions,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.tableOptions,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.tableOptions,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),t.activeAppsTab?e("expiry-label",{attrs:{"expire-time":t.labelForExpire(a.item.expire,a.item.height)}}):t._e()],1)])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.apps)}}},[e("v-icon",{staticClass:"ml-1",attrs:{name:a.detailsShowing?"chevron-up":"chevron-down"}})],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(s,i){return e("b-card",{key:i,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,a.item.name,{componentName:s.name,index:i}).toString()}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),t.activeAppsTab?e("locations",{attrs:{"app-locations":t.appLocations}}):t._e()],1)]}},{key:"cell(actions)",fn:function(a){return[t.activeAppsTab?e("manage",{attrs:{row:a},on:{"open-app-management":t.openAppManagement}}):e("redeploy",{attrs:{row:a}})]}}])})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t.apps?.length?e("div",[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1.4",icon:"layers"}}),t._v("  "),e("b",[t._v(" "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.apps.length)+" ")])])],1):t._e(),e("div",{staticClass:"text-center flex-grow-1"},[t.apps?.length?e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.apps.length,"per-page":t.tableOptions.perPage,align:"center",size:"sm"},model:{value:t.tableOptions.currentPage,callback:function(e){t.$set(t.tableOptions,"currentPage",e)},expression:"tableOptions.currentPage"}}):t._e()],1)])])],1)],1)],1)},r=[],l=a(43672),p=a(34547),c=a(51748),d=function(){var t=this,e=t._self._c;return e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"p-0 m-0"},[e("div",{staticClass:"map"},[e("flux-map",{staticClass:"mb-0",attrs:{"show-all":!1,nodes:t.allNodesLocations,"filter-nodes":t.mapLocations},on:{"nodes-updated":t.nodesUpdated}})],1)])],1),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,filter:t.appLocationOptions.filter,"thead-class":"d-none","show-empty":"","sort-icon-left":"","empty-text":"No instances found..."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(t.row.item.name,a.item.ip.split(":")[0],t.getProperPort(t.row.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(a.item.ip.split(":")[0],a.item.ip.split(":")[1]?+a.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)},m=[],u=a(92355);const g={components:{FluxMap:u.Z},props:{appLocations:{type:Array,default(){return[]}}},data(){return{allNodesLocations:[],appLocationFields:[{key:"ip",label:"IP Address"},{key:"visit",label:""}],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,filterOn:[],filter:""}}},computed:{mapLocations(){return this.appLocations.map((t=>t.ip))}},methods:{nodesUpdated(t){this.$set(this.allNodesLocations,t)},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let e=0;e{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const a=e.data.data,s=a[0];if(s){const e=`https://${t}.app.runonflux.io`;this.openSite(e)}else this.showToast("danger","Application is awaiting launching...")}else this.showToast("danger",e.data.data.message||e.data.data)},openSite(t){const e=window.open(t,"_blank");e.focus()}}},P=O;var D=(0,h.Z)(P,k,L,!1,null,null,null);const T=D.exports;var M=function(){var t=this,e=t._self._c;return e("span",{class:t.spanClasses},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.expireTime)+"   ")],1)},B=[];const N={components:{},props:{expireTime:{type:String,required:!0}},data(){return{}},computed:{spanClasses(){return{"red-text":this.isLessThanTwoDays(this.expireTime),"no-wrap":!0}}},methods:{isLessThanTwoDays(t){if(!t)return!0;const e=t.split(",").map((t=>t.trim()));let a=0,s=0,i=0;e.forEach((t=>{t.includes("days")?a=parseInt(t,10):t.includes("hours")?s=parseInt(t,10):t.includes("minutes")&&(i=parseInt(t,10))}));const n=24*a*60+60*s+i;return n<2880}}},E=N;var I=(0,h.Z)(E,M,B,!1,null,null,null);const R=I.exports,z=a(57306),F={expose:["hideTabs"],components:{Locations:y,Redeploy:$,Manage:T,ExpiryLabel:R,ListEntry:c.Z},props:{apps:{type:Array,required:!0},currentBlockHeight:{type:Number,required:!0},activeAppsTab:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},fields:{type:Array,default(){return[]}},loggedIn:{type:Boolean,default:!1}},data(){return{appLocations:[],defaultFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"5%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"actions",label:"",class:"text-center",thStyle:{width:"8%"}}],tableOptions:{perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:""}}},computed:{emptyText(){return this.loggedIn?this.activeAppsTab?"No Global Apps are owned.":"No owned Apps are expired.":"You must log in to see your applications."},mergedFields(){const t=this.fields.map((t=>({...t})));return this.defaultFields.forEach((e=>{t.find((t=>t.key===e.key))||t.push(e)})),t}},methods:{hideTabs(){this.apps.forEach((t=>{this.$set(t,"_showDetails",!1)}))},openAppManagement(t){this.$emit("open-app-management",t)},getGeolocation(t){if(t.startsWith("a")&&!t.startsWith("ac")&&!t.startsWith("a!c")){const e=t.slice(1),a=z.continents.find((t=>t.code===e))||{name:"ALL"};return`Continent: ${a.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),a=z.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${a.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),a=e.split("_"),s=a[0],i=a[1],n=a[2],o=z.continents.find((t=>t.code===s))||{name:"ALL"},r=z.countries.find((t=>t.code===i))||{name:"ALL"};let l=`Allowed location: Continent: ${o.name}`;return i&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}if(t.startsWith("a!c")){const e=t.slice(3),a=e.split("_"),s=a[0],i=a[1],n=a[2],o=z.continents.find((t=>t.code===s))||{name:"ALL"},r=z.countries.find((t=>t.code===i))||{name:"ALL"};let l=`Forbidden location: Continent: ${o.name}`;return i&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}return"All locations allowed"},constructAutomaticDomains(t,e,a={}){const{componentName:s="",index:i=0}=a,n=e.toLowerCase(),o=s.toLowerCase();if(!o){const e=[];0===i&&e.push(`${n}.app.runonflux.io`);for(let a=0;a{const i=Math.floor(e/a[t]);1===i&&s.push(` ${i} ${t}`),i>=2&&s.push(` ${i} ${t}s`),e%=a[t]})),s},labelForExpire(t,e){if(!e)return"Application Expired";if(-1===this.currentBlockHeight)return"Not possible to calculate expiration";const a=t||22e3,s=e+a-this.currentBlockHeight;if(s<1)return"Application Expired";const i=2*s,n=this.minutesToString(i);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},getServiceUsageValue(t,e,a){if("undefined"===typeof a?.compose)return this.usage=[+a.ram,+a.cpu,+a.hdd],this.usage[t];const s=this.getServiceUsage(e,a.compose);return s[t]},getServiceUsage(t,e){let a=0,s=0,i=0;return e.forEach((t=>{a+=t.ram,s+=t.cpu,i+=t.hdd})),[a,s.toFixed(1),i]},showToast(t,e,a="InfoIcon"){this.$toast({component:p.Z,props:{title:e,icon:a,variant:t}})},showLocations(t,e){t.detailsShowing?t.toggleDetails():(e.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.activeAppsTab&&this.loadLocations(t)})))},async loadLocations(t){const e=await l.Z.getAppLocation(t.item.name).catch((t=>(this.showToast("danger",t.message||t),{data:{status:"fail"}})));if("success"===e.data.status){const{data:{data:t}}=e;this.appLocations=t}}}},U=F;var Z=(0,h.Z)(U,o,r,!1,null,null,null);const G=Z.exports;var V=a(27616);const j=a(80129),q={components:{Management:n.Z,MyAppsTab:G},data(){return{activeApps:[],expiredApps:[],managedApplication:"",daemonBlockCount:-1,loading:{active:!0,expired:!0},loggedIn:!1}},created(){this.setLoginStatus(),this.getApps(),this.getDaemonBlockCount()},methods:{async getDaemonBlockCount(){const t=await V.Z.getBlockCount().catch((()=>({data:{status:"fail"}})));"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},openAppManagement(t){this.managedApplication=t},clearManagedApplication(){this.managedApplication="",this.$nextTick((()=>{this.tabChanged()}))},async getActiveApps(){this.loading.active=!0;const t=localStorage.getItem("zelidauth"),e=j.parse(t);if(!e)return void this.$set(this.activeApps,[]);const a=await l.Z.myGlobalAppSpecifications(e.zelid).catch((()=>({data:{data:[]}})));this.activeApps=a.data.data,this.loading.active=!1},async getExpiredApps(){try{const t=localStorage.getItem("zelidauth"),e=j.parse(t);if(!e.zelid)return void this.$set(this.expiredApps,[]);const a=await l.Z.permanentMessagesOwner(e.zelid).catch((()=>({data:{data:[]}}))),s=[],{data:{data:i}}=a;i.forEach((t=>{const e=s.find((e=>e.appSpecifications.name===t.appSpecifications.name));if(e){if(t.height>e.height){const e=s.findIndex((e=>e.appSpecifications.name===t.appSpecifications.name));e>-1&&(s.splice(e,1),s.push(t))}}else s.push(t)}));const n=[];s.forEach((t=>{const e=this.activeApps.find((e=>e.name.toLowerCase()===t.appSpecifications.name.toLowerCase()));if(!e){const e=t.appSpecifications;n.push(e)}})),this.expiredApps=n}catch(t){console.log(t)}finally{this.loading.expired=!1}},async getApps(){await this.getActiveApps(),await this.getExpiredApps()},tabChanged(){this.$refs.activeApps.hideTabs(),this.$refs.expiredApps.hideTabs(),this.setLoginStatus()},setLoginStatus(){const t=localStorage.getItem("zelidauth"),e=j.parse(t);this.loggedIn=Boolean(e.zelid)}}},W=q;var H=(0,h.Z)(W,s,i,!1,null,null,null);const X=H.exports}}]); \ No newline at end of file +"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[2152],{76567:(t,e,a)=>{a.r(e),a.d(e,{default:()=>X});var s=function(){var t=this,e=t._self._c;return e("div",[t.managedApplication?t._e():e("b-tabs",{attrs:{pills:""},on:{"activate-tab":t.tabChanged}},[e("my-apps-tab",{ref:"activeApps",attrs:{apps:t.activeApps,loading:t.loading.active,"logged-in":t.loggedIn,"current-block-height":t.daemonBlockCount},on:{"open-app-management":t.openAppManagement}}),e("my-apps-tab",{ref:"expiredApps",attrs:{apps:t.expiredApps,loading:t.loading.expired,"logged-in":t.loggedIn,"current-block-height":t.daemonBlockCount,"active-apps-tab":!1}})],1),t.managedApplication?e("management",{attrs:{"app-name":t.managedApplication,global:!0,"installed-apps":[]},on:{back:t.clearManagedApplication}}):t._e()],1)},i=[],n=(a(70560),a(78182)),o=function(){var t=this,e=t._self._c;return e("b-tab",{attrs:{active:t.activeAppsTab,title:t.activeAppsTab?"My Active Apps":"My Expired Apps"}},[e("b-overlay",{attrs:{show:t.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Per Page","label-cols-sm":"auto","label-align-sm":"left"}},[e("b-form-select",{staticClass:"w-50",attrs:{size:"sm",options:t.tableOptions.pageOptions},model:{value:t.tableOptions.perPage,callback:function(e){t.$set(t.tableOptions,"perPage",e)},expression:"tableOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{type:"search",placeholder:"Type to Search"},model:{value:t.tableOptions.filter,callback:function(e){t.$set(t.tableOptions,"filter",e)},expression:"tableOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableOptions.filter},on:{click:function(e){t.tableOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1)],1),e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"myapps-table",attrs:{striped:"",outlined:"",responsive:"",items:t.apps,fields:t.mergedFields,"sort-by":t.tableOptions.sortBy,"sort-desc":t.tableOptions.sortDesc,"sort-direction":t.tableOptions.sortDirection,filter:t.tableOptions.filter,"per-page":t.tableOptions.perPage,"current-page":t.tableOptions.currentPage,"show-empty":"","sort-icon-left":"","empty-text":t.emptyText},on:{"update:sortBy":function(e){return t.$set(t.tableOptions,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.tableOptions,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.tableOptions,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.tableOptions,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),t.activeAppsTab?e("expiry-label",{attrs:{"expire-time":t.labelForExpire(a.item.expire,a.item.height)}}):t._e()],1)])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.apps)}}},[e("v-icon",{staticClass:"ml-1",attrs:{name:a.detailsShowing?"chevron-up":"chevron-down"}})],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(s,i){return e("b-card",{key:i,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(s.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,a.item.name,{componentName:s.name,index:i}).toString()}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)])}))],2),t.activeAppsTab?e("locations",{attrs:{"app-locations":t.appLocations}}):t._e()],1)]}},{key:"cell(actions)",fn:function(a){return[t.activeAppsTab?e("manage",{attrs:{row:a},on:{"open-app-management":t.openAppManagement}}):e("redeploy",{attrs:{row:a}})]}}])})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t.apps?.length?e("div",[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1.4",icon:"layers"}}),t._v("  "),e("b",[t._v(" "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "+t._s(t.apps.length)+" ")])])],1):t._e(),e("div",{staticClass:"text-center flex-grow-1"},[t.apps?.length?e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.apps.length,"per-page":t.tableOptions.perPage,align:"center",size:"sm"},model:{value:t.tableOptions.currentPage,callback:function(e){t.$set(t.tableOptions,"currentPage",e)},expression:"tableOptions.currentPage"}}):t._e()],1)])])],1)],1)],1)},r=[],l=a(43672),p=a(34547),c=a(51748),d=function(){var t=this,e=t._self._c;return e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"p-0 m-0"},[e("div",{staticClass:"map"},[e("flux-map",{staticClass:"mb-0",attrs:{"show-all":!1,nodes:t.allNodesLocations,"filter-nodes":t.mapLocations},on:{"nodes-updated":t.nodesUpdated}})],1)])],1),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,filter:t.appLocationOptions.filter,"thead-class":"d-none","show-empty":"","sort-icon-left":"","empty-text":"No instances found..."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(t.row.item.name,a.item.ip.split(":")[0],t.getProperPort(t.row.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(a.item.ip.split(":")[0],a.item.ip.split(":")[1]?+a.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)},m=[],u=a(92355);const g={components:{FluxMap:u.Z},props:{appLocations:{type:Array,default(){return[]}}},data(){return{allNodesLocations:[],appLocationFields:[{key:"ip",label:"IP Address"},{key:"visit",label:""}],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,filterOn:[],filter:""}}},computed:{mapLocations(){return this.appLocations.map((t=>t.ip))}},methods:{nodesUpdated(t){this.$set(this.allNodesLocations,t)},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let e=0;e{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const a=e.data.data,s=a[0];if(s){const e=`https://${t}.app.runonflux.io`;this.openSite(e)}else this.showToast("danger","Application is awaiting launching...")}else this.showToast("danger",e.data.data.message||e.data.data)},openSite(t){const e=window.open(t,"_blank");e.focus()}}},P=O;var D=(0,h.Z)(P,k,L,!1,null,null,null);const T=D.exports;var M=function(){var t=this,e=t._self._c;return e("span",{class:t.spanClasses},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.expireTime)+"   ")],1)},B=[];const N={components:{},props:{expireTime:{type:String,required:!0}},data(){return{}},computed:{spanClasses(){return{"red-text":this.isLessThanTwoDays(this.expireTime),"no-wrap":!0}}},methods:{isLessThanTwoDays(t){if(!t)return!0;const e=t.split(",").map((t=>t.trim()));let a=0,s=0,i=0;e.forEach((t=>{t.includes("days")?a=parseInt(t,10):t.includes("hours")?s=parseInt(t,10):t.includes("minutes")&&(i=parseInt(t,10))}));const n=24*a*60+60*s+i;return n<2880}}},E=N;var I=(0,h.Z)(E,M,B,!1,null,null,null);const R=I.exports,z=a(57306),F={expose:["hideTabs"],components:{Locations:y,Redeploy:$,Manage:T,ExpiryLabel:R,ListEntry:c.Z},props:{apps:{type:Array,required:!0},currentBlockHeight:{type:Number,required:!0},activeAppsTab:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},fields:{type:Array,default(){return[]}},loggedIn:{type:Boolean,default:!1}},data(){return{appLocations:[],defaultFields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"5%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"actions",label:"",class:"text-center",thStyle:{width:"8%"}}],tableOptions:{perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:""}}},computed:{emptyText(){return this.loggedIn?this.activeAppsTab?"No Global Apps are owned.":"No owned Apps are expired.":"You must log in to see your applications."},mergedFields(){const t=this.fields.map((t=>({...t})));return this.defaultFields.forEach((e=>{t.find((t=>t.key===e.key))||t.push(e)})),t}},methods:{hideTabs(){this.apps.forEach((t=>{this.$set(t,"_showDetails",!1)}))},openAppManagement(t){this.$emit("open-app-management",t)},getGeolocation(t){if(t.startsWith("a")&&!t.startsWith("ac")&&!t.startsWith("a!c")){const e=t.slice(1),a=z.continents.find((t=>t.code===e))||{name:"ALL"};return`Continent: ${a.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),a=z.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${a.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),a=e.split("_"),s=a[0],i=a[1],n=a[2],o=z.continents.find((t=>t.code===s))||{name:"ALL"},r=z.countries.find((t=>t.code===i))||{name:"ALL"};let l=`Allowed location: Continent: ${o.name}`;return i&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}if(t.startsWith("a!c")){const e=t.slice(3),a=e.split("_"),s=a[0],i=a[1],n=a[2],o=z.continents.find((t=>t.code===s))||{name:"ALL"},r=z.countries.find((t=>t.code===i))||{name:"ALL"};let l=`Forbidden location: Continent: ${o.name}`;return i&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}return"All locations allowed"},constructAutomaticDomains(t,e,a={}){const{componentName:s="",index:i=0}=a,n=e.toLowerCase(),o=s.toLowerCase();if(!o){const e=[];0===i&&e.push(`${n}.app.runonflux.io`);for(let a=0;a{const i=Math.floor(e/a[t]);1===i&&s.push(` ${i} ${t}`),i>=2&&s.push(` ${i} ${t}s`),e%=a[t]})),s},labelForExpire(t,e){if(!e)return"Application Expired";if(-1===this.currentBlockHeight)return"Not possible to calculate expiration";const a=t||22e3,s=e+a-this.currentBlockHeight;if(s<1)return"Application Expired";const i=2*s,n=this.minutesToString(i);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},getServiceUsageValue(t,e,a){if("undefined"===typeof a?.compose)return this.usage=[+a.ram,+a.cpu,+a.hdd],this.usage[t];const s=this.getServiceUsage(e,a.compose);return s[t]},getServiceUsage(t,e){let a=0,s=0,i=0;return e.forEach((t=>{a+=t.ram,s+=t.cpu,i+=t.hdd})),[a,s.toFixed(1),i]},showToast(t,e,a="InfoIcon"){this.$toast({component:p.Z,props:{title:e,icon:a,variant:t}})},showLocations(t,e){t.detailsShowing?t.toggleDetails():(e.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.activeAppsTab&&this.loadLocations(t)})))},async loadLocations(t){const e=await l.Z.getAppLocation(t.item.name).catch((t=>(this.showToast("danger",t.message||t),{data:{status:"fail"}})));if("success"===e.data.status){const{data:{data:t}}=e;this.appLocations=t}}}},U=F;var Z=(0,h.Z)(U,o,r,!1,null,null,null);const G=Z.exports;var V=a(27616);const j=a(80129),q={components:{Management:n.Z,MyAppsTab:G},data(){return{activeApps:[],expiredApps:[],managedApplication:"",daemonBlockCount:-1,loading:{active:!0,expired:!0},loggedIn:!1}},created(){this.setLoginStatus(),this.getApps(),this.getDaemonBlockCount()},methods:{async getDaemonBlockCount(){const t=await V.Z.getBlockCount().catch((()=>({data:{status:"fail"}})));"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},openAppManagement(t){this.managedApplication=t},clearManagedApplication(){this.managedApplication="",this.$nextTick((()=>{this.tabChanged()}))},async getActiveApps(){this.loading.active=!0;const t=localStorage.getItem("zelidauth"),e=j.parse(t);if(!e)return void this.$set(this.activeApps,[]);const a=await l.Z.myGlobalAppSpecifications(e.zelid).catch((()=>({data:{data:[]}})));this.activeApps=a.data.data,this.loading.active=!1},async getExpiredApps(){try{const t=localStorage.getItem("zelidauth"),e=j.parse(t);if(!e.zelid)return void this.$set(this.expiredApps,[]);const a=await l.Z.permanentMessagesOwner(e.zelid).catch((()=>({data:{data:[]}}))),s=[],{data:{data:i}}=a;i.forEach((t=>{const e=s.find((e=>e.appSpecifications.name===t.appSpecifications.name));if(e){if(t.height>e.height){const e=s.findIndex((e=>e.appSpecifications.name===t.appSpecifications.name));e>-1&&(s.splice(e,1),s.push(t))}}else s.push(t)}));const n=[];s.forEach((t=>{const e=this.activeApps.find((e=>e.name.toLowerCase()===t.appSpecifications.name.toLowerCase()));if(!e){const e=t.appSpecifications;n.push(e)}})),this.expiredApps=n}catch(t){console.log(t)}finally{this.loading.expired=!1}},async getApps(){await this.getActiveApps(),await this.getExpiredApps()},tabChanged(){this.$refs.activeApps.hideTabs(),this.$refs.expiredApps.hideTabs(),this.setLoginStatus()},setLoginStatus(){const t=localStorage.getItem("zelidauth"),e=j.parse(t);this.loggedIn=Boolean(e.zelid)}}},W=q;var H=(0,h.Z)(W,s,i,!1,null,null,null);const X=H.exports}}]); \ No newline at end of file diff --git a/HomeUI/dist/js/4210.js b/HomeUI/dist/js/3707.js similarity index 99% rename from HomeUI/dist/js/4210.js rename to HomeUI/dist/js/3707.js index a4b6b4f27..4c03dded7 100644 --- a/HomeUI/dist/js/4210.js +++ b/HomeUI/dist/js/3707.js @@ -1 +1 @@ -"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[4210],{99589:(t,e,a)=>{a.r(e),a.d(e,{default:()=>A});var i=function(){var t=this,e=t._self._c;return e("div",[t.managedApplication?t._e():e("b-tabs",{attrs:{pills:""},on:{"activate-tab":function(e){return t.tabChanged()}}},[e("b-tab",{attrs:{title:"Active Apps"}},[e("b-overlay",{attrs:{show:t.tableconfig.active.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.active.pageOptions},model:{value:t.tableconfig.active.perPage,callback:function(e){t.$set(t.tableconfig.active,"perPage",e)},expression:"tableconfig.active.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.active.filter,callback:function(e){t.$set(t.tableconfig.active,"filter",e)},expression:"tableconfig.active.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableconfig.active.filter},on:{click:function(e){t.tableconfig.active.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"apps-active-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.active.perPage,"current-page":t.tableconfig.active.currentPage,items:t.tableconfig.active.apps,fields:t.tableconfig.active.fields,"sort-by":t.tableconfig.active.sortBy,"sort-desc":t.tableconfig.active.sortDesc,"sort-direction":t.tableconfig.active.sortDirection,filter:t.tableconfig.active.filter,"sort-icon-left":"","show-empty":"","empty-text":"No Flux Apps are active"},on:{"update:sortBy":function(e){return t.$set(t.tableconfig.active,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.tableconfig.active,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.tableconfig.active,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.tableconfig.active,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),e("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(a.item.expire,a.item.height))}},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(a.item.expire,a.item.height))+"   ")],1)])])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.tableconfig.active.apps)}}},[a.detailsShowing?t._e():e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),a.detailsShowing?e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Copy to Clipboard",expression:"'Copy to Clipboard'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-2",attrs:{id:`copy-active-app-${a.item.name}`,size:"sm",variant:"outline-dark",pill:""},on:{click:function(e){t.copyToClipboard(JSON.stringify(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"clipboard"}}),t._v(" Copy Specifications ")],1),e("b-button",{staticClass:"mr-2",attrs:{id:`deploy-active-app-${a.item.name}`,size:"sm",variant:"outline-dark",pill:""}},[e("b-icon",{attrs:{scale:"1",icon:"building"}}),t._v(" Deploy Myself ")],1),e("confirm-dialog",{attrs:{target:`deploy-active-app-${a.item.name}`,"confirm-button":"Deploy App"},on:{confirm:function(e){return t.redeployApp(a.item,!0)}}})],1),e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,void 0,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(i,s){return e("b-card",{key:s,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(i.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:i.name}}),e("list-entry",{attrs:{title:"Description",data:i.description}}),e("list-entry",{attrs:{title:"Repository",data:i.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:i.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:i.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(i.ports,i.name,a.item.name,s).toString()}}),e("list-entry",{attrs:{title:"Ports",data:i.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:i.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:i.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:i.environmentParameters.length>0?i.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:i.commands.length>0?i.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:i.secrets?"Content Encrypted":"none"}}),i.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${i.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${i.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${i.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${i.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${i.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${i.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${i.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${i.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${i.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${i.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${i.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${i.hdd} GB`}})],1)],1)])}))],2),e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filter,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(i){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(a.item.name,i.item.ip.split(":")[0],t.getProperPort(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(i.item.ip.split(":")[0],i.item.ip.split(":")[1]?+i.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex no-wrap"},["fluxteam"===t.privilege?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage Installed App",expression:"'Manage Installed App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`manage-installed-app-${a.item.name}`,size:"sm",variant:"outline-dark"}},[e("b-icon",{attrs:{scale:"1",icon:"gear"}}),t._v(" Manage ")],1):t._e(),e("confirm-dialog",{attrs:{target:`manage-installed-app-${a.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(e){return t.openAppManagement(a.item.name)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(e){return t.openGlobalApp(a.item.name)}}},[e("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1),t._v("    ")],1)]}}],null,!1,3738826931)})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.tableconfig.active?.apps?.length||1,"per-page":t.tableconfig.active.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.active.currentPage,callback:function(e){t.$set(t.tableconfig.active,"currentPage",e)},expression:"tableconfig.active.currentPage"}})],1)],1)],1)],1),e("b-tab",{attrs:{title:"Marketplace Deployments"}},[e("b-overlay",{attrs:{show:t.tableconfig.active.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.active_marketplace.pageOptions},model:{value:t.tableconfig.active_marketplace.perPage,callback:function(e){t.$set(t.tableconfig.active_marketplace,"perPage",e)},expression:"tableconfig.active_marketplace.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.active_marketplace.filter,callback:function(e){t.$set(t.tableconfig.active_marketplace,"filter",e)},expression:"tableconfig.active_marketplace.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableconfig.active_marketplace.filter},on:{click:function(e){t.tableconfig.active_marketplace.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"apps-active-table",attrs:{striped:"",outlined:"",responsive:"",items:t.tableconfig.active_marketplace.apps,fields:t.tableconfig.active_marketplace.fields,"per-page":t.tableconfig.active_marketplace.perPage,"current-page":t.tableconfig.active_marketplace.currentPage,filter:t.tableconfig.active_marketplace.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Flux Marketplace Apps are active"},scopedSlots:t._u([{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex no-wrap"},["fluxteam"===t.privilege?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage Installed App",expression:"'Manage Installed App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`manage-installed-app-${a.item.name}`,size:"sm",variant:"outline-dark"}},[e("b-icon",{attrs:{scale:"1",icon:"gear"}}),t._v(" Manage ")],1):t._e(),e("confirm-dialog",{attrs:{target:`manage-installed-app-${a.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(e){return t.openAppManagement(a.item.name)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(e){return t.openGlobalApp(a.item.name)}}},[e("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)],1)]}},{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),e("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(a.item.expire,a.item.height))}},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(a.item.expire,a.item.height))+"   ")],1)])])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.tableconfig.active_marketplace.apps)}}},[a.detailsShowing?t._e():e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),a.detailsShowing?e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,void 0,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(i,s){return e("b-card",{key:s,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(i.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:i.name}}),e("list-entry",{attrs:{title:"Description",data:i.description}}),e("list-entry",{attrs:{title:"Repository",data:i.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:i.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:i.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(i.ports,i.name,a.item.name,s).toString()}}),e("list-entry",{attrs:{title:"Ports",data:i.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:i.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:i.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:i.environmentParameters.length>0?i.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:i.commands.length>0?i.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:i.secrets?"Content Encrypted":"none"}}),i.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${i.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${i.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${i.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${i.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${i.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${i.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${i.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${i.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${i.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${i.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${i.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${i.hdd} GB`}})],1)],1)])}))],2),e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filter,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(i){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(a.item.name,i.item.ip.split(":")[0],t.getProperPort(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(i.item.ip.split(":")[0],i.item.ip.split(":")[1]?+i.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}}],null,!1,2175662911)})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.tableconfig.active_marketplace?.apps?.length||1,"per-page":t.tableconfig.active_marketplace.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.active_marketplace.currentPage,callback:function(e){t.$set(t.tableconfig.active_marketplace,"currentPage",e)},expression:"tableconfig.active_marketplace.currentPage"}})],1)],1)],1)],1)],1),t.managedApplication?e("div",[e("management",{attrs:{"app-name":t.managedApplication,global:!0,"installed-apps":[]},on:{back:function(e){return t.clearManagedApplication()}}})],1):t._e()],1)},s=[],n=(a(70560),a(58887)),o=a(51015),r=a(16521),l=a(50725),c=a(86855),p=a(26253),m=a(15193),d=a(66126),u=a(5870),b=a(20266),g=a(20629),f=a(34547),v=a(51748),y=a(87156),h=a(67890),C=a(43672),S=a(27616);const _=a(80129),x=a(57306),k={components:{BTabs:n.M,BTab:o.L,BTable:r.h,BCol:l.l,BCard:c._,BRow:p.T,BButton:m.T,BOverlay:d.X,ListEntry:v.Z,ConfirmDialog:y.Z,Management:h.Z,ToastificationContent:f.Z},directives:{"b-tooltip":u.o,Ripple:b.Z},data(){return{managedApplication:"",daemonBlockCount:-1,appLocations:[],appLocationFields:[{key:"ip",label:"Locations",thStyle:{width:"30%"}},{key:"visit",label:""}],myappLocations:[],myappLocationFields:[{key:"ip",label:"IP Address",thStyle:{width:"30%"}},{key:"visit",label:""}],tableconfig:{active:{apps:[],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"Management",label:"",thStyle:{width:"3%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:"",filterOn:[],perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1},active_marketplace:{apps:[],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"Management",label:"",thStyle:{width:"3%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:"",filterOn:[],perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1}},allApps:[],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,filterOn:[],filter:""}}},computed:{...(0,g.rn)("flux",["config","userconfig","privilege"]),myGlobalApps(){const t=localStorage.getItem("zelidauth"),e=_.parse(t);return this.allApps?this.allApps.filter((t=>t.owner===e.zelid)):[]},isLoggedIn(){const t=localStorage.getItem("zelidauth"),e=_.parse(t);return!!e.zelid}},mounted(){this.appsGetListGlobalApps(),this.getDaemonBlockCount()},methods:{getServiceUsageValue(t,e,a){if("undefined"===typeof a?.compose)return this.usage=[+a.ram,+a.cpu,+a.hdd],this.usage[t];const i=this.getServiceUsage(e,a.compose);return i[t]},getServiceUsage(t,e){let a=0,i=0,s=0;return e.forEach((t=>{a+=t.ram,i+=t.cpu,s+=t.hdd})),[a,i.toFixed(1),s]},isLessThanTwoDays(t){const e=t?.split(",").map((t=>t.trim()));let a=0,i=0,s=0;for(const o of e)o.includes("days")?a=parseInt(o,10):o.includes("hours")?i=parseInt(o,10):o.includes("minutes")&&(s=parseInt(o,10));const n=24*a*60+60*i+s;return n<2880},minutesToString(t){let e=60*t;const a={day:86400,hour:3600,minute:60,second:1},i=[];for(const s in a){const t=Math.floor(e/a[s]);1===t&&i.push(` ${t} ${s}`),t>=2&&i.push(` ${t} ${s}s`),e%=a[s]}return i},labelForExpire(t,e){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const a=t||22e3,i=e+a-this.daemonBlockCount;if(i<1)return"Application Expired";const s=2*i,n=this.minutesToString(s);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},async getDaemonBlockCount(){const t=await S.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},openAppManagement(t){this.managedApplication=t},clearManagedApplication(){this.managedApplication=""},async appsGetListGlobalApps(){this.tableconfig.active.loading=!0;const t=await C.Z.globalAppSpecifications();console.log(t),this.allApps=t.data.data,this.tableconfig.active.apps=this.allApps.filter((t=>{if(t.name.length>=14){const e=t.name.substring(t.name.length-13,t.name.length),a=Number(e);if(!Number.isNaN(a))return!1}return!0})),this.tableconfig.active_marketplace.apps=this.allApps.filter((t=>{if(t.name.length>=14){const e=t.name.substring(t.name.length-13,t.name.length),a=Number(e);if(!Number.isNaN(a))return!0}return!1})),this.tableconfig.active.loading=!1,this.loadPermanentMessages()},async loadPermanentMessages(){try{const t=localStorage.getItem("zelidauth"),e=_.parse(t);if(!e.zelid)return void(this.tableconfig.my_expired.loading=!1);const a=await C.Z.permanentMessagesOwner(e.zelid),i=[];for(const n of a.data.data){const t=i.find((t=>t.appSpecifications.name===n.appSpecifications.name));if(t){if(n.height>t.height){const t=i.findIndex((t=>t.appSpecifications.name===n.appSpecifications.name));t>-1&&(i.splice(t,1),i.push(n))}}else i.push(n)}const s=[];for(const n of i){const t=this.allApps.find((t=>t.name.toLowerCase()===n.appSpecifications.name.toLowerCase()));if(!t){const t=n.appSpecifications;s.push(t)}}this.tableconfig.my_expired.apps=s,this.tableconfig.my_expired.loading=!1}catch(t){console.log(t)}},redeployApp(t,e=!1){const a=t;e&&(a.name+="XXX",a.name+=Date.now().toString().slice(-5));const i=localStorage.getItem("zelidauth"),s=_.parse(i);s?a.owner=s.zelid:e&&(a.owner=""),this.$router.replace({name:"apps-registerapp",params:{appspecs:JSON.stringify(t)}})},copyToClipboard(t){const e=JSON.parse(t);delete e._showDetails;const a=JSON.stringify(e),i=document.createElement("textarea");i.value=a,i.setAttribute("readonly",""),i.style.position="absolute",i.style.left="-9999px",document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i),this.showToast("success","Application Specifications copied to Clipboard")},openApp(t,e,a){if(console.log(t,e,a),a&&e){const t=e,i=a,s=`http://${t}:${i}`;this.openSite(s)}else this.showToast("danger","Unable to open App :(, App does not have a port.")},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let e=0;e{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const a=e.data.data,i=a[0];if(i){const e=`https://${t}.app.runonflux.io`;this.openSite(e)}else this.showToast("danger","Application is awaiting launching...")}else this.showToast("danger",e.data.data.message||e.data.data)},openSite(t){const e=window.open(t,"_blank");e.focus()},tabChanged(){this.tableconfig.active.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.active_marketplace.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.appLocations=[]},showLocations(t,e){t.detailsShowing?t.toggleDetails():(e.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.loadLocations(t)})))},async loadLocations(t){console.log(t),this.appLocations=[];const e=await C.Z.getAppLocation(t.item.name).catch((t=>{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const t=e.data.data;this.appLocations=t}},showToast(t,e,a="InfoIcon"){this.$toast({component:f.Z,props:{title:e,icon:a,variant:t}})},constructAutomaticDomains(t,e="",a,i=0){const s=a.toLowerCase(),n=e.toLowerCase();if(!n){const e=[];0===i&&e.push(`${s}.app.runonflux.io`);for(let a=0;at.code===e))||{name:"ALL"};return`Continent: ${a.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),a=x.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${a.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),a=e.split("_"),i=a[0],s=a[1],n=a[2],o=x.continents.find((t=>t.code===i))||{name:"ALL"},r=x.countries.find((t=>t.code===s))||{name:"ALL"};let l=`Allowed location: Continent: ${o.name}`;return s&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}if(t.startsWith("a!c")){const e=t.slice(3),a=e.split("_"),i=a[0],s=a[1],n=a[2],o=x.continents.find((t=>t.code===i))||{name:"ALL"},r=x.countries.find((t=>t.code===s))||{name:"ALL"};let l=`Forbidden location: Continent: ${o.name}`;return s&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}return"All locations allowed"}}},w=k;var $=a(1001),P=(0,$.Z)(w,i,s,!1,null,null,null);const A=P.exports}}]); \ No newline at end of file +"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[3707],{99589:(t,e,a)=>{a.r(e),a.d(e,{default:()=>A});var i=function(){var t=this,e=t._self._c;return e("div",[t.managedApplication?t._e():e("b-tabs",{attrs:{pills:""},on:{"activate-tab":function(e){return t.tabChanged()}}},[e("b-tab",{attrs:{title:"Active Apps"}},[e("b-overlay",{attrs:{show:t.tableconfig.active.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.active.pageOptions},model:{value:t.tableconfig.active.perPage,callback:function(e){t.$set(t.tableconfig.active,"perPage",e)},expression:"tableconfig.active.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.active.filter,callback:function(e){t.$set(t.tableconfig.active,"filter",e)},expression:"tableconfig.active.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableconfig.active.filter},on:{click:function(e){t.tableconfig.active.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"apps-active-table",attrs:{striped:"",outlined:"",responsive:"","per-page":t.tableconfig.active.perPage,"current-page":t.tableconfig.active.currentPage,items:t.tableconfig.active.apps,fields:t.tableconfig.active.fields,"sort-by":t.tableconfig.active.sortBy,"sort-desc":t.tableconfig.active.sortDesc,"sort-direction":t.tableconfig.active.sortDirection,filter:t.tableconfig.active.filter,"sort-icon-left":"","show-empty":"","empty-text":"No Flux Apps are active"},on:{"update:sortBy":function(e){return t.$set(t.tableconfig.active,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.tableconfig.active,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.tableconfig.active,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.tableconfig.active,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),e("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(a.item.expire,a.item.height))}},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(a.item.expire,a.item.height))+"   ")],1)])])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.tableconfig.active.apps)}}},[a.detailsShowing?t._e():e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),a.detailsShowing?e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Copy to Clipboard",expression:"'Copy to Clipboard'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-2",attrs:{id:`copy-active-app-${a.item.name}`,size:"sm",variant:"outline-dark",pill:""},on:{click:function(e){t.copyToClipboard(JSON.stringify(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"clipboard"}}),t._v(" Copy Specifications ")],1),e("b-button",{staticClass:"mr-2",attrs:{id:`deploy-active-app-${a.item.name}`,size:"sm",variant:"outline-dark",pill:""}},[e("b-icon",{attrs:{scale:"1",icon:"building"}}),t._v(" Deploy Myself ")],1),e("confirm-dialog",{attrs:{target:`deploy-active-app-${a.item.name}`,"confirm-button":"Deploy App"},on:{confirm:function(e){return t.redeployApp(a.item,!0)}}})],1),e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,void 0,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(i,s){return e("b-card",{key:s,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(i.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:i.name}}),e("list-entry",{attrs:{title:"Description",data:i.description}}),e("list-entry",{attrs:{title:"Repository",data:i.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:i.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:i.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(i.ports,i.name,a.item.name,s).toString()}}),e("list-entry",{attrs:{title:"Ports",data:i.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:i.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:i.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:i.environmentParameters.length>0?i.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:i.commands.length>0?i.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:i.secrets?"Content Encrypted":"none"}}),i.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${i.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${i.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${i.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${i.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${i.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${i.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${i.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${i.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${i.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${i.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${i.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${i.hdd} GB`}})],1)],1)])}))],2),e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filter,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(i){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(a.item.name,i.item.ip.split(":")[0],t.getProperPort(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(i.item.ip.split(":")[0],i.item.ip.split(":")[1]?+i.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}},{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex no-wrap"},["fluxteam"===t.privilege?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage Installed App",expression:"'Manage Installed App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`manage-installed-app-${a.item.name}`,size:"sm",variant:"outline-dark"}},[e("b-icon",{attrs:{scale:"1",icon:"gear"}}),t._v(" Manage ")],1):t._e(),e("confirm-dialog",{attrs:{target:`manage-installed-app-${a.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(e){return t.openAppManagement(a.item.name)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(e){return t.openGlobalApp(a.item.name)}}},[e("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1),t._v("    ")],1)]}}],null,!1,3738826931)})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.tableconfig.active?.apps?.length||1,"per-page":t.tableconfig.active.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.active.currentPage,callback:function(e){t.$set(t.tableconfig.active,"currentPage",e)},expression:"tableconfig.active.currentPage"}})],1)],1)],1)],1),e("b-tab",{attrs:{title:"Marketplace Deployments"}},[e("b-overlay",{attrs:{show:t.tableconfig.active.loading,variant:"transparent",blur:"5px"}},[e("b-card",[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.tableconfig.active_marketplace.pageOptions},model:{value:t.tableconfig.active_marketplace.perPage,callback:function(e){t.$set(t.tableconfig.active_marketplace,"perPage",e)},expression:"tableconfig.active_marketplace.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0 mt-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.tableconfig.active_marketplace.filter,callback:function(e){t.$set(t.tableconfig.active_marketplace,"filter",e)},expression:"tableconfig.active_marketplace.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.tableconfig.active_marketplace.filter},on:{click:function(e){t.tableconfig.active_marketplace.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"apps-active-table",attrs:{striped:"",outlined:"",responsive:"",items:t.tableconfig.active_marketplace.apps,fields:t.tableconfig.active_marketplace.fields,"per-page":t.tableconfig.active_marketplace.perPage,"current-page":t.tableconfig.active_marketplace.currentPage,filter:t.tableconfig.active_marketplace.filter,"show-empty":"","sort-icon-left":"","empty-text":"No Flux Marketplace Apps are active"},scopedSlots:t._u([{key:"cell(visit)",fn:function(a){return[e("div",{staticClass:"d-flex no-wrap"},["fluxteam"===t.privilege?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Manage Installed App",expression:"'Manage Installed App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{id:`manage-installed-app-${a.item.name}`,size:"sm",variant:"outline-dark"}},[e("b-icon",{attrs:{scale:"1",icon:"gear"}}),t._v(" Manage ")],1):t._e(),e("confirm-dialog",{attrs:{target:`manage-installed-app-${a.item.name}`,"confirm-button":"Manage App"},on:{confirm:function(e){return t.openAppManagement(a.item.name)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0 no-wrap hover-underline",attrs:{size:"sm",variant:"link"},on:{click:function(e){return t.openGlobalApp(a.item.name)}}},[e("b-icon",{attrs:{scale:"1",icon:"front"}}),t._v(" Visit ")],1)],1)]}},{key:"cell(description)",fn:function(a){return[e("kbd",{staticClass:"text-secondary textarea text",staticStyle:{float:"left","text-align":"left"}},[t._v(t._s(a.item.description))])]}},{key:"cell(name)",fn:function(a){return[e("div",{staticClass:"text-left"},[e("kbd",{staticClass:"alert-info no-wrap",staticStyle:{"border-radius":"15px","font-weight":"700 !important"}},[e("b-icon",{attrs:{scale:"1.2",icon:"app-indicator"}}),t._v("  "+t._s(a.item.name)+"  ")],1),e("br"),e("small",{staticStyle:{"font-size":"11px"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{"margin-top":"3px"}},[t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"speedometer2"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(1,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"cpu"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(0,a.item.name,a.item)))]),t._v(" ")]),t._v("   "),e("b-icon",{attrs:{scale:"1.4",icon:"hdd"}}),t._v("  "),e("kbd",{staticClass:"alert-success",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(t.getServiceUsageValue(2,a.item.name,a.item)))]),t._v(" ")]),t._v("  "),e("b-icon",{attrs:{scale:"1.2",icon:"geo-alt"}}),t._v(" "),e("kbd",{staticClass:"alert-warning",staticStyle:{"border-radius":"15px"}},[t._v(" "),e("b",[t._v(t._s(a.item.instances))]),t._v(" ")])],1),e("span",{staticClass:"no-wrap",class:{"red-text":t.isLessThanTwoDays(t.labelForExpire(a.item.expire,a.item.height))}},[t._v("   "),e("b-icon",{attrs:{scale:"1.2",icon:"hourglass-split"}}),t._v(" "+t._s(t.labelForExpire(a.item.expire,a.item.height))+"   ")],1)])])]}},{key:"cell(show_details)",fn:function(a){return[e("a",{on:{click:function(e){return t.showLocations(a,t.tableconfig.active_marketplace.apps)}}},[a.detailsShowing?t._e():e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-down"}}),a.detailsShowing?e("v-icon",{staticClass:"ml-1",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(a){return[e("b-card",{staticClass:"mx-2"},[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"info-square"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Application Information")])],1)]),e("div",{staticClass:"ml-1"},[a.item.owner?e("list-entry",{attrs:{title:"Owner",data:a.item.owner}}):t._e(),a.item.hash?e("list-entry",{attrs:{title:"Hash",data:a.item.hash}}):t._e(),a.item.version>=5?e("div",[a.item.contacts.length>0?e("list-entry",{attrs:{title:"Contacts",data:JSON.stringify(a.item.contacts)}}):t._e(),a.item.geolocation.length?e("div",t._l(a.item.geolocation,(function(a){return e("div",{key:a},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(a)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)],1):t._e(),a.item.instances?e("list-entry",{attrs:{title:"Instances",data:a.item.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.labelForExpire(a.item.expire,a.item.height)}}),a.item?.nodes?.length>0?e("list-entry",{attrs:{title:"Enterprise Nodes",data:a.item.nodes?a.item.nodes.toString():"Not scoped"}}):t._e(),e("list-entry",{attrs:{title:"Static IP",data:a.item.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}})],1),a.item.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:a.item.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:a.item.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(a.item.ports,void 0,a.item.name).toString()}}),e("list-entry",{attrs:{title:"Ports",data:a.item.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:a.item.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:a.item.containerData}}),e("list-entry",{attrs:{title:"Enviroment Parameters",data:a.item.enviromentParameters.length>0?a.item.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:a.item.commands.length>0?a.item.commands.toString():"none"}}),a.item.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${a.item.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${a.item.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${a.item.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${a.item.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${a.item.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${a.item.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${a.item.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${a.item.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${a.item.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${a.item.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${a.item.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${a.item.hdd} GB`}})],1)],1)],1):e("div",[e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticClass:"ml-1",staticStyle:{"margin-top":"2px"},attrs:{scale:"1",icon:"box"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Composition")])],1)]),t._l(a.item.compose,(function(i,s){return e("b-card",{key:s,staticClass:"mb-0"},[e("h3",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-success d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","max-width":"500px"}},[e("b-icon",{staticClass:"ml-1",attrs:{scale:"1",icon:"menu-app-fill"}}),t._v("  "+t._s(i.name)+" ")],1)]),e("div",{staticClass:"ml-1"},[e("list-entry",{attrs:{title:"Name",data:i.name}}),e("list-entry",{attrs:{title:"Description",data:i.description}}),e("list-entry",{attrs:{title:"Repository",data:i.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:i.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:i.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(i.ports,i.name,a.item.name,s).toString()}}),e("list-entry",{attrs:{title:"Ports",data:i.ports.toString()}}),e("list-entry",{attrs:{title:"Container Ports",data:i.containerPorts.toString()}}),e("list-entry",{attrs:{title:"Container Data",data:i.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:i.environmentParameters.length>0?i.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:i.commands.length>0?i.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:i.secrets?"Content Encrypted":"none"}}),i.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${i.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${i.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${i.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${i.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${i.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${i.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${i.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${i.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${i.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${i.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${i.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${i.hdd} GB`}})],1)],1)])}))],2),e("h3",{staticClass:"no-wrap align-items-center justify-content-center"},[e("kbd",{staticClass:"alert-info d-flex",staticStyle:{"border-radius":"15px","font-family":"monospace","padding-right":"100%"}},[e("b-icon",{staticStyle:{"margin-top":"2px","margin-left":"10px"},attrs:{scale:"1",icon:"pin-map-fill"}}),e("span",{staticStyle:{"margin-left":"10px"}},[t._v("Locations")])],1)]),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.appLocationOptions.pageOptions},model:{value:t.appLocationOptions.perPage,callback:function(e){t.$set(t.appLocationOptions,"perPage",e)},expression:"appLocationOptions.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.appLocationOptions.filter,callback:function(e){t.$set(t.appLocationOptions,"filter",e)},expression:"appLocationOptions.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.appLocationOptions.filter},on:{click:function(e){t.appLocationOptions.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"locations-table",attrs:{borderless:"","per-page":t.appLocationOptions.perPage,"current-page":t.appLocationOptions.currentPage,items:t.appLocations,fields:t.appLocationFields,"thead-class":"d-none",filter:t.appLocationOptions.filter,"show-empty":"","sort-icon-left":"","empty-text":"No instances found.."},scopedSlots:t._u([{key:"cell(ip)",fn:function(a){return[e("div",{staticClass:"no-wrap"},[e("kbd",{staticClass:"alert-info",staticStyle:{"border-radius":"15px"}},[e("b-icon",{attrs:{scale:"1.1",icon:"hdd-network-fill"}})],1),t._v("  "),e("kbd",{staticClass:"alert-success no-wrap",staticStyle:{"border-radius":"15px"}},[e("b",[t._v("  "+t._s(a.item.ip)+"  ")])])])]}},{key:"cell(visit)",fn:function(i){return[e("div",{staticClass:"d-flex justify-content-end"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit App",expression:"'Visit App'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{size:"sm",pill:"",variant:"dark"},on:{click:function(e){t.openApp(a.item.name,i.item.ip.split(":")[0],t.getProperPort(a.item))}}},[e("b-icon",{attrs:{scale:"1",icon:"door-open"}}),t._v(" App ")],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Visit FluxNode",expression:"'Visit FluxNode'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-0",attrs:{size:"sm",pill:"",variant:"outline-dark"},on:{click:function(e){t.openNodeFluxOS(i.item.ip.split(":")[0],i.item.ip.split(":")[1]?+i.item.ip.split(":")[1]-1:16126)}}},[e("b-icon",{attrs:{scale:"1",icon:"house-door-fill"}}),t._v(" FluxNode ")],1),t._v("   ")],1)]}}],null,!0)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.appLocations?.length||1,"per-page":t.appLocationOptions.perPage,align:"center",size:"sm"},model:{value:t.appLocationOptions.currentPage,callback:function(e){t.$set(t.appLocationOptions,"currentPage",e)},expression:"appLocationOptions.currentPage"}})],1)],1)],1)]}}],null,!1,2175662911)})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"mt-1 mb-0",attrs:{"total-rows":t.tableconfig.active_marketplace?.apps?.length||1,"per-page":t.tableconfig.active_marketplace.perPage,align:"center",size:"sm"},model:{value:t.tableconfig.active_marketplace.currentPage,callback:function(e){t.$set(t.tableconfig.active_marketplace,"currentPage",e)},expression:"tableconfig.active_marketplace.currentPage"}})],1)],1)],1)],1)],1),t.managedApplication?e("div",[e("management",{attrs:{"app-name":t.managedApplication,global:!0,"installed-apps":[]},on:{back:function(e){return t.clearManagedApplication()}}})],1):t._e()],1)},s=[],n=(a(70560),a(58887)),o=a(51015),r=a(16521),l=a(50725),c=a(86855),p=a(26253),m=a(15193),d=a(66126),u=a(5870),b=a(20266),g=a(20629),f=a(34547),v=a(51748),y=a(87156),h=a(78182),C=a(43672),S=a(27616);const _=a(80129),x=a(57306),k={components:{BTabs:n.M,BTab:o.L,BTable:r.h,BCol:l.l,BCard:c._,BRow:p.T,BButton:m.T,BOverlay:d.X,ListEntry:v.Z,ConfirmDialog:y.Z,Management:h.Z,ToastificationContent:f.Z},directives:{"b-tooltip":u.o,Ripple:b.Z},data(){return{managedApplication:"",daemonBlockCount:-1,appLocations:[],appLocationFields:[{key:"ip",label:"Locations",thStyle:{width:"30%"}},{key:"visit",label:""}],myappLocations:[],myappLocationFields:[{key:"ip",label:"IP Address",thStyle:{width:"30%"}},{key:"visit",label:""}],tableconfig:{active:{apps:[],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"Management",label:"",thStyle:{width:"3%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:"",filterOn:[],perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1},active_marketplace:{apps:[],fields:[{key:"show_details",label:""},{key:"name",label:"Name",sortable:!0,thStyle:{width:"18%"}},{key:"description",label:"Description",thStyle:{width:"75%"}},{key:"Management",label:"",thStyle:{width:"3%"}},{key:"visit",label:"",class:"text-center",thStyle:{width:"3%"}}],loading:!0,sortBy:"",sortDesc:!1,sortDirection:"asc",filter:"",filterOn:[],perPage:25,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1}},allApps:[],appLocationOptions:{perPage:5,pageOptions:[5,10,25,50,100],currentPage:1,totalRows:1,filterOn:[],filter:""}}},computed:{...(0,g.rn)("flux",["config","userconfig","privilege"]),myGlobalApps(){const t=localStorage.getItem("zelidauth"),e=_.parse(t);return this.allApps?this.allApps.filter((t=>t.owner===e.zelid)):[]},isLoggedIn(){const t=localStorage.getItem("zelidauth"),e=_.parse(t);return!!e.zelid}},mounted(){this.appsGetListGlobalApps(),this.getDaemonBlockCount()},methods:{getServiceUsageValue(t,e,a){if("undefined"===typeof a?.compose)return this.usage=[+a.ram,+a.cpu,+a.hdd],this.usage[t];const i=this.getServiceUsage(e,a.compose);return i[t]},getServiceUsage(t,e){let a=0,i=0,s=0;return e.forEach((t=>{a+=t.ram,i+=t.cpu,s+=t.hdd})),[a,i.toFixed(1),s]},isLessThanTwoDays(t){const e=t?.split(",").map((t=>t.trim()));let a=0,i=0,s=0;for(const o of e)o.includes("days")?a=parseInt(o,10):o.includes("hours")?i=parseInt(o,10):o.includes("minutes")&&(s=parseInt(o,10));const n=24*a*60+60*i+s;return n<2880},minutesToString(t){let e=60*t;const a={day:86400,hour:3600,minute:60,second:1},i=[];for(const s in a){const t=Math.floor(e/a[s]);1===t&&i.push(` ${t} ${s}`),t>=2&&i.push(` ${t} ${s}s`),e%=a[s]}return i},labelForExpire(t,e){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const a=t||22e3,i=e+a-this.daemonBlockCount;if(i<1)return"Application Expired";const s=2*i,n=this.minutesToString(s);return n.length>2?`${n[0]}, ${n[1]}, ${n[2]}`:n.length>1?`${n[0]}, ${n[1]}`:`${n[0]}`},async getDaemonBlockCount(){const t=await S.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},openAppManagement(t){this.managedApplication=t},clearManagedApplication(){this.managedApplication=""},async appsGetListGlobalApps(){this.tableconfig.active.loading=!0;const t=await C.Z.globalAppSpecifications();console.log(t),this.allApps=t.data.data,this.tableconfig.active.apps=this.allApps.filter((t=>{if(t.name.length>=14){const e=t.name.substring(t.name.length-13,t.name.length),a=Number(e);if(!Number.isNaN(a))return!1}return!0})),this.tableconfig.active_marketplace.apps=this.allApps.filter((t=>{if(t.name.length>=14){const e=t.name.substring(t.name.length-13,t.name.length),a=Number(e);if(!Number.isNaN(a))return!0}return!1})),this.tableconfig.active.loading=!1,this.loadPermanentMessages()},async loadPermanentMessages(){try{const t=localStorage.getItem("zelidauth"),e=_.parse(t);if(!e.zelid)return void(this.tableconfig.my_expired.loading=!1);const a=await C.Z.permanentMessagesOwner(e.zelid),i=[];for(const n of a.data.data){const t=i.find((t=>t.appSpecifications.name===n.appSpecifications.name));if(t){if(n.height>t.height){const t=i.findIndex((t=>t.appSpecifications.name===n.appSpecifications.name));t>-1&&(i.splice(t,1),i.push(n))}}else i.push(n)}const s=[];for(const n of i){const t=this.allApps.find((t=>t.name.toLowerCase()===n.appSpecifications.name.toLowerCase()));if(!t){const t=n.appSpecifications;s.push(t)}}this.tableconfig.my_expired.apps=s,this.tableconfig.my_expired.loading=!1}catch(t){console.log(t)}},redeployApp(t,e=!1){const a=t;e&&(a.name+="XXX",a.name+=Date.now().toString().slice(-5));const i=localStorage.getItem("zelidauth"),s=_.parse(i);s?a.owner=s.zelid:e&&(a.owner=""),this.$router.replace({name:"apps-registerapp",params:{appspecs:JSON.stringify(t)}})},copyToClipboard(t){const e=JSON.parse(t);delete e._showDetails;const a=JSON.stringify(e),i=document.createElement("textarea");i.value=a,i.setAttribute("readonly",""),i.style.position="absolute",i.style.left="-9999px",document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i),this.showToast("success","Application Specifications copied to Clipboard")},openApp(t,e,a){if(console.log(t,e,a),a&&e){const t=e,i=a,s=`http://${t}:${i}`;this.openSite(s)}else this.showToast("danger","Unable to open App :(, App does not have a port.")},getProperPort(t){if(t.port)return t.port;if(t.ports)return t.ports[0];for(let e=0;e{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const a=e.data.data,i=a[0];if(i){const e=`https://${t}.app.runonflux.io`;this.openSite(e)}else this.showToast("danger","Application is awaiting launching...")}else this.showToast("danger",e.data.data.message||e.data.data)},openSite(t){const e=window.open(t,"_blank");e.focus()},tabChanged(){this.tableconfig.active.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.tableconfig.active_marketplace.apps.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.appLocations=[]},showLocations(t,e){t.detailsShowing?t.toggleDetails():(e.forEach((t=>{this.$set(t,"_showDetails",!1)})),this.$nextTick((()=>{t.toggleDetails(),this.loadLocations(t)})))},async loadLocations(t){console.log(t),this.appLocations=[];const e=await C.Z.getAppLocation(t.item.name).catch((t=>{this.showToast("danger",t.message||t)}));if(console.log(e),"success"===e.data.status){const t=e.data.data;this.appLocations=t}},showToast(t,e,a="InfoIcon"){this.$toast({component:f.Z,props:{title:e,icon:a,variant:t}})},constructAutomaticDomains(t,e="",a,i=0){const s=a.toLowerCase(),n=e.toLowerCase();if(!n){const e=[];0===i&&e.push(`${s}.app.runonflux.io`);for(let a=0;at.code===e))||{name:"ALL"};return`Continent: ${a.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),a=x.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${a.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),a=e.split("_"),i=a[0],s=a[1],n=a[2],o=x.continents.find((t=>t.code===i))||{name:"ALL"},r=x.countries.find((t=>t.code===s))||{name:"ALL"};let l=`Allowed location: Continent: ${o.name}`;return s&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}if(t.startsWith("a!c")){const e=t.slice(3),a=e.split("_"),i=a[0],s=a[1],n=a[2],o=x.continents.find((t=>t.code===i))||{name:"ALL"},r=x.countries.find((t=>t.code===s))||{name:"ALL"};let l=`Forbidden location: Continent: ${o.name}`;return s&&(l+=`, Country: ${r.name}`),n&&(l+=`, Region: ${n}`),l}return"All locations allowed"}}},w=k;var $=a(1001),P=(0,$.Z)(w,i,s,!1,null,null,null);const A=P.exports}}]); \ No newline at end of file diff --git a/HomeUI/dist/js/447.js b/HomeUI/dist/js/447.js new file mode 100644 index 000000000..a7cd1267e --- /dev/null +++ b/HomeUI/dist/js/447.js @@ -0,0 +1 @@ +"use strict";(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[447],{66769:(t,e,s)=>{s.r(e),s.d(e,{default:()=>$});var a=function(){var t=this,e=t._self._c;return e("div",[e("b-card",{attrs:{title:"Welcome to Flux - The biggest decentralized computational network"}},[e("list-entry",{attrs:{title:"Dashboard",data:t.dashboard}}),e("list-entry",{attrs:{title:"Applications",data:t.applications}}),e("list-entry",{attrs:{title:"XDAO",data:t.xdao}}),e("list-entry",{attrs:{title:"Administration",data:t.administration}}),e("list-entry",{attrs:{title:"Node Status",data:t.getNodeStatusResponse.nodeStatus,variant:t.getNodeStatusResponse.class}})],1),"none"===t.privilege?e("b-card",[e("b-card-title",[t._v("Automated Login")]),e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-6"},[e("b-tabs",{attrs:{"content-class":"mt-0"}},[e("b-tab",{attrs:{title:"3rd Party Login",active:""}},[e("div",{staticClass:"ssoLogin"},[e("div",{attrs:{id:"ssoLoading"}},[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Loading Sign In Options ")])],1),e("div",{staticStyle:{display:"none"},attrs:{id:"ssoLoggedIn"}},[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Login Process ")])],1),e("div",{staticStyle:{display:"none"},attrs:{id:"ssoVerify"}},[e("b-button",{staticClass:"mb-2",attrs:{variant:"primary",type:"submit"},on:{click:t.cancelVerification}},[t._v(" Cancel Verification ")]),e("div",[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Verification Process ")]),e("div",[e("i",[t._v("Please check email for verification link.")])])],1)],1),e("div",{attrs:{id:"firebaseui-auth-container"}})])]),e("b-tab",{attrs:{title:"Email/Password"}},[e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-12 mt-1"},[e("b-form",{ref:"emailLoginForm",staticClass:"mx-5",attrs:{id:"emailLoginForm"},on:{submit:function(t){t.preventDefault()}}},[e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Email","label-for":"h-email","label-cols-md":"4"}},[e("b-form-input",{attrs:{id:"h-email",type:"email",placeholder:"Email...",required:""},model:{value:t.emailForm.email,callback:function(e){t.$set(t.emailForm,"email",e)},expression:"emailForm.email"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Password","label-for":"h-password","label-cols-md":"4"}},[e("b-form-input",{attrs:{id:"h-password",type:"password",placeholder:"Password...",required:""},model:{value:t.emailForm.password,callback:function(e){t.$set(t.emailForm,"password",e)},expression:"emailForm.password"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"4"}},[e("b-button",{staticClass:"w-100",attrs:{type:"submit",variant:"primary"},on:{click:t.emailLogin}},[e("div",{staticStyle:{display:"none"},attrs:{id:"emailLoginProcessing"}},[e("b-spinner",{attrs:{variant:"secondary",small:""}})],1),e("div",{attrs:{id:"emailLoginExecute"}},[t._v(" Login ")])])],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"4"}},[e("b-button",{directives:[{name:"b-modal",rawName:"v-b-modal.modal-prevent-closing",modifiers:{"modal-prevent-closing":!0}}],staticClass:"w-100",attrs:{id:"signUpButton",type:"submit",variant:"secondary"},on:{click:t.createAccount}},[t._v(" Sign Up ")])],1)],1)],1)],1),e("div",{staticClass:"text-center",staticStyle:{display:"none"},attrs:{id:"ssoEmailVerify"}},[e("b-button",{staticClass:"mb-2",attrs:{variant:"primary",type:"submit"},on:{click:t.cancelVerification}},[t._v(" Cancel Verification ")]),e("div",[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Verification Process ")]),e("div",[e("i",[t._v("Please check email for verification link.")])])],1)],1)],1)])])],1)],1),e("dd",{staticClass:"col-sm-6"},[e("b-card-text",{staticClass:"text-center loginText"},[t._v(" Decentralized Login ")]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{title:"Login with Zelcore"},on:{click:t.initiateLoginWS}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{attrs:{title:"Login with SSP"},on:{click:t.initSSP}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{title:"Login with WalletConnect"},on:{click:t.initWalletConnect}},[e("img",{staticClass:"walletIcon",attrs:{src:s(47622),alt:"WalletConnect",height:"100%",width:"100%"}})]),e("a",{attrs:{title:"Login with Metamask"},on:{click:t.initMetamask}},[e("img",{staticClass:"walletIcon",attrs:{src:s(28125),alt:"Metamask",height:"100%",width:"100%"}})])])],1)])],1):t._e(),"none"===t.privilege?e("b-card",[e("b-card-title",[t._v("Manual Login")]),e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-12"},[e("b-card-text",{staticClass:"text-center"},[t._v(" Sign the following message with any Flux ID / SSP Wallet ID / Bitcoin / Ethereum address ")]),e("br"),e("br"),e("b-form",{staticClass:"mx-5",on:{submit:function(t){t.preventDefault()}}},[e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Message","label-for":"h-message","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-message",placeholder:"Insert Login Phrase"},model:{value:t.loginForm.loginPhrase,callback:function(e){t.$set(t.loginForm,"loginPhrase",e)},expression:"loginForm.loginPhrase"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Address","label-for":"h-address","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-address",placeholder:"Insert Flux ID or Bitcoin address"},model:{value:t.loginForm.zelid,callback:function(e){t.$set(t.loginForm,"zelid",e)},expression:"loginForm.zelid"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Signature","label-for":"h-signature","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-signature",placeholder:"Insert Signature"},model:{value:t.loginForm.signature,callback:function(e){t.$set(t.loginForm,"signature",e)},expression:"loginForm.signature"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"3"}},[e("b-button",{staticClass:"w-100",attrs:{type:"submit",variant:"primary"},on:{click:t.login}},[t._v(" Login ")])],1)],1)],1)],1)],1)])],1):t._e(),e("b-modal",{ref:"modal",attrs:{id:"modal-prevent-closing",title:"Create Flux SSO Account","header-bg-variant":"primary","title-class":"modal-title"},on:{show:t.resetModal,hidden:t.resetModal,ok:t.handleOk}},[e("form",{ref:"form",on:{submit:function(e){return e.stopPropagation(),e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("b-form-group",{attrs:{label:"Email","label-for":"email-input","invalid-feedback":"Email is required",state:t.emailState}},[e("b-form-input",{attrs:{id:"email-input",type:"email",state:t.emailState,required:""},model:{value:t.createSSOForm.email,callback:function(e){t.$set(t.createSSOForm,"email",e)},expression:"createSSOForm.email"}})],1),e("b-form-group",{attrs:{label:"Password","label-for":"pw1-input","invalid-feedback":"Password is required",state:t.pw1State}},[e("b-form-input",{attrs:{id:"pw1-input",type:"password",state:t.pw1State,required:""},model:{value:t.createSSOForm.pw1,callback:function(e){t.$set(t.createSSOForm,"pw1",e)},expression:"createSSOForm.pw1"}})],1),e("b-form-group",{attrs:{label:"Confirm Password","label-for":"pw2-input","invalid-feedback":"Password is required",state:t.pw2State}},[e("b-form-input",{attrs:{id:"pw2-input",type:"password",state:t.pw2State,required:""},model:{value:t.createSSOForm.pw2,callback:function(e){t.$set(t.createSSOForm,"pw2",e)},expression:"createSSOForm.pw2"}})],1)],1),e("div",{staticClass:"sso-tos"},[e("p",{staticStyle:{width:"75%"}},[t._v(" By continuing, you are indicating that you accept our "),e("a",{staticClass:"highlight",attrs:{href:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",referrerpolicy:"no-referrer",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Terms of Service")]),t._v(" and "),e("a",{staticClass:"highlight",attrs:{href:"https://runonflux.io/privacyPolicy",referrerpolicy:"no-referrer",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Privacy Policy")]),t._v(". ")])])])],1)},i=[],o=s(86855),n=s(64206),r=s(49379),l=s(15193),c=s(54909),d=s(50725),u=s(26253),h=s(22183),g=s(46709),m=s(20629),p=s(38511),f=s(62693),y=s(94145),w=s(44866),b=s(74811),v=s(5449),S=s(34547),x=s(51748),F=s(37307),P=s(34369),I=s(27616),k=s(87066),L=s(48764)["lW"];const C="df787edc6839c7de49d527bba9199eaa",T={projectId:C,metadata:{name:"Flux Cloud",description:"Flux, Your Gateway to a Decentralized World",url:"https://home.runonflux.io",icons:["https://home.runonflux.io/img/logo.png"]}},E=new f.u(T),_={enableDebug:!0},O=new y.MetaMaskSDK(_);let R;const B=s(80129),A=s(58971),V={components:{BCard:o._,BCardText:n.j,BCardTitle:r._,BButton:l.T,BForm:c.e,BCol:d.l,BRow:u.T,BFormInput:h.e,BFormGroup:g.x,ListEntry:x.Z,ToastificationContent:S.Z},data(){return{modalShow:!1,dashboard:"Check Flux network information, resources available or a map with server locations.",xdao:"See the list of changes proposed to Flux network, create new ones and vote.",applications:"Buy on marketplace, register your own app, manage your active apps.",administration:"Tools for the infrastructure administrators, node operators.",websocket:null,ui:null,ssoVerification:!1,errorMessage:"",loginPhrase:"",loginForm:{zelid:"",signature:"",loginPhrase:""},emailForm:{email:"",password:""},createSSOForm:{email:"",pw1:"",pw2:""},emailState:null,pw1State:null,pw2State:null,signClient:null,getNodeStatusResponse:{class:"text-success",status:"",data:"",nodeStatus:"Checking status..."}}},computed:{...(0,m.rn)("flux",["userconfig","config","privilege"]),skin(){return(0,F.Z)().skin.value},callbackValue(){const t=this.backendURL(),e=`${t}/id/verifylogin`;return encodeURI(e)}},mounted(){this.daemonWelcomeGetFluxNodeStatus(),this.getZelIdLoginPhrase(),this.initMMSDK();const t={callbacks:{signInSuccessWithAuthResult:this.handleSignInSuccessWithAuthResult,uiShown(){document.getElementById("ssoLoading").style.display="none"}},popupMode:!0,signInFlow:"popup",signInOptions:[{provider:w.Z.auth.GoogleAuthProvider.PROVIDER_ID,customParameters:{prompt:"select_account"}},"apple.com"],tosUrl:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",privacyPolicyUrl:"https://runonflux.io/privacyPolicy"};"none"===this.privilege&&(b.I.AuthUI.getInstance()?(this.ui=b.I.AuthUI.getInstance(),this.ui.start("#firebaseui-auth-container",t)):(this.ui=new b.I.AuthUI(w.Z.auth()),this.ui.start("#firebaseui-auth-container",t)))},methods:{handleSignInSuccessWithAuthResult(t){return t.user&&this.handleSignedInUser(t.user),!1},async handleSignedInUser(t){try{if(t.emailVerified){document.getElementById("ssoLoggedIn").style.display="block";const e=t.auth.currentUser.accessToken,s=this.loginPhrase,a={"Content-Type":"application/json",Authorization:`Bearer ${e}`},i=await k.Z.post("https://service.fluxcore.ai/api/signInOrUp",{message:s},{headers:a});if("success"!==i.data?.status)throw new Error("Login Failed, please try again.");const o={zelid:i.data.public_address,signature:i.data.signature,loginPhrase:this.loginPhrase};P.Z.verifyLogin(o).then((t=>{if(console.log(t),"success"===t.data.status){const e={zelid:i.data.public_address,signature:i.data.signature,loginPhrase:this.loginPhrase};this.$store.commit("flux/setPrivilege",t.data.data.privilage),this.$store.commit("flux/setZelid",e.zelid),localStorage.setItem("zelidauth",B.stringify(e)),this.showToast("success",t.data.data.message)}else this.showToast(this.getVariant(t.data.status),t.data.data.message||t.data.data),this.resetLoginUI()})).catch((t=>{console.log(t),this.resetLoginUI()}))}else{if(t.displayName){const e=/\b((http|https|ftp):\/\/[-A-Z0-9+&@#%?=~_|!:,.;]*[-A-Z0-9+&@#%=~_|]|www\.[-A-Z0-9+&@#%?=~_|!:,.;]*[-A-Z0-9+&@#%=~_|]|[-A-Z0-9]+\.[A-Z]{2,}[-A-Z0-9+&@#%?=~_|]*[-A-Z0-9+&@#%=~_|])/i;if(e.test(t.displayName))throw new Error("Login Failed, please try again.")}t.sendEmailVerification().then((()=>{this.showToast("info","please verify email")})).catch((()=>{this.showToast("warning","failed to send new verification email")})).finally((async()=>{document.getElementById("ssoVerify").style.display="block",document.getElementById("ssoEmailVerify").style.display="block",document.getElementById("emailLoginForm").style.display="none",this.ssoVerification=!0,await this.checkVerification()}))}}catch(e){this.resetLoginUI(),this.showToast("warning","Login Failed, please try again.")}},async checkVerification(){try{let t=(0,v.PR)();t&&this.ssoVerification?(await t.reload(),t=(0,v.PR)(),t.emailVerified?(this.showToast("info","email verified"),document.getElementById("ssoVerify").style.display="none",this.handleSignedInUser(t),this.ssoVerification=!1):setTimeout((()=>{this.checkVerification()}),5e3)):this.resetLoginUI()}catch(t){this.showToast("warning","email verification failed"),this.resetLoginUI()}},cancelVerification(){this.resetLoginUI()},resetLoginUI(){document.getElementById("ssoVerify").style.display="none",document.getElementById("ssoEmailVerify").style.display="none",document.getElementById("ssoLoggedIn").style.display="none",document.getElementById("emailLoginProcessing").style.display="none",document.getElementById("emailLoginExecute").style.display="block",document.getElementById("emailLoginForm").style.display="block",document.getElementById("signUpButton").style.display="block",this.emailForm.email="",this.emailForm.password="",this.ui.reset(),this.ui.start("#firebaseui-auth-container"),this.ssoVerification=!1},async daemonWelcomeGetFluxNodeStatus(){const t=await I.Z.getFluxNodeStatus().catch((()=>null)),e=await I.Z.getBlockchainInfo().catch((()=>null));if(!t||!e)return this.getNodeStatusResponse.status="UNKNOWN",this.getNodeStatusResponse.nodeStatus="Unable to connect to Flux Blockchain Daemon.",void(this.getNodeStatusResponse.class="danger");this.getNodeStatusResponse.status=t.data.status,this.getNodeStatusResponse.data=t.data.data,this.getNodeStatusResponse.data&&e.data.data&&(e.data.data.blocks+316100){const t=+s+1;this.$store.commit("flux/setFluxPort",t)}a+=e,a+=":",a+=this.config.apiPort}return A.get("backendURL")||a},initiateLoginWS(){const t=this;this.initZelcore();let e=this.backendURL();e=e.replace("https://","wss://"),e=e.replace("http://","ws://");const s=`${e}/ws/id/${this.loginPhrase}`,a=new WebSocket(s);this.websocket=a,a.onopen=e=>{t.onOpen(e)},a.onclose=e=>{t.onClose(e)},a.onmessage=e=>{t.onMessage(e)},a.onerror=e=>{t.onError(e)}},onError(t){console.log(t)},onMessage(t){const e=B.parse(t.data);if(console.log(e),"success"===e.status&&e.data){const t={zelid:e.data.zelid,signature:e.data.signature,loginPhrase:e.data.loginPhrase};this.$store.commit("flux/setPrivilege",e.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",e.data.message)}console.log(e),console.log(t)},onClose(t){console.log(t)},onOpen(t){console.log(t)},showToast(t,e){this.$toast({component:S.Z,props:{title:e,icon:"BellIcon",variant:t}})},getZelIdLoginPhrase(){P.Z.loginPhrase().then((t=>{console.log(t),"error"===t.data.status?this.getEmergencyLoginPhrase():(this.loginPhrase=t.data.data,this.loginForm.loginPhrase=t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t)}))},getEmergencyLoginPhrase(){P.Z.emergencyLoginPhrase().then((t=>{console.log(t),"error"===t.data.status?this.showToast("danger",t.data.data.message):(this.loginPhrase=t.data.data,this.loginForm.loginPhrase=t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t)}))},getVariant(t){return"error"===t?"danger":"message"===t?"info":t},login(){console.log(this.loginForm),P.Z.verifyLogin(this.loginForm).then((t=>{if(console.log(t),"success"===t.data.status){const e={zelid:this.loginForm.zelid,signature:this.loginForm.signature,loginPhrase:this.loginForm.loginPhrase};this.$store.commit("flux/setPrivilege",t.data.data.privilage),this.$store.commit("flux/setZelid",e.zelid),localStorage.setItem("zelidauth",B.stringify(e)),this.showToast("success",t.data.data.message)}else this.showToast(this.getVariant(t.data.status),t.data.data.message||t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t.toString())}))},async emailLogin(){try{if(this.$refs.emailLoginForm.reportValidity()){document.getElementById("emailLoginExecute").style.display="none",document.getElementById("emailLoginProcessing").style.display="block",document.getElementById("signUpButton").style.display="none";const t=await(0,v.fZ)(this.emailForm);this.handleSignInSuccessWithAuthResult(t)}}catch(t){document.getElementById("emailLoginExecute").style.display="block",document.getElementById("emailLoginProcessing").style.display="none",document.getElementById("signUpButton").style.display="block",document.getElementById("ssoEmailVerify").style.display="none",this.showToast("danger","login failed, please try again")}},async createAccount(){this.modalShow=!this.modalShow},async onSessionConnect(t){console.log(t);const e=await this.signClient.request({topic:t.topic,chainId:"eip155:1",request:{method:"personal_sign",params:[this.loginPhrase,t.namespaces.eip155.accounts[0].split(":")[2]]}});console.log(e);const s={zelid:t.namespaces.eip155.accounts[0].split(":")[2],signature:e,loginPhrase:this.loginPhrase},a=await P.Z.verifyLogin(s);if(console.log(a),"success"===a.data.status){const t=s;this.$store.commit("flux/setPrivilege",a.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",a.data.data.message)}else this.showToast(this.getVariant(a.data.status),a.data.data.message||a.data.data)},onSessionUpdate(t){console.log(t)},async initWalletConnect(){const t=this;try{const e=await p.ZP.init(T);this.signClient=e,e.on("session_event",(({event:t})=>{console.log(t)})),e.on("session_update",(({topic:s,params:a})=>{const{namespaces:i}=a,o=e.session.get(s),n={...o,namespaces:i};t.onSessionUpdate(n)})),e.on("session_delete",(()=>{}));const{uri:s,approval:a}=await e.connect({requiredNamespaces:{eip155:{methods:["personal_sign"],chains:["eip155:1"],events:["chainChanged","accountsChanged"]}}});if(s){E.openModal({uri:s});const t=await a();this.onSessionConnect(t),E.closeModal()}}catch(e){console.error(e),this.showToast("danger",e.message)}},async siwe(t,e){try{const s=`0x${L.from(t,"utf8").toString("hex")}`,a=await R.request({method:"personal_sign",params:[s,e]});console.log(a);const i={zelid:e,signature:a,loginPhrase:this.loginPhrase},o=await P.Z.verifyLogin(i);if(console.log(o),"success"===o.data.status){const t=i;this.$store.commit("flux/setPrivilege",o.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",o.data.data.message)}else this.showToast(this.getVariant(o.data.status),o.data.data.message||o.data.data)}catch(s){console.error(s),this.showToast("danger",s.message)}},async initMetamask(){try{if(!R)return void this.showToast("danger","Metamask not detected");let t;if(R&&!R.selectedAddress){const e=await R.request({method:"eth_requestAccounts",params:[]});console.log(e),t=e[0]}else t=R.selectedAddress;this.siwe(this.loginPhrase,t)}catch(t){this.showToast("danger",t.message)}},initZelcore(){try{window.zelcore?window.zelcore.protocol(`zel:?action=sign&message=${this.loginPhrase}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`):window.open(`zel:?action=sign&message=${this.loginPhrase}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`)}catch(t){this.showToast("danger",t.message)}},async initSSP(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t=await window.ssp.request("sspwid_sign_message",{message:this.loginPhrase});if("ERROR"===t.status)throw new Error(t.data||t.result);const e={zelid:t.address,signature:t.signature,loginPhrase:this.loginPhrase},s=await P.Z.verifyLogin(e);if(console.log(s),"success"===s.data.status){const t=e;this.$store.commit("flux/setPrivilege",s.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",s.data.data.message)}else this.showToast(this.getVariant(s.data.status),s.data.data.message||s.data.data)}catch(t){this.showToast("danger",t.message)}},checkFormValidity(){const t=this.$refs.form.reportValidity();return this.createSSOForm.pw1.length>=8?(this.pw1State=!0,this.createSSOForm.pw2.length>=8?(this.pw2State=!0,this.createSSOForm.pw1!==this.createSSOForm.pw2?(this.showToast("info","passwords do not match"),this.pw1State=!1,this.pw2State=!1,null):t):(this.showToast("info","password must be at least 8 chars"),null)):(this.showToast("info","password must be at least 8 chars"),null)},resetModal(){this.createSSOForm.email="",this.createSSOForm.pw1="",this.createSSOForm.pw2="",this.emailState=null,this.pw1State=null,this.pw2State=null},handleOk(t){t.preventDefault(),this.handleSubmit()},async handleSubmit(){if(this.checkFormValidity()){try{const t=await(0,v.wY)({email:this.createSSOForm.email,password:this.createSSOForm.pw1});this.handleSignInSuccessWithAuthResult(t)}catch(t){this.resetLoginUI(),this.showToast("danger","Account creation failed, try again")}this.$nextTick((()=>{this.$bvModal.hide("modal-prevent-closing")}))}}}},Z=V;var z=s(1001),N=(0,z.Z)(Z,a,i,!1,null,null,null);const $=N.exports},84328:(t,e,s)=>{var a=s(65290),i=s(27578),o=s(6310),n=function(t){return function(e,s,n){var r,l=a(e),c=o(l),d=i(n,c);if(t&&s!==s){while(c>d)if(r=l[d++],r!==r)return!0}else for(;c>d;d++)if((t||d in l)&&l[d]===s)return t||d||0;return!t&&-1}};t.exports={includes:n(!0),indexOf:n(!1)}},5649:(t,e,s)=>{var a=s(67697),i=s(92297),o=TypeError,n=Object.getOwnPropertyDescriptor,r=a&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=r?function(t,e){if(i(t)&&!n(t,"length").writable)throw new o("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},8758:(t,e,s)=>{var a=s(36812),i=s(19152),o=s(82474),n=s(72560);t.exports=function(t,e,s){for(var r=i(e),l=n.f,c=o.f,d=0;d{var e=TypeError,s=9007199254740991;t.exports=function(t){if(t>s)throw e("Maximum allowed index exceeded");return t}},72739:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},79989:(t,e,s)=>{var a=s(19037),i=s(82474).f,o=s(75773),n=s(11880),r=s(95014),l=s(8758),c=s(35266);t.exports=function(t,e){var s,d,u,h,g,m,p=t.target,f=t.global,y=t.stat;if(d=f?a:y?a[p]||r(p,{}):(a[p]||{}).prototype,d)for(u in e){if(g=e[u],t.dontCallGetSet?(m=i(d,u),h=m&&m.value):h=d[u],s=c(f?u:p+(y?".":"#")+u,t.forced),!s&&void 0!==h){if(typeof g==typeof h)continue;l(g,h)}(t.sham||h&&h.sham)&&o(g,"sham",!0),n(d,u,g,t)}}},94413:(t,e,s)=>{var a=s(68844),i=s(3689),o=s(6648),n=Object,r=a("".split);t.exports=i((function(){return!n("z").propertyIsEnumerable(0)}))?function(t){return"String"===o(t)?r(t,""):n(t)}:n},92297:(t,e,s)=>{var a=s(6648);t.exports=Array.isArray||function(t){return"Array"===a(t)}},35266:(t,e,s)=>{var a=s(3689),i=s(69985),o=/#|\.prototype\./,n=function(t,e){var s=l[r(t)];return s===d||s!==c&&(i(e)?a(e):!!e)},r=n.normalize=function(t){return String(t).replace(o,".").toLowerCase()},l=n.data={},c=n.NATIVE="N",d=n.POLYFILL="P";t.exports=n},6310:(t,e,s)=>{var a=s(43126);t.exports=function(t){return a(t.length)}},58828:t=>{var e=Math.ceil,s=Math.floor;t.exports=Math.trunc||function(t){var a=+t;return(a>0?s:e)(a)}},82474:(t,e,s)=>{var a=s(67697),i=s(22615),o=s(49556),n=s(75684),r=s(65290),l=s(18360),c=s(36812),d=s(68506),u=Object.getOwnPropertyDescriptor;e.f=a?u:function(t,e){if(t=r(t),e=l(e),d)try{return u(t,e)}catch(s){}if(c(t,e))return n(!i(o.f,t,e),t[e])}},72741:(t,e,s)=>{var a=s(54948),i=s(72739),o=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,o)}},7518:(t,e)=>{e.f=Object.getOwnPropertySymbols},54948:(t,e,s)=>{var a=s(68844),i=s(36812),o=s(65290),n=s(84328).indexOf,r=s(57248),l=a([].push);t.exports=function(t,e){var s,a=o(t),c=0,d=[];for(s in a)!i(r,s)&&i(a,s)&&l(d,s);while(e.length>c)i(a,s=e[c++])&&(~n(d,s)||l(d,s));return d}},49556:(t,e)=>{var s={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,i=a&&!s.call({1:2},1);e.f=i?function(t){var e=a(this,t);return!!e&&e.enumerable}:s},19152:(t,e,s)=>{var a=s(76058),i=s(68844),o=s(72741),n=s(7518),r=s(85027),l=i([].concat);t.exports=a("Reflect","ownKeys")||function(t){var e=o.f(r(t)),s=n.f;return s?l(e,s(t)):e}},27578:(t,e,s)=>{var a=s(68700),i=Math.max,o=Math.min;t.exports=function(t,e){var s=a(t);return s<0?i(s+e,0):o(s,e)}},65290:(t,e,s)=>{var a=s(94413),i=s(74684);t.exports=function(t){return a(i(t))}},68700:(t,e,s)=>{var a=s(58828);t.exports=function(t){var e=+t;return e!==e||0===e?0:a(e)}},43126:(t,e,s)=>{var a=s(68700),i=Math.min;t.exports=function(t){return t>0?i(a(t),9007199254740991):0}},70560:(t,e,s)=>{var a=s(79989),i=s(90690),o=s(6310),n=s(5649),r=s(55565),l=s(3689),c=l((function(){return 4294967297!==[].push.call({length:4294967296},1)})),d=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}},u=c||!d();a({target:"Array",proto:!0,arity:1,forced:u},{push:function(t){var e=i(this),s=o(e),a=arguments.length;r(s+a);for(var l=0;l{s.r(e),s.d(e,{default:()=>$});var a=function(){var t=this,e=t._self._c;return e("div",[e("b-card",{attrs:{title:"Welcome to Flux - The biggest decentralized computational network"}},[e("list-entry",{attrs:{title:"Dashboard",data:t.dashboard}}),e("list-entry",{attrs:{title:"Applications",data:t.applications}}),e("list-entry",{attrs:{title:"XDAO",data:t.xdao}}),e("list-entry",{attrs:{title:"Administration",data:t.administration}}),e("list-entry",{attrs:{title:"Node Status",data:t.getNodeStatusResponse.nodeStatus,variant:t.getNodeStatusResponse.class}})],1),"none"===t.privilege?e("b-card",[e("b-card-title",[t._v("Automated Login")]),e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-6"},[e("b-tabs",{attrs:{"content-class":"mt-0"}},[e("b-tab",{attrs:{title:"3rd Party Login",active:""}},[e("div",{staticClass:"ssoLogin"},[e("div",{attrs:{id:"ssoLoading"}},[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Loading Sign In Options ")])],1),e("div",{staticStyle:{display:"none"},attrs:{id:"ssoLoggedIn"}},[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Login Process ")])],1),e("div",{staticStyle:{display:"none"},attrs:{id:"ssoVerify"}},[e("b-button",{staticClass:"mb-2",attrs:{variant:"primary",type:"submit"},on:{click:t.cancelVerification}},[t._v(" Cancel Verification ")]),e("div",[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Verification Process ")]),e("div",[e("i",[t._v("Please check email for verification link.")])])],1)],1),e("div",{attrs:{id:"firebaseui-auth-container"}})])]),e("b-tab",{attrs:{title:"Email/Password"}},[e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-12 mt-1"},[e("b-form",{ref:"emailLoginForm",staticClass:"mx-5",attrs:{id:"emailLoginForm"},on:{submit:function(t){t.preventDefault()}}},[e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Email","label-for":"h-email","label-cols-md":"4"}},[e("b-form-input",{attrs:{id:"h-email",type:"email",placeholder:"Email...",required:""},model:{value:t.emailForm.email,callback:function(e){t.$set(t.emailForm,"email",e)},expression:"emailForm.email"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Password","label-for":"h-password","label-cols-md":"4"}},[e("b-form-input",{attrs:{id:"h-password",type:"password",placeholder:"Password...",required:""},model:{value:t.emailForm.password,callback:function(e){t.$set(t.emailForm,"password",e)},expression:"emailForm.password"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"4"}},[e("b-button",{staticClass:"w-100",attrs:{type:"submit",variant:"primary"},on:{click:t.emailLogin}},[e("div",{staticStyle:{display:"none"},attrs:{id:"emailLoginProcessing"}},[e("b-spinner",{attrs:{variant:"secondary",small:""}})],1),e("div",{attrs:{id:"emailLoginExecute"}},[t._v(" Login ")])])],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"4"}},[e("b-button",{directives:[{name:"b-modal",rawName:"v-b-modal.modal-prevent-closing",modifiers:{"modal-prevent-closing":!0}}],staticClass:"w-100",attrs:{id:"signUpButton",type:"submit",variant:"secondary"},on:{click:t.createAccount}},[t._v(" Sign Up ")])],1)],1)],1)],1),e("div",{staticClass:"text-center",staticStyle:{display:"none"},attrs:{id:"ssoEmailVerify"}},[e("b-button",{staticClass:"mb-2",attrs:{variant:"primary",type:"submit"},on:{click:t.cancelVerification}},[t._v(" Cancel Verification ")]),e("div",[e("b-spinner",{attrs:{variant:"primary"}}),e("div",[t._v(" Finishing Verification Process ")]),e("div",[e("i",[t._v("Please check email for verification link.")])])],1)],1)],1)])])],1)],1),e("dd",{staticClass:"col-sm-6"},[e("b-card-text",{staticClass:"text-center loginText"},[t._v(" Decentralized Login ")]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{href:`zel:?action=sign&message=${t.loginPhrase}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${t.callbackValue}`,title:"Login with Zelcore"},on:{click:t.initiateLoginWS}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{attrs:{title:"Login with SSP"},on:{click:t.initSSP}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{title:"Login with WalletConnect"},on:{click:t.initWalletConnect}},[e("img",{staticClass:"walletIcon",attrs:{src:s(47622),alt:"WalletConnect",height:"100%",width:"100%"}})]),e("a",{attrs:{title:"Login with Metamask"},on:{click:t.initMetamask}},[e("img",{staticClass:"walletIcon",attrs:{src:s(28125),alt:"Metamask",height:"100%",width:"100%"}})])])],1)])],1):t._e(),"none"===t.privilege?e("b-card",[e("b-card-title",[t._v("Manual Login")]),e("dl",{staticClass:"row"},[e("dd",{staticClass:"col-sm-12"},[e("b-card-text",{staticClass:"text-center"},[t._v(" Sign the following message with any Flux ID / SSP Wallet ID / Bitcoin / Ethereum address ")]),e("br"),e("br"),e("b-form",{staticClass:"mx-5",on:{submit:function(t){t.preventDefault()}}},[e("b-row",[e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Message","label-for":"h-message","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-message",placeholder:"Insert Login Phrase"},model:{value:t.loginForm.loginPhrase,callback:function(e){t.$set(t.loginForm,"loginPhrase",e)},expression:"loginForm.loginPhrase"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Address","label-for":"h-address","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-address",placeholder:"Insert Flux ID or Bitcoin address"},model:{value:t.loginForm.zelid,callback:function(e){t.$set(t.loginForm,"zelid",e)},expression:"loginForm.zelid"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{label:"Signature","label-for":"h-signature","label-cols-md":"3"}},[e("b-form-input",{attrs:{id:"h-signature",placeholder:"Insert Signature"},model:{value:t.loginForm.signature,callback:function(e){t.$set(t.loginForm,"signature",e)},expression:"loginForm.signature"}})],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-form-group",{attrs:{"label-cols-md":"3"}},[e("b-button",{staticClass:"w-100",attrs:{type:"submit",variant:"primary"},on:{click:t.login}},[t._v(" Login ")])],1)],1)],1)],1)],1)])],1):t._e(),e("b-modal",{ref:"modal",attrs:{id:"modal-prevent-closing",title:"Create Flux SSO Account","header-bg-variant":"primary","title-class":"modal-title"},on:{show:t.resetModal,hidden:t.resetModal,ok:t.handleOk}},[e("form",{ref:"form",on:{submit:function(e){return e.stopPropagation(),e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("b-form-group",{attrs:{label:"Email","label-for":"email-input","invalid-feedback":"Email is required",state:t.emailState}},[e("b-form-input",{attrs:{id:"email-input",type:"email",state:t.emailState,required:""},model:{value:t.createSSOForm.email,callback:function(e){t.$set(t.createSSOForm,"email",e)},expression:"createSSOForm.email"}})],1),e("b-form-group",{attrs:{label:"Password","label-for":"pw1-input","invalid-feedback":"Password is required",state:t.pw1State}},[e("b-form-input",{attrs:{id:"pw1-input",type:"password",state:t.pw1State,required:""},model:{value:t.createSSOForm.pw1,callback:function(e){t.$set(t.createSSOForm,"pw1",e)},expression:"createSSOForm.pw1"}})],1),e("b-form-group",{attrs:{label:"Confirm Password","label-for":"pw2-input","invalid-feedback":"Password is required",state:t.pw2State}},[e("b-form-input",{attrs:{id:"pw2-input",type:"password",state:t.pw2State,required:""},model:{value:t.createSSOForm.pw2,callback:function(e){t.$set(t.createSSOForm,"pw2",e)},expression:"createSSOForm.pw2"}})],1)],1),e("div",{staticClass:"sso-tos"},[e("p",{staticStyle:{width:"75%"}},[t._v(" By continuing, you are indicating that you accept our "),e("a",{staticClass:"highlight",attrs:{href:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",referrerpolicy:"no-referrer",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Terms of Service")]),t._v(" and "),e("a",{staticClass:"highlight",attrs:{href:"https://runonflux.io/privacyPolicy",referrerpolicy:"no-referrer",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Privacy Policy")]),t._v(". ")])])])],1)},i=[],o=s(86855),n=s(64206),r=s(49379),l=s(15193),c=s(54909),d=s(50725),u=s(26253),h=s(22183),g=s(46709),m=s(20629),p=s(38511),f=s(62693),y=s(94145),w=s(44866),b=s(74811),v=s(5449),S=s(34547),x=s(51748),P=s(37307),F=s(34369),I=s(27616),k=s(87066),L=s(48764)["lW"];const C="df787edc6839c7de49d527bba9199eaa",T={projectId:C,metadata:{name:"Flux Cloud",description:"Flux, Your Gateway to a Decentralized World",url:"https://home.runonflux.io",icons:["https://home.runonflux.io/img/logo.png"]}},E=new f.u(T),_={enableDebug:!0},O=new y.MetaMaskSDK(_);let R;const B=s(80129),A=s(58971),V={components:{BCard:o._,BCardText:n.j,BCardTitle:r._,BButton:l.T,BForm:c.e,BCol:d.l,BRow:u.T,BFormInput:h.e,BFormGroup:g.x,ListEntry:x.Z,ToastificationContent:S.Z},data(){return{modalShow:!1,dashboard:"Check Flux network information, resources available or a map with server locations.",xdao:"See the list of changes proposed to Flux network, create new ones and vote.",applications:"Buy on marketplace, register your own app, manage your active apps.",administration:"Tools for the infrastructure administrators, node operators.",websocket:null,ui:null,ssoVerification:!1,errorMessage:"",loginPhrase:"",loginForm:{zelid:"",signature:"",loginPhrase:""},emailForm:{email:"",password:""},createSSOForm:{email:"",pw1:"",pw2:""},emailState:null,pw1State:null,pw2State:null,signClient:null,getNodeStatusResponse:{class:"text-success",status:"",data:"",nodeStatus:"Checking status..."}}},computed:{...(0,m.rn)("flux",["userconfig","config","privilege"]),skin(){return(0,P.Z)().skin.value},callbackValue(){const t=this.backendURL(),e=`${t}/id/verifylogin`;return encodeURI(e)}},mounted(){this.daemonWelcomeGetFluxNodeStatus(),this.getZelIdLoginPhrase(),this.initMMSDK();const t={callbacks:{signInSuccessWithAuthResult:this.handleSignInSuccessWithAuthResult,uiShown(){document.getElementById("ssoLoading").style.display="none"}},popupMode:!0,signInFlow:"popup",signInOptions:[{provider:w.Z.auth.GoogleAuthProvider.PROVIDER_ID,customParameters:{prompt:"select_account"}},"apple.com"],tosUrl:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",privacyPolicyUrl:"https://runonflux.io/privacyPolicy"};"none"===this.privilege&&(b.I.AuthUI.getInstance()?(this.ui=b.I.AuthUI.getInstance(),this.ui.start("#firebaseui-auth-container",t)):(this.ui=new b.I.AuthUI(w.Z.auth()),this.ui.start("#firebaseui-auth-container",t)))},methods:{handleSignInSuccessWithAuthResult(t){return t.user&&this.handleSignedInUser(t.user),!1},async handleSignedInUser(t){try{if(t.emailVerified){document.getElementById("ssoLoggedIn").style.display="block";const e=t.auth.currentUser.accessToken,s=this.loginPhrase,a={"Content-Type":"application/json",Authorization:`Bearer ${e}`},i=await k.Z.post("https://service.fluxcore.ai/api/signInOrUp",{message:s},{headers:a});if("success"!==i.data?.status)throw new Error("Login Failed, please try again.");const o={zelid:i.data.public_address,signature:i.data.signature,loginPhrase:this.loginPhrase};F.Z.verifyLogin(o).then((t=>{if(console.log(t),"success"===t.data.status){const e={zelid:i.data.public_address,signature:i.data.signature,loginPhrase:this.loginPhrase};this.$store.commit("flux/setPrivilege",t.data.data.privilage),this.$store.commit("flux/setZelid",e.zelid),localStorage.setItem("zelidauth",B.stringify(e)),this.showToast("success",t.data.data.message)}else this.showToast(this.getVariant(t.data.status),t.data.data.message||t.data.data),this.resetLoginUI()})).catch((t=>{console.log(t),this.resetLoginUI()}))}else{if(t.displayName){const e=/\b((http|https|ftp):\/\/[-A-Z0-9+&@#%?=~_|!:,.;]*[-A-Z0-9+&@#%=~_|]|www\.[-A-Z0-9+&@#%?=~_|!:,.;]*[-A-Z0-9+&@#%=~_|]|[-A-Z0-9]+\.[A-Z]{2,}[-A-Z0-9+&@#%?=~_|]*[-A-Z0-9+&@#%=~_|])/i;if(e.test(t.displayName))throw new Error("Login Failed, please try again.")}t.sendEmailVerification().then((()=>{this.showToast("info","please verify email")})).catch((()=>{this.showToast("warning","failed to send new verification email")})).finally((async()=>{document.getElementById("ssoVerify").style.display="block",document.getElementById("ssoEmailVerify").style.display="block",document.getElementById("emailLoginForm").style.display="none",this.ssoVerification=!0,await this.checkVerification()}))}}catch(e){this.resetLoginUI(),this.showToast("warning","Login Failed, please try again.")}},async checkVerification(){try{let t=(0,v.PR)();t&&this.ssoVerification?(await t.reload(),t=(0,v.PR)(),t.emailVerified?(this.showToast("info","email verified"),document.getElementById("ssoVerify").style.display="none",this.handleSignedInUser(t),this.ssoVerification=!1):setTimeout((()=>{this.checkVerification()}),5e3)):this.resetLoginUI()}catch(t){this.showToast("warning","email verification failed"),this.resetLoginUI()}},cancelVerification(){this.resetLoginUI()},resetLoginUI(){document.getElementById("ssoVerify").style.display="none",document.getElementById("ssoEmailVerify").style.display="none",document.getElementById("ssoLoggedIn").style.display="none",document.getElementById("emailLoginProcessing").style.display="none",document.getElementById("emailLoginExecute").style.display="block",document.getElementById("emailLoginForm").style.display="block",document.getElementById("signUpButton").style.display="block",this.emailForm.email="",this.emailForm.password="",this.ui.reset(),this.ui.start("#firebaseui-auth-container"),this.ssoVerification=!1},async daemonWelcomeGetFluxNodeStatus(){const t=await I.Z.getFluxNodeStatus().catch((()=>null)),e=await I.Z.getBlockchainInfo().catch((()=>null));if(!t||!e)return this.getNodeStatusResponse.status="UNKNOWN",this.getNodeStatusResponse.nodeStatus="Unable to connect to Flux Blockchain Daemon.",void(this.getNodeStatusResponse.class="danger");this.getNodeStatusResponse.status=t.data.status,this.getNodeStatusResponse.data=t.data.data,this.getNodeStatusResponse.data&&e.data.data&&(e.data.data.blocks+316100){const t=+s+1;this.$store.commit("flux/setFluxPort",t)}a+=e,a+=":",a+=this.config.apiPort}return A.get("backendURL")||a},initiateLoginWS(){const t=this;let e=this.backendURL();e=e.replace("https://","wss://"),e=e.replace("http://","ws://");const s=`${e}/ws/id/${this.loginPhrase}`,a=new WebSocket(s);this.websocket=a,a.onopen=e=>{t.onOpen(e)},a.onclose=e=>{t.onClose(e)},a.onmessage=e=>{t.onMessage(e)},a.onerror=e=>{t.onError(e)}},onError(t){console.log(t)},onMessage(t){const e=B.parse(t.data);if(console.log(e),"success"===e.status&&e.data){const t={zelid:e.data.zelid,signature:e.data.signature,loginPhrase:e.data.loginPhrase};this.$store.commit("flux/setPrivilege",e.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",e.data.message)}console.log(e),console.log(t)},onClose(t){console.log(t)},onOpen(t){console.log(t)},showToast(t,e){this.$toast({component:S.Z,props:{title:e,icon:"BellIcon",variant:t}})},getZelIdLoginPhrase(){F.Z.loginPhrase().then((t=>{console.log(t),"error"===t.data.status?this.getEmergencyLoginPhrase():(this.loginPhrase=t.data.data,this.loginForm.loginPhrase=t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t)}))},getEmergencyLoginPhrase(){F.Z.emergencyLoginPhrase().then((t=>{console.log(t),"error"===t.data.status?this.showToast("danger",t.data.data.message):(this.loginPhrase=t.data.data,this.loginForm.loginPhrase=t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t)}))},getVariant(t){return"error"===t?"danger":"message"===t?"info":t},login(){console.log(this.loginForm),F.Z.verifyLogin(this.loginForm).then((t=>{if(console.log(t),"success"===t.data.status){const e={zelid:this.loginForm.zelid,signature:this.loginForm.signature,loginPhrase:this.loginForm.loginPhrase};this.$store.commit("flux/setPrivilege",t.data.data.privilage),this.$store.commit("flux/setZelid",e.zelid),localStorage.setItem("zelidauth",B.stringify(e)),this.showToast("success",t.data.data.message)}else this.showToast(this.getVariant(t.data.status),t.data.data.message||t.data.data)})).catch((t=>{console.log(t),this.showToast("danger",t.toString())}))},async emailLogin(){try{if(this.$refs.emailLoginForm.reportValidity()){document.getElementById("emailLoginExecute").style.display="none",document.getElementById("emailLoginProcessing").style.display="block",document.getElementById("signUpButton").style.display="none";const t=await(0,v.fZ)(this.emailForm);this.handleSignInSuccessWithAuthResult(t)}}catch(t){document.getElementById("emailLoginExecute").style.display="block",document.getElementById("emailLoginProcessing").style.display="none",document.getElementById("signUpButton").style.display="block",document.getElementById("ssoEmailVerify").style.display="none",this.showToast("danger","login failed, please try again")}},async createAccount(){this.modalShow=!this.modalShow},async onSessionConnect(t){console.log(t);const e=await this.signClient.request({topic:t.topic,chainId:"eip155:1",request:{method:"personal_sign",params:[this.loginPhrase,t.namespaces.eip155.accounts[0].split(":")[2]]}});console.log(e);const s={zelid:t.namespaces.eip155.accounts[0].split(":")[2],signature:e,loginPhrase:this.loginPhrase},a=await F.Z.verifyLogin(s);if(console.log(a),"success"===a.data.status){const t=s;this.$store.commit("flux/setPrivilege",a.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",a.data.data.message)}else this.showToast(this.getVariant(a.data.status),a.data.data.message||a.data.data)},onSessionUpdate(t){console.log(t)},async initWalletConnect(){const t=this;try{const e=await p.ZP.init(T);this.signClient=e,e.on("session_event",(({event:t})=>{console.log(t)})),e.on("session_update",(({topic:s,params:a})=>{const{namespaces:i}=a,o=e.session.get(s),n={...o,namespaces:i};t.onSessionUpdate(n)})),e.on("session_delete",(()=>{}));const{uri:s,approval:a}=await e.connect({requiredNamespaces:{eip155:{methods:["personal_sign"],chains:["eip155:1"],events:["chainChanged","accountsChanged"]}}});if(s){E.openModal({uri:s});const t=await a();this.onSessionConnect(t),E.closeModal()}}catch(e){console.error(e),this.showToast("danger",e.message)}},async siwe(t,e){try{const s=`0x${L.from(t,"utf8").toString("hex")}`,a=await R.request({method:"personal_sign",params:[s,e]});console.log(a);const i={zelid:e,signature:a,loginPhrase:this.loginPhrase},o=await F.Z.verifyLogin(i);if(console.log(o),"success"===o.data.status){const t=i;this.$store.commit("flux/setPrivilege",o.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",o.data.data.message)}else this.showToast(this.getVariant(o.data.status),o.data.data.message||o.data.data)}catch(s){console.error(s),this.showToast("danger",s.message)}},async initMetamask(){try{if(!R)return void this.showToast("danger","Metamask not detected");let t;if(R&&!R.selectedAddress){const e=await R.request({method:"eth_requestAccounts",params:[]});console.log(e),t=e[0]}else t=R.selectedAddress;this.siwe(this.loginPhrase,t)}catch(t){this.showToast("danger",t.message)}},async initSSP(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t=await window.ssp.request("sspwid_sign_message",{message:this.loginPhrase});if("ERROR"===t.status)throw new Error(t.data||t.result);const e={zelid:t.address,signature:t.signature,loginPhrase:this.loginPhrase},s=await F.Z.verifyLogin(e);if(console.log(s),"success"===s.data.status){const t=e;this.$store.commit("flux/setPrivilege",s.data.data.privilage),this.$store.commit("flux/setZelid",t.zelid),localStorage.setItem("zelidauth",B.stringify(t)),this.showToast("success",s.data.data.message)}else this.showToast(this.getVariant(s.data.status),s.data.data.message||s.data.data)}catch(t){this.showToast("danger",t.message)}},checkFormValidity(){const t=this.$refs.form.reportValidity();return this.createSSOForm.pw1.length>=8?(this.pw1State=!0,this.createSSOForm.pw2.length>=8?(this.pw2State=!0,this.createSSOForm.pw1!==this.createSSOForm.pw2?(this.showToast("info","passwords do not match"),this.pw1State=!1,this.pw2State=!1,null):t):(this.showToast("info","password must be at least 8 chars"),null)):(this.showToast("info","password must be at least 8 chars"),null)},resetModal(){this.createSSOForm.email="",this.createSSOForm.pw1="",this.createSSOForm.pw2="",this.emailState=null,this.pw1State=null,this.pw2State=null},handleOk(t){t.preventDefault(),this.handleSubmit()},async handleSubmit(){if(this.checkFormValidity()){try{const t=await(0,v.wY)({email:this.createSSOForm.email,password:this.createSSOForm.pw1});this.handleSignInSuccessWithAuthResult(t)}catch(t){this.resetLoginUI(),this.showToast("danger","Account creation failed, try again")}this.$nextTick((()=>{this.$bvModal.hide("modal-prevent-closing")}))}}}},N=V;var Z=s(1001),z=(0,Z.Z)(N,a,i,!1,null,null,null);const $=z.exports},84328:(t,e,s)=>{var a=s(65290),i=s(27578),o=s(6310),n=function(t){return function(e,s,n){var r,l=a(e),c=o(l),d=i(n,c);if(t&&s!==s){while(c>d)if(r=l[d++],r!==r)return!0}else for(;c>d;d++)if((t||d in l)&&l[d]===s)return t||d||0;return!t&&-1}};t.exports={includes:n(!0),indexOf:n(!1)}},5649:(t,e,s)=>{var a=s(67697),i=s(92297),o=TypeError,n=Object.getOwnPropertyDescriptor,r=a&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=r?function(t,e){if(i(t)&&!n(t,"length").writable)throw new o("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},8758:(t,e,s)=>{var a=s(36812),i=s(19152),o=s(82474),n=s(72560);t.exports=function(t,e,s){for(var r=i(e),l=n.f,c=o.f,d=0;d{var e=TypeError,s=9007199254740991;t.exports=function(t){if(t>s)throw e("Maximum allowed index exceeded");return t}},72739:t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},79989:(t,e,s)=>{var a=s(19037),i=s(82474).f,o=s(75773),n=s(11880),r=s(95014),l=s(8758),c=s(35266);t.exports=function(t,e){var s,d,u,h,g,m,p=t.target,f=t.global,y=t.stat;if(d=f?a:y?a[p]||r(p,{}):(a[p]||{}).prototype,d)for(u in e){if(g=e[u],t.dontCallGetSet?(m=i(d,u),h=m&&m.value):h=d[u],s=c(f?u:p+(y?".":"#")+u,t.forced),!s&&void 0!==h){if(typeof g==typeof h)continue;l(g,h)}(t.sham||h&&h.sham)&&o(g,"sham",!0),n(d,u,g,t)}}},94413:(t,e,s)=>{var a=s(68844),i=s(3689),o=s(6648),n=Object,r=a("".split);t.exports=i((function(){return!n("z").propertyIsEnumerable(0)}))?function(t){return"String"===o(t)?r(t,""):n(t)}:n},92297:(t,e,s)=>{var a=s(6648);t.exports=Array.isArray||function(t){return"Array"===a(t)}},35266:(t,e,s)=>{var a=s(3689),i=s(69985),o=/#|\.prototype\./,n=function(t,e){var s=l[r(t)];return s===d||s!==c&&(i(e)?a(e):!!e)},r=n.normalize=function(t){return String(t).replace(o,".").toLowerCase()},l=n.data={},c=n.NATIVE="N",d=n.POLYFILL="P";t.exports=n},6310:(t,e,s)=>{var a=s(43126);t.exports=function(t){return a(t.length)}},58828:t=>{var e=Math.ceil,s=Math.floor;t.exports=Math.trunc||function(t){var a=+t;return(a>0?s:e)(a)}},82474:(t,e,s)=>{var a=s(67697),i=s(22615),o=s(49556),n=s(75684),r=s(65290),l=s(18360),c=s(36812),d=s(68506),u=Object.getOwnPropertyDescriptor;e.f=a?u:function(t,e){if(t=r(t),e=l(e),d)try{return u(t,e)}catch(s){}if(c(t,e))return n(!i(o.f,t,e),t[e])}},72741:(t,e,s)=>{var a=s(54948),i=s(72739),o=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return a(t,o)}},7518:(t,e)=>{e.f=Object.getOwnPropertySymbols},54948:(t,e,s)=>{var a=s(68844),i=s(36812),o=s(65290),n=s(84328).indexOf,r=s(57248),l=a([].push);t.exports=function(t,e){var s,a=o(t),c=0,d=[];for(s in a)!i(r,s)&&i(a,s)&&l(d,s);while(e.length>c)i(a,s=e[c++])&&(~n(d,s)||l(d,s));return d}},49556:(t,e)=>{var s={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,i=a&&!s.call({1:2},1);e.f=i?function(t){var e=a(this,t);return!!e&&e.enumerable}:s},19152:(t,e,s)=>{var a=s(76058),i=s(68844),o=s(72741),n=s(7518),r=s(85027),l=i([].concat);t.exports=a("Reflect","ownKeys")||function(t){var e=o.f(r(t)),s=n.f;return s?l(e,s(t)):e}},27578:(t,e,s)=>{var a=s(68700),i=Math.max,o=Math.min;t.exports=function(t,e){var s=a(t);return s<0?i(s+e,0):o(s,e)}},65290:(t,e,s)=>{var a=s(94413),i=s(74684);t.exports=function(t){return a(i(t))}},68700:(t,e,s)=>{var a=s(58828);t.exports=function(t){var e=+t;return e!==e||0===e?0:a(e)}},43126:(t,e,s)=>{var a=s(68700),i=Math.min;t.exports=function(t){return t>0?i(a(t),9007199254740991):0}},70560:(t,e,s)=>{var a=s(79989),i=s(90690),o=s(6310),n=s(5649),r=s(55565),l=s(3689),c=l((function(){return 4294967297!==[].push.call({length:4294967296},1)})),d=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}},u=c||!d();a({target:"Array",proto:!0,arity:1,forced:u},{push:function(t){var e=i(this),s=o(e),a=arguments.length;r(s+a);for(var l=0;l{"use strict";s.d(e,{Z:()=>wc});var i=function(){var t=this,e=t._self._c;return e("div",[e("b-modal",{attrs:{"hide-footer":"",centered:"","hide-header-close":"","no-close-on-backdrop":"","no-close-on-esc":"",size:"lg","header-bg-variant":"primary",title:t.operationTitle,"title-tag":"h5"},model:{value:t.progressVisable,callback:function(e){t.progressVisable=e},expression:"progressVisable"}},[e("div",{staticClass:"d-flex flex-column justify-content-center align-items-center",staticStyle:{height:"100%"}},[e("div",{staticClass:"d-flex align-items-center mb-2"},[e("b-spinner",{attrs:{label:"Loading..."}}),e("div",{staticClass:"ml-1"},[t._v(" Waiting for the operation to be completed... ")])],1)])]),e("div",[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mr-2",attrs:{variant:"outline-primary",pill:""},on:{click:t.goBackToApps}},[e("v-icon",{attrs:{name:"chevron-left"}}),t._v(" Back ")],1),t._v(" "+t._s(t.applicationManagementAndStatus)+" ")],1),e("b-tabs",{ref:"managementTabs",staticClass:"mt-2",staticStyle:{"flex-wrap":"nowrap"},attrs:{pills:"",vertical:t.windowWidth>860,lazy:""},on:{input:e=>t.updateManagementTab(e)}},[t.windowWidth>860?e("b-tab",{attrs:{title:"Local App Management",disabled:""}}):t._e(),e("b-tab",{attrs:{active:"",title:"Specifications"}},[e("div",[e("b-card",[e("h3",[e("b-icon",{attrs:{icon:"hdd-network-fill"}}),t._v("  Backend Selection")],1),e("div",{staticClass:"d-flex"},[e("b-input-group",{staticClass:"my-1",staticStyle:{width:"250px"},attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"laptop"}})],1),e("b-form-select",{attrs:{options:null},on:{change:t.selectedIpChanged},model:{value:t.selectedIp,callback:function(e){t.selectedIp=e},expression:"selectedIp"}},t._l(t.instances.data,(function(s){return e("b-form-select-option",{key:s.ip,attrs:{value:s.ip}},[t._v(" "+t._s(s.ip)+" ")])})),1),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.refreshInfo}})],1)],1)])],1),e("div",[e("b-card",[t.callBResponse.data&&t.callResponse.data?e("div",[t.callBResponse.data.hash!==t.callResponse.data.hash?e("div",[e("h1",[t._v("Locally running application does not match global specifications! Update needed")]),e("br"),e("br")]):e("div",[t._v(" Application is synced with Global network "),e("br"),e("br")])]):t._e(),e("h2",[t._v("Installed Specifications")]),t.callResponse.data?e("div",{staticStyle:{"text-align":"left"}},[e("b-card",{},[e("list-entry",{attrs:{title:"Name",data:t.callResponse.data.name}}),e("list-entry",{attrs:{title:"Description",data:t.callResponse.data.description}}),e("list-entry",{attrs:{title:"Owner",data:t.callResponse.data.owner}}),e("list-entry",{attrs:{title:"Hash",data:t.callResponse.data.hash}}),t.callResponse.data.version>=5?e("div",[t.callResponse.data.geolocation.length?e("div",t._l(t.callResponse.data.geolocation,(function(s){return e("div",{key:s},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(s)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)]):t._e(),t.callResponse.data.instances?e("list-entry",{attrs:{title:"Instances",data:t.callResponse.data.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Specifications version",number:t.callResponse.data.version}}),e("list-entry",{attrs:{title:"Registered on Blockheight",number:t.callResponse.data.height}}),t.callResponse.data.hash&&64===t.callResponse.data.hash.length?e("list-entry",{attrs:{title:"Expires on Blockheight",number:t.callResponse.data.height+(t.callResponse.data.expire||22e3)}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.getNewExpireLabel}}),e("list-entry",{attrs:{title:"Enterprise Nodes",data:t.callResponse.data.nodes?t.callResponse.data.nodes.toString():"Not scoped"}}),e("list-entry",{attrs:{title:"Static IP",data:t.callResponse.data.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}}),e("h4",[t._v("Composition")]),t.callResponse.data.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:t.callResponse.data.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:t.callResponse.data.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(t.callResponse.data.ports,t.callResponse.data.name).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:t.callResponse.data.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:t.callResponse.data.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:t.callResponse.data.containerData.toString()||"none"}}),e("list-entry",{attrs:{title:"Environment Parameters",data:t.callResponse.data.enviromentParameters.length>0?t.callResponse.data.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:t.callResponse.data.commands.length>0?t.callResponse.data.commands.toString():"none"}}),t.callResponse.data.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${t.callResponse.data.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${t.callResponse.data.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${t.callResponse.data.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${t.callResponse.data.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${t.callResponse.data.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${t.callResponse.data.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${t.callResponse.data.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${t.callResponse.data.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${t.callResponse.data.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${t.callResponse.data.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${t.callResponse.data.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${t.callResponse.data.hdd} GB`}})],1)],1)],1):e("div",t._l(t.callResponse.data.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,t.callResponse.data.name,i).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)})),1)],1)],1):e("div",[t._v(" Local Specifications loading... ")]),e("h2",{staticClass:"mt-2"},[t._v(" Global Specifications ")]),t.callBResponse.data?e("div",{staticStyle:{"text-align":"left"}},[e("b-card",{},[e("list-entry",{attrs:{title:"Name",data:t.callBResponse.data.name}}),e("list-entry",{attrs:{title:"Description",data:t.callBResponse.data.description}}),e("list-entry",{attrs:{title:"Owner",data:t.callBResponse.data.owner}}),e("list-entry",{attrs:{title:"Hash",data:t.callBResponse.data.hash}}),t.callBResponse.data.version>=5?e("div",[t.callBResponse.data.geolocation.length?e("div",t._l(t.callBResponse.data.geolocation,(function(s){return e("div",{key:s},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(s)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)]):t._e(),t.callBResponse.data.instances?e("list-entry",{attrs:{title:"Instances",data:t.callBResponse.data.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Specifications version",number:t.callBResponse.data.version}}),e("list-entry",{attrs:{title:"Registered on Blockheight",number:t.callBResponse.data.height}}),t.callBResponse.data.hash&&64===t.callBResponse.data.hash.length?e("list-entry",{attrs:{title:"Expires on Blockheight",number:t.callBResponse.data.height+(t.callBResponse.data.expire||22e3)}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.getNewExpireLabel}}),e("list-entry",{attrs:{title:"Enterprise Nodes",data:t.callBResponse.data.nodes?t.callBResponse.data.nodes.toString():"Not scoped"}}),e("list-entry",{attrs:{title:"Static IP",data:t.callBResponse.data.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}}),e("h4",[t._v("Composition")]),t.callBResponse.data.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:t.callBResponse.data.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:t.callBResponse.data.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomainsGlobal.toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:t.callBResponse.data.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:t.callBResponse.data.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:t.callBResponse.data.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:t.callBResponse.data.enviromentParameters.length>0?t.callBResponse.data.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:t.callBResponse.data.commands.length>0?t.callBResponse.data.commands.toString():"none"}}),t.callBResponse.data.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${t.callBResponse.data.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${t.callBResponse.data.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${t.callBResponse.data.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${t.callBResponse.data.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${t.callBResponse.data.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${t.callBResponse.data.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${t.callBResponse.data.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${t.callBResponse.data.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${t.callBResponse.data.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${t.callBResponse.data.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${t.callBResponse.data.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${t.callBResponse.data.hdd} GB`}})],1)],1)],1):e("div",t._l(t.callBResponse.data.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,t.callBResponse.data.name,i).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)})),1)],1)],1):"error"===t.callBResponse.status?e("div",[t._v(" Global specifications not found! ")]):e("div",[t._v(" Global Specifications loading... ")])])],1)]),e("b-tab",{attrs:{title:"Information"}},[e("h3",[e("b-icon",{attrs:{icon:"app-indicator"}}),t._v(" "+t._s(t.appSpecification.name))],1),t.commandExecutingInspect?e("div",[e("div",{staticStyle:{display:"flex","align-items":"center"}},[e("v-icon",{staticClass:"spin-icon",staticStyle:{"margin-right":"5px"},attrs:{name:"spinner"}}),e("h5",{staticStyle:{margin:"0"}},[t._v(" Loading... ")])],1)]):t._e(),t.appSpecification.version>=4?e("div",t._l(t.callResponseInspect.data,(function(s,i){return e("div",{key:i},[e("h4",[t._v("Component: "+t._s(s.name))]),s.callData?e("div",[e("json-viewer",{attrs:{value:s.callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])})),0):e("div",[t.callResponseInspect.data&&t.callResponseInspect.data[0]?e("div",[e("json-viewer",{attrs:{value:t.callResponseInspect.data[0].callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])]),e("b-tab",{attrs:{title:"Monitoring"}},[e("div",{staticClass:"container"},[e("div",{staticClass:"d-flex mb-1 align-items-center justify-content-between",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px","padding-top":"12px","padding-bottom":"4px","padding-left":"12px","padding-right":"12px","text-align":"left"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"bar-chart-fill"}}),t._v(" "+t._s(t.overviewTitle)+" ")],1),e("b-form-checkbox",{attrs:{switch:""},on:{change:t.enableHistoryStatisticsChange},model:{value:t.enableHistoryStatistics,callback:function(e){t.enableHistoryStatistics=e},expression:"enableHistoryStatistics"}},[t._v(" History Statistics ")])],1),e("div",{staticClass:"d-flex flex-container2"},[e("div",[e("b-input-group",{staticClass:"mb-1",attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"app-indicator"}})],1),t.appSpecification?.compose?e("b-form-select",{attrs:{options:null,disabled:t.isComposeSingle},model:{value:t.selectedContainerMonitoring,callback:function(e){t.selectedContainerMonitoring=e},expression:"selectedContainerMonitoring"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2):t._e(),t.appSpecification?.compose?t._e():e("b-form-input",{attrs:{placeholder:t.appSpecification.name,disabled:""}}),t.enableHistoryStatistics?e("b-icon",{class:["ml-1","r"],attrs:{icon:"arrow-clockwise"},on:{click:t.fetchStats}}):t._e(),t.enableHistoryStatistics||!0!==t.buttonStats?t._e():e("b-icon",{class:["ml-1","r"],attrs:{icon:"arrow-clockwise"},on:{click:function(e){return t.startPollingStats(!0)}}})],1),t.enableHistoryStatistics?t._e():e("b-input-group",{staticStyle:{width:"120px"},attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Limit the number of data points displayed on the charts.",expression:"'Limit the number of data points displayed on the charts.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"clipboard-data"}})],1),e("b-form-select",{attrs:{options:t.pointsOptions},model:{value:t.selectedPoints,callback:function(e){t.selectedPoints=e},expression:"selectedPoints"}})],1)],1),t.enableHistoryStatistics?t._e():e("div",[e("b-input-group",{attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose the interval for refreshing data on the charts.",expression:"'Choose the interval for refreshing data on the charts.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"clock"}})],1),e("b-form-select",{attrs:{size:"sm",options:t.refreshOptions},model:{value:t.refreshRateMonitoring,callback:function(e){t.refreshRateMonitoring=e},expression:"refreshRateMonitoring"}})],1)],1),t.enableHistoryStatistics?e("div",[e("b-input-group",{attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose the time period to display historical data.",expression:"'Choose the time period to display historical data.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"calendar-range"}})],1),e("b-form-select",{attrs:{options:t.timeOptions},on:{change:t.fetchStats},model:{value:t.selectedTimeRange,callback:function(e){t.selectedTimeRange=e},expression:"selectedTimeRange"}})],1)],1):t._e()]),e("div",{staticClass:"charts-grid"},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("CPU usage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays CPU usage over time. Monitoring CPU usage helps identify high load periods, optimize resource allocation, and troubleshoot performance bottlenecks.",expression:"'Displays CPU usage over time. Monitoring CPU usage helps identify high load periods, optimize resource allocation, and troubleshoot performance bottlenecks.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"cpuChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title ml-2"},[t._v("Memory usage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays memory usage over time. Monitoring memory usage helps identify potential memory leaks, optimize application performance, and.",expression:"'Displays memory usage over time. Monitoring memory usage helps identify potential memory leaks, optimize application performance, and.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"memoryChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Network usage (aggregate)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays network usage over time (TX: Transmit - outgoing data; RX: Receive - incoming data). Key metrics include bandwidth, throughput, and latency. Monitoring helps identify bottlenecks, optimize performance, and ensure efficient data transfer.",expression:"'Displays network usage over time (TX: Transmit - outgoing data; RX: Receive - incoming data). Key metrics include bandwidth, throughput, and latency. Monitoring helps identify bottlenecks, optimize performance, and ensure efficient data transfer.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"networkChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("I/O usage (aggregate)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays Input/Output operations over time, measuring data transfer to/from storage devices and peripherals. Monitoring I/O helps identify bottlenecks, optimize performance, and ensure responsive system behavior.",expression:"'Displays Input/Output operations over time, measuring data transfer to/from storage devices and peripherals. Monitoring I/O helps identify bottlenecks, optimize performance, and ensure responsive system behavior.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"ioChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Persistent Storage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Persistent Storage refers to data that is retained across container restarts and updates. It ensures important information is preserved. Monitoring this helps prevent disk space exhaustion and supports efficient data management.",expression:"'Persistent Storage refers to data that is retained across container restarts and updates. It ensures important information is preserved. Monitoring this helps prevent disk space exhaustion and supports efficient data management.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"diskPersistentChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Root Filesystem (rootfs)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Root Filesystem refers to the temporary storage used by the container during its lifetime. This data is not retained after the container is stopped or deleted. Monitoring rootfs usage helps avoid disk space issues within the container’s filesystem.",expression:"'Root Filesystem refers to the temporary storage used by the container during its lifetime. This data is not retained after the container is stopped or deleted. Monitoring rootfs usage helps avoid disk space issues within the container’s filesystem.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"diskFileSystemChart"}})]),t.enableHistoryStatistics?t._e():e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container mb-2"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"list-ul"}}),e("span",{staticClass:"chart-title"},[t._v("Processes")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"List of running process in continer.",expression:"'List of running process in continer.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("b-form-input",{staticClass:"mb-2",attrs:{placeholder:"Search processes..."},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}),e("div",{staticClass:"table-responsive"},[e("b-table",{staticClass:"table-monitoring",attrs:{small:"",responsive:"","show-empty":"","empty-text":"No records available.",items:t.paginatedProcesses,fields:t.titles,bordered:"",hover:""}})],1),e("div",{staticClass:"d-flex align-items-center my-1"},[e("div",{staticClass:"flex-grow-1 text-center"},[t.filteredProcesses.length?e("b-pagination",{attrs:{pills:"",size:"sm","total-rows":t.filteredProcesses.length,"per-page":t.perPage},on:{change:t.scrollToPagination},model:{value:t.currentPage,callback:function(e){t.currentPage=e},expression:"currentPage"}}):t._e()],1),e("div",{staticClass:"d-flex align-items-center ml-3"},[e("label",{staticClass:"mr-2 mb-0",staticStyle:{"white-space":"nowrap"}},[t._v("Items per page:")]),e("b-form-select",{staticClass:"ml-2",attrs:{options:t.perPageOptions,size:"sm"},on:{change:t.scrollToPagination},model:{value:t.perPage,callback:function(e){t.perPage=e},expression:"perPage"}})],1)])],1)])])]),e("b-tab",{attrs:{title:"File Changes"}},[e("h3",[e("b-icon",{attrs:{icon:"app-indicator"}}),t._v(" "+t._s(t.appSpecification.name))],1),t.commandExecutingChanges?e("div",[e("div",{staticStyle:{display:"flex","align-items":"center"}},[e("v-icon",{staticClass:"spin-icon",staticStyle:{"margin-right":"5px"},attrs:{name:"spinner"}}),e("h5",{staticStyle:{margin:"0"}},[t._v(" Loading... ")])],1)]):t._e(),t.appSpecification.version>=4?e("div",t._l(t.callResponseChanges.data,(function(s,i){return e("div",{key:i},[e("h4",[t._v("Component: "+t._s(s.name))]),s.callData?e("div",[e("kbd",{staticClass:"bg-primary mr-1"},[t._v("Kind: 0 = Modified")]),e("kbd",{staticClass:"bg-success mr-1"},[t._v("Kind: 1 = Added ")]),e("kbd",{staticClass:"bg-danger"},[t._v("Kind: 2 = Deleted")]),e("json-viewer",{staticClass:"mt-1",attrs:{value:s.callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])})),0):e("div",[t.callResponseChanges.data&&t.callResponseChanges.data[0]?e("div",[e("kbd",{staticClass:"bg-primary mr-1"},[t._v("Kind: 0 = Modified")]),e("kbd",{staticClass:"bg-success mr-1"},[t._v("Kind: 1 = Added ")]),e("kbd",{staticClass:"bg-danger"},[t._v("Kind: 2 = Deleted")]),e("json-viewer",{staticClass:"mt-1",attrs:{value:t.callResponseChanges.data[0].callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])]),e("b-tab",{attrs:{title:"Logs"}},[e("div",[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","text-align":"left","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"search"}}),t._v(" Logs Management ")],1)]),e("b-form",{staticClass:"ml-2 mr-2"},[e("div",{staticClass:"flex-container"},[e("b-form-group",[t.appSpecification?.compose?t._e():e("b-form-group",{attrs:{label:"Component"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-input",{staticClass:"input_s",attrs:{size:"sm",placeholder:t.appSpecification.name,disabled:""}}),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.manualFetchLogs}})],1)]),t.appSpecification?.compose?e("b-form-group",{attrs:{label:"Component"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-select",{staticClass:"input_s",attrs:{options:null,disabled:t.isComposeSingle,size:"sm"},on:{change:t.handleContainerChange},model:{value:t.selectedApp,callback:function(e){t.selectedApp=e},expression:"selectedApp"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.manualFetchLogs}})],1)]):t._e(),e("b-form-group",{attrs:{label:"Line Count"}},[e("b-form-input",{staticClass:"input",attrs:{type:"number",size:"sm",disabled:t.fetchAllLogs,step:"10",min:"0"},model:{value:t.lineCount,callback:function(e){t.lineCount=e},expression:"lineCount"}})],1),e("b-form-group",{attrs:{label:"Logs Since"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-input",{staticClass:"input",attrs:{size:"sm",type:"datetime-local",placeholder:"Logs Since"},model:{value:t.sinceTimestamp,callback:function(e){t.sinceTimestamp=e},expression:"sinceTimestamp"}}),t.sinceTimestamp?e("b-icon",{staticClass:"ml-1 x",attrs:{icon:"x-square"},on:{click:t.clearDateFilter}}):t._e()],1)])],1),e("b-form-group",{attrs:{label:"Filter"}},[e("b-input-group",{staticClass:"search_input",attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"funnel-fill"}})],1),e("b-form-input",{attrs:{type:"search",placeholder:"Enter keywords.."},model:{value:t.filterKeyword,callback:function(e){t.filterKeyword=e},expression:"filterKeyword"}})],1),e("b-form-checkbox",{staticClass:"mt-2",attrs:{switch:""},on:{change:t.togglePolling},model:{value:t.pollingEnabled,callback:function(e){t.pollingEnabled=e},expression:"pollingEnabled"}},[t._v(" Auto-refresh "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Enable or disable automatic refreshing of logs every few seconds.",expression:"'Enable or disable automatic refreshing of logs every few seconds.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.fetchAllLogs,callback:function(e){t.fetchAllLogs=e},expression:"fetchAllLogs"}},[t._v(" Fetch All Logs ")]),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.displayTimestamps,callback:function(e){t.displayTimestamps=e},expression:"displayTimestamps"}},[t._v(" Display Timestamps ")]),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.isLineByLineMode,callback:function(e){t.isLineByLineMode=e},expression:"isLineByLineMode"}},[t._v(" Line Selection "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Switch between normal text selection or selecting individual log lines for copying.",expression:"'Switch between normal text selection or selecting individual log lines for copying.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1),e("b-form-checkbox",{staticClass:"mb-1",attrs:{switch:""},model:{value:t.autoScroll,callback:function(e){t.autoScroll=e},expression:"autoScroll"}},[t._v(" Auto-scroll "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Enable or disable automatic scrolling to the latest logs.",expression:"'Enable or disable automatic scrolling to the latest logs.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1)],1)],1)]),e("div",{ref:"logsContainer",staticClass:"code-container",class:{"line-by-line-mode":t.isLineByLineMode}},[t.filteredLogs.length>0?e("button",{ref:"copyButton",staticClass:"log-copy-button ml-2",attrs:{type:"button",disabled:t.copied},on:{click:t.copyCode}},[e("b-icon",{attrs:{icon:t.copied?"check":"back"}}),t._v(" "+t._s(t.copied?"Copied!":"Copy")+" ")],1):t._e(),t.selectedLog.length>0&&t.filteredLogs.length>0?e("button",{staticClass:"log-copy-button ml-2",attrs:{type:"button"},on:{click:t.unselectText}},[e("b-icon",{attrs:{icon:"exclude"}}),t._v(" Unselect ")],1):t._e(),t.filteredLogs.length>0?e("button",{staticClass:"download-button",attrs:{disabled:t.downloadingLog,type:"button"},on:{click:function(e){return t.downloadApplicationLog(t.selectedApp?`${t.selectedApp}_${t.appSpecification.name}`:t.appSpecification.name)}}},[e("b-icon",{class:{"spin-icon-l":t.downloadingLog},attrs:{icon:t.downloadingLog?"arrow-repeat":"download"}}),t._v(" Download ")],1):t._e(),t.filteredLogs.length>0?e("div",t._l(t.filteredLogs,(function(s){return e("div",{directives:[{name:"sane-html",rawName:"v-sane-html",value:t.formatLog(s),expression:"formatLog(log)"}],key:t.extractTimestamp(s),staticClass:"log-entry",class:{selected:t.selectedLog.includes(t.extractTimestamp(s))},on:{click:function(e){t.isLineByLineMode&&t.toggleLogSelection(s)}}})})),0):""!==t.filterKeyword.trim()?e("div",{staticClass:"no-matches"},[t._v(" No log line matching the '"+t._s(t.filterKeyword)+"' filter. ")]):t.noLogs?e("div",{staticClass:"no-matches"},[t._v(" No log records found. ")]):t._e()])],1)]),e("b-tab",{attrs:{title:"Control"}},[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" General options to control running status of App. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-app",variant:"success","aria-label":"Start App"}},[t._v(" Start App ")]),e("confirm-dialog",{attrs:{target:"start-app","confirm-button":"Start App"},on:{confirm:function(e){return t.startApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-app",variant:"success","aria-label":"Stop App"}},[t._v(" Stop App ")]),e("confirm-dialog",{attrs:{target:"stop-app","confirm-button":"Stop App"},on:{confirm:function(e){return t.stopApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"restart-app",variant:"success","aria-label":"Restart App"}},[t._v(" Restart App ")]),e("confirm-dialog",{attrs:{target:"restart-app","confirm-button":"Restart App"},on:{confirm:function(e){return t.restartApp(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" The Pause command suspends all processes in the specified App. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"pause-app",variant:"success","aria-label":"Pause App"}},[t._v(" Pause App ")]),e("confirm-dialog",{attrs:{target:"pause-app","confirm-button":"Pause App"},on:{confirm:function(e){return t.pauseApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"unpause-app",variant:"success","aria-label":"Unpause App"}},[t._v(" Unpause App ")]),e("confirm-dialog",{attrs:{target:"unpause-app","confirm-button":"Unpause App"},on:{confirm:function(e){return t.unpauseApp(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Monitoring"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Controls Application Monitoring ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-monitoring",variant:"success","aria-label":"Start Monitoring"}},[t._v(" Start Monitoring ")]),e("confirm-dialog",{attrs:{target:"start-monitoring","confirm-button":"Start Monitoring"},on:{confirm:function(e){return t.startMonitoring(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-monitoring",variant:"success","aria-label":"Stop Monitoring"}},[t._v(" Stop Monitoring ")]),e("confirm-dialog",{attrs:{target:"stop-monitoring","confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(t.appName,!1)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-monitoring-delete",variant:"success","aria-label":"Stop Monitoring and Delete Monitored Data"}},[t._v(" Stop Monitoring and Delete Monitored Data ")]),e("confirm-dialog",{attrs:{target:"stop-monitoring-delete","confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(t.appName,!0)}}})],1)],1)],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Redeploy"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Reinstall your application from the docker repo. Soft option, keeps data on the instance, Hard option deletes everything and gets installed like a fresh install. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-soft",variant:"success","aria-label":"Soft Redeploy App"}},[t._v(" Soft Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-soft","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppSoft(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-hard",variant:"success","aria-label":"Hard Redeploy App"}},[t._v(" Hard Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-hard","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppHard(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Remove"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Stops, uninstalls and removes all App data from this Flux node. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"remove-app",variant:"success","aria-label":"Remove App"}},[t._v(" Remove App ")]),e("confirm-dialog",{attrs:{target:"remove-app","confirm-button":"Remove App"},on:{confirm:function(e){return t.removeApp(t.appName)}}})],1)],1)],1)],1)],1),t.windowWidth>860?e("b-tab",{attrs:{title:"Component Control",disabled:!t.isApplicationInstalledLocally||t.appSpecification.version<=3}},t._l(t.appSpecification.compose,(function(s,i){return e("b-card",{key:i},[e("h4",[t._v(t._s(s.name)+" Component")]),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" General options to control running status of Component. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`start-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Start Component"}},[t._v(" Start Component ")]),e("confirm-dialog",{attrs:{target:`start-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Start Component"},on:{confirm:function(e){return t.startApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Component"}},[t._v(" Stop Component ")]),e("confirm-dialog",{attrs:{target:`stop-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop App"},on:{confirm:function(e){return t.stopApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`restart-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Restart Component"}},[t._v(" Restart Component ")]),e("confirm-dialog",{attrs:{target:`restart-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Restart Component"},on:{confirm:function(e){return t.restartApp(`${s.name}_${t.appSpecification.name}`)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" The Pause command suspends all processes in the specified Component. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`pause-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Pause Component"}},[t._v(" Pause Component ")]),e("confirm-dialog",{attrs:{target:`pause-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Pause Component"},on:{confirm:function(e){return t.pauseApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`unpause-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Unpause Component"}},[t._v(" Unpause Component ")]),e("confirm-dialog",{attrs:{target:`unpause-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Unpause Component"},on:{confirm:function(e){return t.unpauseApp(`${s.name}_${t.appSpecification.name}`)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Monitoring"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Controls Component Monitoring ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`start-monitoring-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Start Monitoring"}},[t._v(" Start Monitoring ")]),e("confirm-dialog",{attrs:{target:`start-monitoring-${s.name}_${t.appSpecification.name}`,"confirm-button":"Start Monitoring"},on:{confirm:function(e){return t.startMonitoring(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-monitoring-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Monitoring"}},[t._v(" Stop Monitoring ")]),e("confirm-dialog",{attrs:{target:`stop-monitoring-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(`${s.name}_${t.appSpecification.name}`,!1)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-monitoring-delete-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Monitoring and Delete Monitored Data"}},[t._v(" Stop Monitoring and Delete Monitored Data ")]),e("confirm-dialog",{attrs:{target:`stop-monitoring-delete-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(`${s.name}_${t.appSpecification.name}`,!0)}}})],1)],1)],1)],1)],1)})),1):t._e(),e("b-tab",{attrs:{title:"Backup/Restore",disabled:!t.appSpecification?.compose}},[e("div",[e("b-card",{attrs:{"no-body":""}},[e("b-tabs",{attrs:{pills:"",card:""}},[e("b-tab",{staticStyle:{margin:"0","padding-top":"0px"},attrs:{title:"Backup"}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"back"}}),t._v(" Manual Backup Container Data ")],1)]),e("div",{staticClass:"mb-2"},[e("b-form-group",[e("b-form-tags",{attrs:{id:"tags-component-select",size:"lg","add-on-change":"","no-outer-focus":""},scopedSlots:t._u([{key:"default",fn:function({tags:s,inputAttrs:i,inputHandlers:a,disabled:o,removeTag:n}){return[s.length>0?e("ul",{staticClass:"list-inline d-inline-block mb-2"},t._l(s,(function(s){return e("li",{key:s,staticClass:"list-inline-item"},[e("b-form-tag",{attrs:{title:s,disabled:o,variant:"primary"},on:{remove:function(t){return n(s)}}},[t._v(" "+t._s(s)+" ")])],1)})),0):t._e(),e("b-form-select",t._g(t._b({attrs:{disabled:o||0===t.componentAvailableOptions?.length||1===t.components?.length,options:t.componentAvailableOptions},scopedSlots:t._u([{key:"first",fn:function(){return[e("option",{attrs:{disabled:"",value:""}},[t._v(" Select the application component(s) you would like to backup ")])]},proxy:!0}],null,!0)},"b-form-select",i,!1),a))]}}]),model:{value:t.selectedBackupComponents,callback:function(e){t.selectedBackupComponents=e},expression:"selectedBackupComponents"}})],1)],1),t.components?.length>1?e("b-button",{staticClass:"mr-1",attrs:{variant:"outline-primary"},on:{click:t.addAllTags}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-square"}}),t._v(" Select all ")],1):t._e(),e("b-button",{staticStyle:{"white-space":"nowrap"},attrs:{disabled:0===t.selectedBackupComponents.length||!0===t.backupProgress,variant:"outline-primary"},on:{click:function(e){return t.createBackup(t.appName,t.selectedBackupComponents)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"back"}}),t._v(" Create backup ")],1),e("br"),e("div",{staticClass:"mt-1"},[!0===t.backupProgress?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.backupProgress?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.tarProgress)+" ")],1):t._e()]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()]),t.backupList?.length>0&&!1===t.backupProgress?e("div",[e("div",{staticClass:"mb-1 text-right"},[e("b-dropdown",{staticClass:"mr-1",staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{text:"Select",variant:"outline-primary"},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-square"}}),t._v(" Select ")]},proxy:!0}],null,!1,1960591975)},[e("b-dropdown-item",{attrs:{disabled:t.backupToUpload?.length===t.backupList?.length},on:{click:t.selectAllRows}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-circle"}}),t._v(" Select all ")],1),e("b-dropdown-item",{attrs:{disabled:0===t.backupToUpload?.length},on:{click:t.clearSelected}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"square"}}),t._v(" Select none ")],1)],1),e("b-dropdown",{staticClass:"mr-1",staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{text:"Download",variant:"outline-primary"},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"download"}}),t._v(" Download ")]},proxy:!0}],null,!1,2545655511)},[e("b-dropdown-item",{attrs:{disabled:0===t.backupToUpload?.length},on:{click:function(e){return t.downloadAllBackupFiles(t.backupToUpload)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"download"}}),t._v(" Download selected ")],1),e("b-dropdown-item",{on:{click:function(e){return t.downloadAllBackupFiles(t.backupList)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"download"}}),t._v(" Download all ")],1)],1),e("b-button",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteLocalBackup(null,t.backupList)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"trash"}}),t._v(" Remove all ")],1)],1),t.backupList?.length>0?e("b-table",{ref:"selectableTable",staticClass:"mb-0",attrs:{items:t.backupList,fields:[...t.localBackupTableFields,{key:"actions",label:"Actions",thStyle:{width:"5%"},class:"text-center"}],stacked:"md","show-empty":"",bordered:"","select-mode":"multi",selectable:"","selected-variant":"outline-dark",hover:"",small:""},on:{"row-selected":t.onRowSelected},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6"}},[e("b",[t._v(" List of available backups on the local machine (backups are automatically deleted 24 hours after creation) ")])])],1)]},proxy:!0},{key:"cell(create)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.create))+" ")]}},{key:"cell(expire)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.create,!0))+" ")]}},{key:"cell(isActive)",fn:function({rowSelected:s}){return[s?[e("span",{staticStyle:{color:"green"},attrs:{"aria-hidden":"true"}},[e("b-icon",{attrs:{icon:"check-square-fill",scale:"1",variant:"success"}})],1),e("span",{staticClass:"sr-only"},[t._v("Selected")])]:[e("span",{staticStyle:{color:"white"},attrs:{"aria-hidden":"true"}},[e("b-icon",{attrs:{icon:"square",scale:"1",variant:"secondary"}})],1),e("span",{staticClass:"sr-only"},[t._v("Not selected")])]]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove file",expression:"'Remove file'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center mr-1 custom-button",attrs:{id:`delete-local-backup-${s.item.component}_${t.backupList[s.index].create}`,variant:"outline-danger"}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1),e("confirm-dialog",{attrs:{target:`delete-local-backup-${s.item.component}_${t.backupList[s.index].create}`,"confirm-button":"Remove File"},on:{confirm:function(e){return t.deleteLocalBackup(s.item.component,t.backupList,t.backupList[s.index].file)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Download file",expression:"'Download file'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center custom-button",attrs:{variant:"outline-primary"},on:{click:function(e){return t.downloadAllBackupFiles([{component:s.item.component,file:t.backupList[s.index].file}])}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"1",icon:"cloud-arrow-down"}})],1)],1)]}}],null,!1,1174065662)}):t._e(),e("span",{staticStyle:{"font-size":"0.9rem"}},[t._v("Select application component(s) you would like to upload")]),t.showProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgress.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[t.allDownloadsCompleted()?e("span",[t._v(" Download Completed ")]):e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" Downloading... ")],1)]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e(),t.backupList?.length>0?e("div",{staticClass:"mt-2"},[e("div",{staticClass:"mb-2 mt-3",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{attrs:{icon:"gear-fill"}}),t._v(" Choose your storage method")],1)]),e("b-form-radio-group",{attrs:{id:"btn-radios-2",options:t.storageMethod,"button-variant":"outline-primary",name:"radio-btn-outline",disable:t.storageMethod,buttons:""},model:{value:t.selectedStorageMethod,callback:function(e){t.selectedStorageMethod=e},expression:"selectedStorageMethod"}}),"flux"===t.selectedStorageMethod?e("div",[!0===t.sigInPrivilage?e("div",{staticClass:"mb-2"},[e("ul",{staticClass:"mt-2",staticStyle:{"font-size":"0.9rem"}},[e("li",[t._v("Free FluxDrive backups! Up to 10GB total to use per user")]),e("li",[t._v("FluxDrive backups can be downloaded on Restore page")])]),e("b-button",{staticClass:"mt-2",attrs:{disabled:!0===t.uploadProgress||0===t.backupToUpload.length,block:"",variant:"outline-primary"},on:{click:function(e){return t.uploadToFluxDrive()}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"cloud-arrow-up"}}),t._v(" Upload Selected Components To FluxDrive ")],1)],1):t._e(),!1===t.sigInPrivilage?e("b-button",{staticClass:"mt-1 w-100",attrs:{variant:"outline-primary"},on:{click:t.removeAllBackup}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.5",icon:"cloud-arrow-up"}}),t._v(" Export ")],1):t._e()],1):t._e(),"google"===t.selectedStorageMethod?e("div",[e("b-button",{staticClass:"mt-1 w-100",attrs:{variant:"outline-primary"},on:{click:t.removeAllBackup}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.5",icon:"cloud-arrow-up"}}),t._v(" Export ")],1)],1):t._e(),t.showUploadProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgress.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.uploadStatus)+" ")],1)]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e(),t.showFluxDriveProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgressFD.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.fluxDriveUploadStatus)+" ")],1)]),t._l(t.computedFileProgressFD,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e()],1):t._e()],1):t._e()],1),e("b-tab",{staticStyle:{margin:"0","padding-top":"0px"},attrs:{title:"Restore"},on:{click:t.handleRadioClick}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"cloud-download"}}),t._v(" Select restore method ")],1)]),e("b-form-group",{staticClass:"mb-2"},[e("b-row",[e("b-col",{staticClass:"d-flex align-items-center",staticStyle:{height:"38px"}},[e("b-form-radio-group",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{id:"btn-radios-2",options:t.restoreOptions,disable:t.restoreOptions,"button-variant":"outline-primary",name:"radio-btn-outline",buttons:""},on:{change:t.handleRadioClick},model:{value:t.selectedRestoreOption,callback:function(e){t.selectedRestoreOption=e},expression:"selectedRestoreOption"}})],1),e("b-col",{staticClass:"text-right",staticStyle:{height:"38px"}},["FluxDrive"===t.selectedRestoreOption?e("b-button",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{variant:"outline-success"},on:{click:t.getFluxDriveBackupList}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"arrow-repeat"}}),t._v("Refresh ")],1):t._e()],1)],1)],1),"FluxDrive"===t.selectedRestoreOption?e("div",[!0===t.sigInPrivilage?e("div",[e("div",[e("b-input-group",{staticClass:"mb-2"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"funnel-fill"}})],1),e("b-form-select",{attrs:{options:t.restoreComponents},model:{value:t.nestedTableFilter,callback:function(e){t.nestedTableFilter=e},expression:"nestedTableFilter"}})],1)],1),e("b-table",{key:t.tableBackup,attrs:{items:t.checkpoints,fields:t.backupTableFields,stacked:"md","show-empty":"",bordered:"",small:"","empty-text":"No records available. Please export your backup to FluxDrive.","sort-by":t.sortbackupTableKey,"sort-desc":t.sortbackupTableDesc,"tbody-tr-class":t.rowClassFluxDriveBackups},on:{"update:sortBy":function(e){t.sortbackupTableKey=e},"update:sort-by":function(e){t.sortbackupTableKey=e},"update:sortDesc":function(e){t.sortbackupTableDesc=e},"update:sort-desc":function(e){t.sortbackupTableDesc=e},filtered:t.onFilteredBackup},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-2",attrs:{scale:"1.2",icon:"back"}}),e("b",[t._v("Backups Inventory")])],1)],1)]},proxy:!0},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove Backup(s)",expression:"'Remove Backup(s)'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center mr-1",staticStyle:{width:"15px",height:"25px"},attrs:{id:`remove-checkpoint-${s.item.timestamp}`,variant:"outline-danger"}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1),e("confirm-dialog",{attrs:{target:`remove-checkpoint-${s.item.timestamp}`,"confirm-button":"Remove Backup(s)"},on:{confirm:function(e){return t.deleteRestoreBackup(s.item.component,t.checkpoints,s.item.timestamp)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Add all to Restore List",expression:"'Add all to Restore List'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-primary"},on:{click:function(e){return t.addAllBackupComponents(s.item.timestamp)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"save"}})],1)],1)]}},{key:"cell(timestamp)",fn:function(s){return[e("kbd",{staticClass:"alert-info no-wrap"},[e("b-icon",{attrs:{scale:"1.2",icon:"hdd"}}),t._v("  backup_"+t._s(s.item.timestamp))],1)]}},{key:"cell(time)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.timestamp))+" ")]}},{key:"row-details",fn:function(s){return[e("b-table",{key:t.tableBackup,staticClass:"backups-table",attrs:{stacked:"md","show-empty":"",bordered:"",hover:"",small:"",items:s.item.components.filter((e=>Object.values(e).some((e=>String(e).toLowerCase().includes(t.nestedTableFilter.toLowerCase()))))),fields:t.componentsTable1},scopedSlots:t._u([{key:"cell(file_url)",fn:function(s){return[e("div",{staticClass:"ellipsis-wrapper"},[e("b-link",{attrs:{href:s.item.file_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(" "+t._s(s.item.file_url)+" ")])],1)]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(i){return[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Add to Restore List",expression:"'Add to Restore List'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{margin:"auto",width:"95px",height:"25px",display:"flex"},attrs:{variant:"outline-primary"},on:{click:function(e){return t.addComponent(i.item,s.item.timestamp)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.7",icon:"plus-lg"}})],1)]}}],null,!0)})]}}],null,!1,1747254148)}),t.newComponents.length>0?e("b-table",{staticClass:"mt-1 backups-table",attrs:{items:t.newComponents,fields:[...t.newComponentsTableFields,{key:"actions",label:"Actions",thStyle:{width:"20%"},class:"text-center"}],stacked:"md","show-empty":"",bordered:"",small:""},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(timestamp)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.timestamp))+" ")]}},{key:"cell(file_url)",fn:function(s){return[e("div",{staticClass:"ellipsis-wrapper"},[e("b-link",{attrs:{href:s.item.file_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(" "+t._s(s.item.file_url)+" ")])],1)]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"95px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.newComponents)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"3",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-2",attrs:{icon:"hdd",scale:"1.4"}}),t._v(" "+t._s(t.addAndConvertFileSizes(t.totalArchiveFileSize(t.newComponents)))+" ")],1)],1)]},proxy:!0}],null,!1,3243908673)}):t._e(),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopFluxDrive,callback:function(e){t.showTopFluxDrive=e},expression:"showTopFluxDrive"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.newComponents?.length>0&&!t.restoringFromFluxDrive?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.restoreFromFluxDrive(t.newComponents)}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.2"}}),t._v("Restore ")],1):t._e(),!0===t.restoringFromFluxDrive?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.restoringFromFluxDrive?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromFluxDriveStatus)+" ")],1):t._e()])]):t._e()],1):t._e()]):t._e(),"Upload File"===t.selectedRestoreOption?e("div",[e("div",[e("b-input-group",{staticClass:"mb-0"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"folder-plus"}})],1),e("b-form-select",{staticStyle:{"border-radius":"0"},attrs:{options:t.components,disabled:t.remoteFileComponents},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:null,disabled:""}},[t._v(" - Select component - ")])]},proxy:!0}],null,!1,2230972607),model:{value:t.restoreRemoteFile,callback:function(e){t.restoreRemoteFile=e},expression:"restoreRemoteFile"}}),e("b-input-group-append",[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose file to upload",expression:"'Choose file to upload'",modifiers:{hover:!0,top:!0}}],attrs:{disabled:null===t.restoreRemoteFile,text:"Button",size:"sm",variant:"outline-primary"},on:{click:t.addRemoteFile}},[e("b-icon",{attrs:{icon:"cloud-arrow-up",scale:"1.5"}})],1)],1)],1)],1),e("div",[e("input",{ref:"fileselector",staticClass:"flux-share-upload-input",staticStyle:{display:"none"},attrs:{id:"file-selector",type:"file"},on:{input:t.handleFiles}})]),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopUpload,callback:function(e){t.showTopUpload=e},expression:"showTopUpload"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.files?.length>0?e("div",{staticClass:"d-flex justify-content-between mt-2"},[e("b-table",{staticClass:"b-table",attrs:{small:"",bordered:"",size:"sm",items:t.files,fields:t.computedRestoreUploadFileFields},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(file)",fn:function(s){return[e("div",{staticClass:"table-cell"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(file_size)",fn:function(s){return[e("div",{staticClass:"table-cell no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.value))+" ")])]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.files,s.item.file,"upload")}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"2",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"hdd",scale:"1.4"}}),t._v(t._s(t.addAndConvertFileSizes(t.files))+" ")],1)],1)]},proxy:!0}],null,!1,1264712967)})],1):t._e(),e("div",{staticClass:"mt-2"},[t.restoreFromUpload?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px","text-align":"center"}},[t.restoreFromUpload?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromUploadStatus)+" ")],1):t._e()]),t._l(t.files,(function(s){return s.uploading?e("div",{key:s.file_name,staticClass:"upload-item mb-1"},[e("div",{class:s.uploading?"":"hidden"},[t._v(" "+t._s(s.file_name)+" ")]),e("b-progress",{attrs:{max:"100",height:"15px"}},[e("b-progress-bar",{class:s.uploading?"":"hidden",attrs:{value:s.progress,label:`${s.progress.toFixed(2)}%`}})],1)],1):t._e()}))],2):t._e()]),t.files?.length>0&&""===t.restoreFromUploadStatus?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.startUpload()}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.1"}}),t._v("Restore ")],1):t._e()],1):t._e(),"Remote URL"===t.selectedRestoreOption?e("div",[e("div",[e("b-input-group",{staticClass:"mb-0"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"globe"}})],1),e("b-form-input",{attrs:{state:t.urlValidationState,type:"url",placeholder:"Enter the URL for your remote backup archive",required:""},model:{value:t.restoreRemoteUrl,callback:function(e){t.restoreRemoteUrl=e},expression:"restoreRemoteUrl"}}),e("b-input-group-append",[e("b-form-select",{staticStyle:{"border-radius":"0"},attrs:{options:t.components,disabled:t.remoteUrlComponents},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:null,disabled:""}},[t._v(" - Select component - ")])]},proxy:!0}],null,!1,2230972607),model:{value:t.restoreRemoteUrlComponent,callback:function(e){t.restoreRemoteUrlComponent=e},expression:"restoreRemoteUrlComponent"}})],1),e("b-input-group-append",[e("b-button",{attrs:{disabled:null===t.restoreRemoteUrlComponent,size:"sm",variant:"outline-primary"},on:{click:function(e){return t.addRemoteUrlItem(t.appName,t.restoreRemoteUrlComponent)}}},[e("b-icon",{attrs:{scale:"0.8",icon:"plus-lg"}})],1)],1)],1),e("b-form-invalid-feedback",{staticClass:"mb-2",attrs:{state:t.urlValidationState}},[t._v(" "+t._s(t.urlValidationMessage)+" ")])],1),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopRemote,callback:function(e){t.showTopRemote=e},expression:"showTopRemote"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.restoreRemoteUrlItems?.length>0?e("div",{staticClass:"d-flex justify-content-between mt-2"},[e("b-table",{staticClass:"b-table",attrs:{small:"",bordered:"",size:"sm",items:t.restoreRemoteUrlItems,fields:t.computedRestoreRemoteURLFields},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(url)",fn:function(s){return[e("div",{staticClass:"table-cell no"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(component)",fn:function(s){return[e("div",{staticClass:"table-cell"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(file_size)",fn:function(s){return[e("div",{staticClass:"table-cell no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.value))+" ")])]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.restoreRemoteUrlItems)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"2",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"hdd",scale:"1.4"}}),t._v(t._s(t.addAndConvertFileSizes(t.restoreRemoteUrlItems))+" ")],1)],1)]},proxy:!0}],null,!1,2584524300)})],1):t._e(),e("div",{staticClass:"mt-2"},[!0===t.downloadingFromUrl?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.downloadingFromUrl?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromRemoteURLStatus)+" ")],1):t._e()])]):t._e()]),t.restoreRemoteUrlItems?.length>0&&""===t.restoreFromRemoteURLStatus?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.restoreFromRemoteFile(t.appName)}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.1"}}),t._v("Restore ")],1):t._e()],1):t._e()],1)],1)],1)],1)]),e("b-tab",{attrs:{title:"Interactive Terminal"}},[e("div",{staticClass:"text-center"},[e("div",[e("b-card-group",{attrs:{deck:""}},[e("b-card",{attrs:{"header-tag":"header"}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","text-align":"left","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"terminal"}}),t._v(" Browser-based Interactive Terminal ")],1)]),e("div",{staticClass:"d-flex align-items-center"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.appSpecification?.compose,expression:"appSpecification?.compose"}],staticClass:"mr-4"},[e("b-form-select",{attrs:{options:null,disabled:!!t.isVisible||t.isComposeSingle},model:{value:t.selectedApp,callback:function(e){t.selectedApp=e},expression:"selectedApp"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2)],1),e("div",{staticClass:"mr-4"},[e("b-form-select",{attrs:{options:t.options,disabled:!!t.isVisible},on:{input:t.onSelectChangeCmd},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{option:null,value:null,disabled:""}},[t._v(" -- Please select command -- ")])]},proxy:!0}]),model:{value:t.selectedCmd,callback:function(e){t.selectedCmd=e},expression:"selectedCmd"}})],1),t.isVisible||t.isConnecting?t._e():e("b-button",{staticClass:"col-2 no-wrap-limit",attrs:{href:"#",variant:"outline-primary"},on:{click:function(e){return t.connectTerminal(t.selectedApp?`${t.selectedApp}_${t.appSpecification.name}`:t.appSpecification.name)}}},[t._v(" Connect ")]),t.isVisible?e("b-button",{staticClass:"col-2 no-wrap-limit",attrs:{variant:"outline-danger"},on:{click:t.disconnectTerminal}},[t._v(" Disconnect ")]):t._e(),t.isConnecting?e("b-button",{staticClass:"col-2 align-items-center justify-content-center",attrs:{variant:"outline-primary",disabled:""}},[e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner",{staticClass:"mr-1",attrs:{small:""}}),t._v(" Connecting... ")],1)]):t._e(),e("div",{staticClass:"ml-auto mt-1"},[e("div",{staticClass:"ml-auto d-flex"},[e("b-form-checkbox",{staticClass:"ml-4 mr-1 d-flex align-items-center justify-content-center",attrs:{switch:"",disabled:!!t.isVisible},on:{input:t.onSelectChangeUser},model:{value:t.enableUser,callback:function(e){t.enableUser=e},expression:"enableUser"}},[e("div",{staticClass:"d-flex",staticStyle:{"font-size":"14px"}},[t._v(" User ")])]),e("b-form-checkbox",{staticClass:"ml-2 d-flex align-items-center justify-content-center",attrs:{switch:"",disabled:!!t.isVisible},on:{input:t.onSelectChangeEnv},model:{value:t.enableEnvironment,callback:function(e){t.enableEnvironment=e},expression:"enableEnvironment"}},[e("div",{staticClass:"d-flex",staticStyle:{"font-size":"14px"}},[t._v(" Environment ")])])],1)])],1),"Custom"!==t.selectedCmd||t.isVisible?t._e():e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter custom command (string)"},model:{value:t.customValue,callback:function(e){t.customValue=e},expression:"customValue"}})],1),t.enableUser&&!t.isVisible?e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter user. Format is one of: user, user:group, uid, or uid:gid."},model:{value:t.userInputValue,callback:function(e){t.userInputValue=e},expression:"userInputValue"}})],1):t._e(),t.enableEnvironment&&!t.isVisible?e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter environment parameters (string)"},model:{value:t.envInputValue,callback:function(e){t.envInputValue=e},expression:"envInputValue"}})],1):t._e(),e("div",{staticClass:"d-flex align-items-center mb-1"},[t.isVisible?e("div",{staticClass:"mt-2"},["Custom"!==t.selectedCmd?[e("span",{staticStyle:{"font-weight":"bold"}},[t._v("Exec into container")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedApp||t.appSpecification.name))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("using command")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedOptionText))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("as")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.userInputValue?t.userInputValue:"default user"))])]:[e("span",{staticStyle:{"font-weight":"bold"}},[t._v("Exec into container")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedApp||t.appSpecification.name))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("using custom command")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.customValue))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("as")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.userInputValue?t.userInputValue:"default user"))])]],2):t._e()])])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isVisible,expression:"isVisible"}],ref:"terminalElement",staticStyle:{"text-align":"left","border-radius":"6px",border:"1px solid #e1e4e8",overflow:"hidden"}})],1)]),e("div",[e("b-card",{staticClass:"mt-1"},[e("div",{staticClass:"mb-2",staticStyle:{display:"flex","justify-content":"space-between","align-items":"center",border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"15px 15px 10px 15px","text-align":"left","line-height":"0"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"server"}}),t._v(" Volume browser ")],1),t.selectedAppVolume||!t.appSpecification?.compose?e("div",{staticClass:"d-flex justify-content-center align-items-center no-wrap",staticStyle:{"margin-bottom":"7px"}},[e("b-progress",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.html.left",value:{id:"my-id",content:t.tooltipContent,title:t.tooltipContent},expression:"{\n id: 'my-id', content: tooltipContent, title: tooltipContent,\n }",modifiers:{hover:!0,html:!0,left:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"progress-container",attrs:{value:t.usagePercentage,max:100,variant:t.getProgressVariant()}},[e("b-progress-bar",{attrs:{value:t.usagePercentage}}),e("div",{staticClass:"progress-center-text"},[t._v(" "+t._s(t.usagePercentage.toFixed(2))+"% ")])],1)],1):t._e()]),e("div",{staticClass:"mr-4 d-flex",class:{"mb-2":t.appSpecification&&t.appSpecification.compose},staticStyle:{"max-width":"250px"}},[e("b-form-select",{directives:[{name:"show",rawName:"v-show",value:t.appSpecification?.compose,expression:"appSpecification?.compose"}],attrs:{options:null,disabled:t.isComposeSingle},on:{change:t.refreshFolderSwitch},model:{value:t.selectedAppVolume,callback:function(e){t.selectedAppVolume=e},expression:"selectedAppVolume"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2)],1),t.fileProgressVolume.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[t.allDownloadsCompletedVolume()?e("span",[t._v(" Download Completed ")]):e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" Downloading... ")],1)]),t._l(t.computedFileProgressVolume,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e(),e("div",[t.selectedAppVolume||!t.appSpecification?.compose?e("b-button-toolbar",{staticClass:"mb-1 w-100",attrs:{justify:""}},[e("div",{staticClass:"d-flex flex-row w-100"},[e("b-input-group",{staticClass:"w-100 mr-2"},[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{attrs:{icon:"house-fill"}})],1)],1),e("b-form-input",{staticClass:"text-secondary",staticStyle:{"font-weight":"bold","font-size":"1.0em"},model:{value:t.inputPathValue,callback:function(e){t.inputPathValue=e},expression:"inputPathValue"}})],1),e("b-button-group",{attrs:{size:"sm"}}),e("b-button-group",{staticClass:"ml-auto",attrs:{size:"sm"}},[e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){return t.refreshFolder()}}},[e("v-icon",{attrs:{name:"redo-alt"}})],1),e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){t.uploadFilesDialog=!0}}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){t.createDirectoryDialogVisible=!0}}},[e("v-icon",{attrs:{name:"folder-plus"}})],1),e("b-modal",{attrs:{title:"Create Folder",size:"lg",centered:"","ok-only":"","ok-title":"Create Folder","header-bg-variant":"primary"},on:{ok:function(e){return t.createFolder(t.newDirName)}},model:{value:t.createDirectoryDialogVisible,callback:function(e){t.createDirectoryDialogVisible=e},expression:"createDirectoryDialogVisible"}},[e("b-form-group",{attrs:{label:"Folder Name","label-for":"folderNameInput"}},[e("b-form-input",{attrs:{id:"folderNameInput",size:"lg",placeholder:"New Folder Name"},model:{value:t.newDirName,callback:function(e){t.newDirName=e},expression:"newDirName"}})],1)],1),e("b-modal",{attrs:{title:"Upload Files",size:"lg","header-bg-variant":"primary",centered:"","hide-footer":""},on:{close:function(e){return t.refreshFolder()}},model:{value:t.uploadFilesDialog,callback:function(e){t.uploadFilesDialog=e},expression:"uploadFilesDialog"}},[e("file-upload",{attrs:{"upload-folder":t.getUploadFolder(),headers:t.zelidHeader},on:{complete:t.refreshFolder}})],1)],1)],1)]):t._e(),t.selectedAppVolume||!t.appSpecification?.compose?e("b-table",{staticClass:"fluxshare-table",attrs:{hover:"",responsive:"",small:"",outlined:"",size:"sm",items:t.folderContentFilter,fields:t.fields,busy:t.loadingFolder,"sort-compare":t.sort,"sort-by":"name","show-empty":"","empty-text":"Directory is empty."},scopedSlots:t._u([{key:"table-busy",fn:function(){return[e("div",{staticClass:"text-center text-danger my-2"},[e("b-spinner",{staticClass:"align-middle mx-2"}),e("strong",[t._v("Loading...")])],1)]},proxy:!0},{key:"head(name)",fn:function(e){return[t._v(" "+t._s(e.label.toUpperCase())+" ")]}},{key:"cell(name)",fn:function(s){return[s.item.symLink?e("div",[e("b-link",{on:{click:function(e){return t.changeFolder(s.item.name)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"folder-symlink"}}),t._v(" "+t._s(s.item.name)+" ")],1)],1):t._e(),s.item.isDirectory?e("div",[e("b-link",{on:{click:function(e){return t.changeFolder(s.item.name)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"folder"}}),t._v(" "+t._s(s.item.name)+" ")],1)],1):e("div",[s.item.symLink?t._e():e("div",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"file-earmark"}}),t._v(" "+t._s(s.item.name)+" ")],1)])]}},{key:"cell(modifiedAt)",fn:function(s){return[s.item.isUpButton?t._e():e("div",{staticClass:"no-wrap"},[t._v(" "+t._s(new Date(s.item.modifiedAt).toLocaleString("en-GB",t.timeoptions))+" ")])]}},{key:"cell(type)",fn:function(s){return[s.item.isUpButton?t._e():e("div",[s.item.isDirectory?e("div",[t._v(" Folder ")]):s.item.isFile||s.item.isSymbolicLink?e("div",[t._v(" File ")]):e("div",[t._v(" Other ")])])]}},{key:"cell(size)",fn:function(s){return[s.item.size>0&&!s.item.isUpButton?e("div",{staticClass:"no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.item.size))+" ")]):t._e()]}},{key:"cell(actions)",fn:function(s){return[s.item.isUpButton?t._e():e("b-button-group",{attrs:{size:"sm"}},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:s.item.isFile?"Download":"Download zip of folder",expression:"data.item.isFile ? 'Download' : 'Download zip of folder'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`download-${s.item.name}`,variant:"outline-secondary"}},[e("v-icon",{attrs:{name:s.item.isFile?"file-download":"file-archive"}})],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Rename",expression:"'Rename'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`rename-${s.item.name}`,variant:"outline-secondary"},on:{click:function(e){return t.rename(s.item.name)}}},[e("v-icon",{attrs:{name:"edit"}})],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Delete",expression:"'Delete'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`delete-${s.item.name}`,variant:"outline-secondary"}},[e("v-icon",{attrs:{name:"trash-alt"}})],1),e("confirm-dialog",{attrs:{target:`delete-${s.item.name}`,"confirm-button":s.item.isFile?"Delete File":"Delete Folder"},on:{confirm:function(e){return t.deleteFile(s.item.name)}}})],1),e("confirm-dialog",{attrs:{target:`download-${s.item.name}`,"confirm-button":s.item.isFile?"Download File":"Download Folder"},on:{confirm:function(e){s.item.isFile?t.download(s.item.name):t.download(s.item.name,!0,s.item.size)}}}),e("b-modal",{attrs:{title:"Rename",size:"lg",centered:"","ok-only":"","ok-title":"Rename"},on:{ok:function(e){return t.confirmRename()}},model:{value:t.renameDialogVisible,callback:function(e){t.renameDialogVisible=e},expression:"renameDialogVisible"}},[e("b-form-group",{attrs:{label:"Name","label-for":"nameInput"}},[e("b-form-input",{attrs:{id:"nameInput",size:"lg",placeholder:"Name"},model:{value:t.newName,callback:function(e){t.newName=e},expression:"newName"}})],1)],1)]}}],null,!1,3040013154)}):t._e()],1)])],1)]),t.windowWidth>860?e("b-tab",{attrs:{title:"Global App Management",disabled:""}}):t._e(),e("b-tab",{attrs:{title:"Global Control"}},[t.globalZelidAuthorized?e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" "+t._s(t.isAppOwner?"General options to control all instances of your application":"General options to control instances of selected application running on all nodes that you own")+" ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-app-global",variant:"success","aria-label":"Start App"}},[t._v(" Start App ")]),e("confirm-dialog",{attrs:{target:"start-app-global","confirm-button":"Start App"},on:{confirm:function(e){return t.startAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-app-global",variant:"success","aria-label":"Stop App"}},[t._v(" Stop App ")]),e("confirm-dialog",{attrs:{target:"stop-app-global","confirm-button":"Stop App"},on:{confirm:function(e){return t.stopAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"restart-app-global",variant:"success","aria-label":"Restart App"}},[t._v(" Restart App ")]),e("confirm-dialog",{attrs:{target:"restart-app-global","confirm-button":"Restart App"},on:{confirm:function(e){return t.restartAppGlobally(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" "+t._s(t.isAppOwner?"The Pause command suspends all processes of all instances of your app":"The Pause command suspends all processes of selected application on all of nodes that you own")+" ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"pause-app-global",variant:"success","aria-label":"Pause App"}},[t._v(" Pause App ")]),e("confirm-dialog",{attrs:{target:"pause-app-global","confirm-button":"Pause App"},on:{confirm:function(e){return t.pauseAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"unpause-app-global",variant:"success","aria-label":"Unpause App"}},[t._v(" Unpause App ")]),e("confirm-dialog",{attrs:{target:"unpause-app-global","confirm-button":"Unpause App"},on:{confirm:function(e){return t.unpauseAppGlobally(t.appName)}}})],1)],1)],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Redeploy"}},[e("b-card-text",{staticClass:"mb-2"},[e("div",{staticClass:"text-danger"},[t._v(" Warning: This will be executed on all your aplications instances accross the network ")]),t._v(" ' Reinstall your application from the docker repo. Soft option, keeps data on the instance, Hard option deletes everything and gets installed like a fresh install.' + ' If app uses syncthing it can takes up to 30 to be up and running.' ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-soft-global",variant:"success","aria-label":"Soft Redeploy App"}},[t._v(" Soft Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-soft-global","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppSoftGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-hard-global",variant:"success","aria-label":"Hard Redeploy App"}},[t._v(" Hard Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-hard-global","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppHardGlobally(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Fresh Start?"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" All your app instances are uninstalled and are after installed on new Flux Nodes. All app data will be delete. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"remove-app-global",variant:"success","aria-label":"Reinstall App"}},[t._v(" Get New Instances ")]),e("confirm-dialog",{attrs:{target:"remove-app-global","confirm-button":"Reinstall App"},on:{confirm:function(e){return t.removeAppGlobally(t.appName)}}})],1)],1)],1)],1)],1):e("div",[t._v(" Global management session expired. Please log out and back into FluxOS. ")])]),e("b-tab",{attrs:{title:"Running Instances"}},[t.masterSlaveApp?e("div",[e("b-card",{attrs:{title:"Primary/Standby App Information"}},[e("list-entry",{attrs:{title:"Current IP selected as Primary running your application",data:t.masterIP}})],1)],1):t._e(),e("b-row",[e("b-col",[e("div",{staticClass:"map_m"},[e("flux-map",{staticClass:"mb-0",attrs:{"show-all":!1,"filter-nodes":t.mapLocations}})],1)])],1),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.instances.pageOptions},model:{value:t.instances.perPage,callback:function(e){t.$set(t.instances,"perPage",e)},expression:"instances.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.instances.filter,callback:function(e){t.$set(t.instances,"filter",e)},expression:"instances.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.instances.filter},on:{click:function(e){t.instances.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{key:t.tableKey,staticClass:"app-instances-table",attrs:{striped:"",hover:"",outlined:"",responsive:"","sort-icon-left":"",busy:t.isBusy,"per-page":t.instances.perPage,"current-page":t.instances.currentPage,items:t.instances.data,fields:t.instances.fields,"sort-by":t.instances.sortBy,"sort-desc":t.instances.sortDesc,"sort-direction":t.instances.sortDirection,filter:t.instances.filter,"show-empty":"","empty-text":`No instances of ${t.appName}`},on:{"update:sortBy":function(e){return t.$set(t.instances,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.instances,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.instances,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.instances,"sortDesc",e)}},scopedSlots:t._u([{key:"table-busy",fn:function(){return[e("div",{staticClass:"text-center text-danger my-2"},[e("b-spinner",{staticClass:"align-middle mr-1"}),e("strong",[t._v("Loading geolocation...")])],1)]},proxy:!0},{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{staticClass:"ml-2",attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{staticClass:"ml-2",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[s.item.broadcastedAt?e("list-entry",{attrs:{title:"Broadcast",data:new Date(s.item.broadcastedAt).toLocaleString("en-GB",t.timeoptions.shortDate)}}):t._e(),s.item.expireAt?e("list-entry",{attrs:{title:"Expires",data:new Date(s.item.expireAt).toLocaleString("en-GB",t.timeoptions.shortDate)}}):t._e()],1)]}},{key:"cell(visit)",fn:function(s){return[e("div",{staticClass:"button-cell"},[e("b-button",{staticClass:"mr-1",attrs:{size:"sm",variant:"outline-secondary"},on:{click:function(e){t.openApp(s.item.name,s.item.ip.split(":")[0],t.getProperPort())}}},[t._v(" App ")]),e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"outline-primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" FluxNode ")])],1)]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.instances.totalRows,"per-page":t.instances.perPage,align:"center",size:"sm"},model:{value:t.instances.currentPage,callback:function(e){t.$set(t.instances,"currentPage",e)},expression:"instances.currentPage"}})],1)],1)],1),e("b-tab",{attrs:{title:"Update/Renew",disabled:!t.isAppOwner}},[t.fluxCommunication?t._e():e("div",{staticClass:"text-danger"},[t._v(" Warning: Connected Flux is not communicating properly with Flux network ")]),e("div",{staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"ui-checks-grid"}}),t._v(" Update Application Specifications / Extend subscription ")],1)]),e("div",{staticClass:"form-row form-group"},[e("b-input-group",{staticClass:"mt-2"},[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"plus-square"}}),t._v(" Update Specifications "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if you want to change your application specifications",expression:"'Select if you want to change your application specifications'",modifiers:{hover:!0,top:!0}}],staticClass:"ml-1",attrs:{name:"info-circle"}})],1)],1),e("b-input-group-append",{attrs:{"is-text":""}},[e("b-form-checkbox",{staticClass:"custom-control-primary",attrs:{id:"updateSpecifications",switch:""},model:{value:t.updateSpecifications,callback:function(e){t.updateSpecifications=e},expression:"updateSpecifications"}})],1)],1)],1),t.updateSpecifications?e("div",[t.appUpdateSpecification.version>=4?e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Details"}},[e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Version","label-for":"version"}},[e("b-form-input",{attrs:{id:"version",placeholder:t.appUpdateSpecification.version.toString(),readonly:""},model:{value:t.appUpdateSpecification.version,callback:function(e){t.$set(t.appUpdateSpecification,"version",e)},expression:"appUpdateSpecification.version"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Name","label-for":"name"}},[e("b-form-input",{attrs:{id:"name",placeholder:"Application Name",readonly:""},model:{value:t.appUpdateSpecification.name,callback:function(e){t.$set(t.appUpdateSpecification,"name",e)},expression:"appUpdateSpecification.name"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Desc.","label-for":"desc"}},[e("b-form-textarea",{attrs:{id:"desc",placeholder:"Description",rows:"3"},model:{value:t.appUpdateSpecification.description,callback:function(e){t.$set(t.appUpdateSpecification,"description",e)},expression:"appUpdateSpecification.description"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Owner","label-for":"owner"}},[e("b-form-input",{attrs:{id:"owner",placeholder:"Flux ID of Application Owner"},model:{value:t.appUpdateSpecification.owner,callback:function(e){t.$set(t.appUpdateSpecification,"owner",e)},expression:"appUpdateSpecification.owner"}})],1),t.appUpdateSpecification.version>=5&&!t.isPrivateApp?e("div",[e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-1 col-form-label"},[t._v(" Contacts "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of emails Contacts to get notifications ex. app about to expire, app spawns. Contacts are also PUBLIC information.",expression:"'Array of strings of emails Contacts to get notifications ex. app about to expire, app spawns. Contacts are also PUBLIC information.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"contacs"},model:{value:t.appUpdateSpecification.contacts,callback:function(e){t.$set(t.appUpdateSpecification,"contacts",e)},expression:"appUpdateSpecification.contacts"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Contacts to Flux Storage. Contacts will be replaced with a link to Flux Storage instead. This increases maximum allowed contacts while adding enhanced privacy - nobody except FluxOS Team maintaining notifications system has access to contacts.",expression:"\n 'Uploads Contacts to Flux Storage. Contacts will be replaced with a link to Flux Storage instead. This increases maximum allowed contacts while adding enhanced privacy - nobody except FluxOS Team maintaining notifications system has access to contacts.'\n ",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-contacts",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-contacts","confirm-button":"Upload Contacts",width:600},on:{confirm:function(e){return t.uploadContactsToFluxStorage()}}})],1)])]):t._e(),t.appUpdateSpecification.version>=5&&!t.isPrivateApp?e("div",[e("h4",[t._v("Allowed Geolocation")]),t._l(t.numberOfGeolocations,(function(s){return e("div",{key:`${s}pos`},[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Continent - ${s}`,"label-for":"Continent"}},[e("b-form-select",{attrs:{id:"Continent",options:t.continentsOptions(!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Continent -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedContinent${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedContinent${s}`,e)},expression:"allowedGeolocations[`selectedContinent${n}`]"}})],1),t.allowedGeolocations[`selectedContinent${s}`]&&"ALL"!==t.allowedGeolocations[`selectedContinent${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Country - ${s}`,"label-for":"Country"}},[e("b-form-select",{attrs:{id:"country",options:t.countriesOptions(t.allowedGeolocations[`selectedContinent${s}`],!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Country -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedCountry${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedCountry${s}`,e)},expression:"allowedGeolocations[`selectedCountry${n}`]"}})],1):t._e(),t.allowedGeolocations[`selectedContinent${s}`]&&"ALL"!==t.allowedGeolocations[`selectedContinent${s}`]&&t.allowedGeolocations[`selectedCountry${s}`]&&"ALL"!==t.allowedGeolocations[`selectedCountry${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Region - ${s}`,"label-for":"Region"}},[e("b-form-select",{attrs:{id:"Region",options:t.regionsOptions(t.allowedGeolocations[`selectedContinent${s}`],t.allowedGeolocations[`selectedCountry${s}`],!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Region -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedRegion${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedRegion${s}`,e)},expression:"allowedGeolocations[`selectedRegion${n}`]"}})],1):t._e()],1)})),e("div",{staticClass:"text-center"},[t.numberOfGeolocations>1?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Remove Allowed Geolocation Restriction",expression:"'Remove Allowed Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfGeolocations=t.numberOfGeolocations-1,t.adjustMaxInstancesPossible()}}},[e("v-icon",{attrs:{name:"minus"}})],1):t._e(),t.numberOfGeolocations<5?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Add Allowed Geolocation Restriction",expression:"'Add Allowed Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfGeolocations=t.numberOfGeolocations+1,t.adjustMaxInstancesPossible()}}},[e("v-icon",{attrs:{name:"plus"}})],1):t._e()],1)],2):t._e(),e("br"),e("br"),t.appUpdateSpecification.version>=5?e("div",[e("h4",[t._v("Forbidden Geolocation")]),t._l(t.numberOfNegativeGeolocations,(function(s){return e("div",{key:`${s}posB`},[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Continent - ${s}`,"label-for":"Continent"}},[e("b-form-select",{attrs:{id:"Continent",options:t.continentsOptions(!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Continent -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedContinent${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedContinent${s}`,e)},expression:"forbiddenGeolocations[`selectedContinent${n}`]"}})],1),t.forbiddenGeolocations[`selectedContinent${s}`]&&"NONE"!==t.forbiddenGeolocations[`selectedContinent${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Country - ${s}`,"label-for":"Country"}},[e("b-form-select",{attrs:{id:"country",options:t.countriesOptions(t.forbiddenGeolocations[`selectedContinent${s}`],!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Country -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedCountry${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedCountry${s}`,e)},expression:"forbiddenGeolocations[`selectedCountry${n}`]"}})],1):t._e(),t.forbiddenGeolocations[`selectedContinent${s}`]&&"NONE"!==t.forbiddenGeolocations[`selectedContinent${s}`]&&t.forbiddenGeolocations[`selectedCountry${s}`]&&"ALL"!==t.forbiddenGeolocations[`selectedCountry${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Region - ${s}`,"label-for":"Region"}},[e("b-form-select",{attrs:{id:"Region",options:t.regionsOptions(t.forbiddenGeolocations[`selectedContinent${s}`],t.forbiddenGeolocations[`selectedCountry${s}`],!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Region -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedRegion${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedRegion${s}`,e)},expression:"forbiddenGeolocations[`selectedRegion${n}`]"}})],1):t._e()],1)})),e("div",{staticClass:"text-center"},[t.numberOfNegativeGeolocations>1?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Remove Forbidden Geolocation Restriction",expression:"'Remove Forbidden Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfNegativeGeolocations=t.numberOfNegativeGeolocations-1}}},[e("v-icon",{attrs:{name:"minus"}})],1):t._e(),t.numberOfNegativeGeolocations<5?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Add Forbidden Geolocation Restriction",expression:"'Add Forbidden Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfNegativeGeolocations=t.numberOfNegativeGeolocations+1}}},[e("v-icon",{attrs:{name:"plus"}})],1):t._e()],1)],2):t._e(),e("br"),t.appUpdateSpecification.version>=3?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Instances","label-for":"instances"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.instances)+" ")]),e("b-form-input",{attrs:{id:"instances",placeholder:"Minimum number of application instances to be spawned",type:"range",min:"3",max:t.maxInstances,step:"1"},model:{value:t.appUpdateSpecification.instances,callback:function(e){t.$set(t.appUpdateSpecification,"instances",e)},expression:"appUpdateSpecification.instances"}})],1):t._e(),t.appUpdateSpecification.version>=7?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Static IP "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if your application strictly requires static IP address",expression:"'Select if your application strictly requires static IP address'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"staticip",switch:""},model:{value:t.appUpdateSpecification.staticip,callback:function(e){t.$set(t.appUpdateSpecification,"staticip",e)},expression:"appUpdateSpecification.staticip"}})],1)]):t._e(),e("br"),t.appUpdateSpecification.version>=7?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Enterprise Application "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if your application requires private image, secrets or if you want to target specific nodes on which application can run. Geolocation targetting is not possible in this case.",expression:"'Select if your application requires private image, secrets or if you want to target specific nodes on which application can run. Geolocation targetting is not possible in this case.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"enterpriseapp",switch:""},model:{value:t.isPrivateApp,callback:function(e){t.isPrivateApp=e},expression:"isPrivateApp"}})],1)]):t._e()],1)],1)],1),t._l(t.appUpdateSpecification.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",[e("b-card-title",[t._v(" General ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Name "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Name of Application Component",expression:"'Name of Application Component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Component name",readonly:""},model:{value:s.name,callback:function(e){t.$set(s,"name",e)},expression:"component.name"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Description "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Description of Application Component",expression:"'Description of Application Component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Component description"},model:{value:s.description,callback:function(e){t.$set(s,"description",e)},expression:"component.description"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Repository "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Docker image namespace/repository:tag for component",expression:"'Docker image namespace/repository:tag for component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Docker image namespace/repository:tag"},model:{value:s.repotag,callback:function(e){t.$set(s,"repotag",e)},expression:"component.repotag"}})],1)]),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Repository Authentication "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected enterprise nodes only.",expression:"'Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected enterprise nodes only.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repoauth-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Docker authentication username:apikey"},model:{value:s.repoauth,callback:function(e){t.$set(s,"repoauth",e)},expression:"component.repoauth"}})],1)]):t._e(),e("br"),e("b-card-title",[t._v(" Connectivity ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of Ports on which application will be available",expression:"'Array of Ports on which application will be available'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`ports-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.ports,callback:function(e){t.$set(s,"ports",e)},expression:"component.ports"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Domains "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains",expression:"'Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`domains-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.domains,callback:function(e){t.$set(s,"domains",e)},expression:"component.domains"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Container Ports - Array of ports which your container has",expression:"'Container Ports - Array of ports which your container has'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`containerPorts-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.containerPorts,callback:function(e){t.$set(s,"containerPorts",e)},expression:"component.containerPorts"}})],1)])],1)],1),e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",[e("b-card-title",[t._v(" Environment ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Environment "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Environmental Parameters",expression:"'Array of strings of Environmental Parameters'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`environmentParameters-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.environmentParameters,callback:function(e){t.$set(s,"environmentParameters",e)},expression:"component.environmentParameters"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Enviornment to Flux Storage. Environment parameters will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Env. parameters while adding basic privacy - instead of parameters, link to Flux Storage will be visible.",expression:"\n 'Uploads Enviornment to Flux Storage. Environment parameters will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Env. parameters while adding basic privacy - instead of parameters, link to Flux Storage will be visible.'\n ",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-env",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-env","confirm-button":"Upload Environment Parameters",width:600},on:{confirm:function(e){return t.uploadEnvToFluxStorage(i)}}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Commands "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Commands",expression:"'Array of strings of Commands'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`commands-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.commands,callback:function(e){t.$set(s,"commands",e)},expression:"component.commands"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Commands to Flux Storage. Commands will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Commands while adding basic privacy - instead of commands, link to Flux Storage will be visible.",expression:"'Uploads Commands to Flux Storage. Commands will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Commands while adding basic privacy - instead of commands, link to Flux Storage will be visible.'",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-cmd",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-cmd","confirm-button":"Upload Commands",width:600},on:{confirm:function(e){return t.uploadCmdToFluxStorage(i)}}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Data "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data",expression:"'Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`containerData-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.containerData,callback:function(e){t.$set(s,"containerData",e)},expression:"component.containerData"}})],1)]),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Secrets "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only",expression:"'Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`secrets-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"[]"},model:{value:s.secrets,callback:function(e){t.$set(s,"secrets",e)},expression:"component.secrets"}})],1)]):t._e(),e("br"),e("b-card-title",[t._v(" Resources    "),e("h6",{staticClass:"inline text-small"},[t._v(" Tiered: "),e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"tiered",switch:""},model:{value:s.tiered,callback:function(e){t.$set(s,"tiered",e)},expression:"component.tiered"}})],1)]),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"CPU","label-for":"cpu"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.cpu)+" ")]),e("b-form-input",{attrs:{id:`cpu-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"CPU cores to use by default",type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:s.cpu,callback:function(e){t.$set(s,"cpu",e)},expression:"component.cpu"}})],1),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"RAM","label-for":"ram"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.ram)+" ")]),e("b-form-input",{attrs:{id:`ram-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"RAM in MB value to use by default",type:"range",min:"100",max:"59000",step:"100"},model:{value:s.ram,callback:function(e){t.$set(s,"ram",e)},expression:"component.ram"}})],1),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"SSD","label-for":"ssd"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.hdd)+" ")]),e("b-form-input",{attrs:{id:`ssd-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"SSD in GB value to use by default",type:"range",min:"1",max:"820",step:"1"},model:{value:s.hdd,callback:function(e){t.$set(s,"hdd",e)},expression:"component.hdd"}})],1)],1)],1)],1),s.tiered?e("b-row",[e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Cumulus"}},[e("div",[t._v(" CPU: "+t._s(s.cpubasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"3",step:"0.1"},model:{value:s.cpubasic,callback:function(e){t.$set(s,"cpubasic",e)},expression:"component.cpubasic"}}),e("div",[t._v(" RAM: "+t._s(s.rambasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"5000",step:"100"},model:{value:s.rambasic,callback:function(e){t.$set(s,"rambasic",e)},expression:"component.rambasic"}}),e("div",[t._v(" SSD: "+t._s(s.hddbasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"180",step:"1"},model:{value:s.hddbasic,callback:function(e){t.$set(s,"hddbasic",e)},expression:"component.hddbasic"}})],1)],1),e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Nimbus"}},[e("div",[t._v(" CPU: "+t._s(s.cpusuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"7",step:"0.1"},model:{value:s.cpusuper,callback:function(e){t.$set(s,"cpusuper",e)},expression:"component.cpusuper"}}),e("div",[t._v(" RAM: "+t._s(s.ramsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"28000",step:"100"},model:{value:s.ramsuper,callback:function(e){t.$set(s,"ramsuper",e)},expression:"component.ramsuper"}}),e("div",[t._v(" SSD: "+t._s(s.hddsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"400",step:"1"},model:{value:s.hddsuper,callback:function(e){t.$set(s,"hddsuper",e)},expression:"component.hddsuper"}})],1)],1),e("b-col",{attrs:{xs:"12",lg:"4"}},[e("b-card",{attrs:{title:"Stratus"}},[e("div",[t._v(" CPU: "+t._s(s.cpubamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:s.cpubamf,callback:function(e){t.$set(s,"cpubamf",e)},expression:"component.cpubamf"}}),e("div",[t._v(" RAM: "+t._s(s.rambamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"59000",step:"100"},model:{value:s.rambamf,callback:function(e){t.$set(s,"rambamf",e)},expression:"component.rambamf"}}),e("div",[t._v(" SSD: "+t._s(s.hddbamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"820",step:"1"},model:{value:s.hddbamf,callback:function(e){t.$set(s,"hddbamf",e)},expression:"component.hddbamf"}})],1)],1)],1):t._e()],1)})),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("b-card",{attrs:{title:"Enterprise Nodes"}},[t._v(" Only these selected enterprise nodes will be able to run your application and are used for encryption. Only these nodes are able to access your private image and secrets."),e("br"),t._v(" Changing the node list after the message is computed and encrypted will result in a failure to run. Secrets and Repository Authentication would need to be adjusted again."),e("br"),t._v(" The score determines how reputable a node and node operator are. The higher the score, the higher the reputation on the network."),e("br"),t._v(" Secrets and Repository Authentication need to be set again if this node list changes."),e("br"),t._v(" The more nodes can run your application, the more stable it is. On the other hand, more nodes will have access to your private data!"),e("br"),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.entNodesTable.pageOptions},model:{value:t.entNodesTable.perPage,callback:function(e){t.$set(t.entNodesTable,"perPage",e)},expression:"entNodesTable.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.entNodesTable.filter,callback:function(e){t.$set(t.entNodesTable,"filter",e)},expression:"entNodesTable.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.entNodesTable.filter},on:{click:function(e){t.entNodesTable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"app-enterprise-nodes-table",attrs:{striped:"",hover:"",responsive:"","per-page":t.entNodesTable.perPage,"current-page":t.entNodesTable.currentPage,items:t.selectedEnterpriseNodes,fields:t.entNodesTable.fields,"sort-by":t.entNodesTable.sortBy,"sort-desc":t.entNodesTable.sortDesc,"sort-direction":t.entNodesTable.sortDirection,filter:t.entNodesTable.filter,"filter-included-fields":t.entNodesTable.filterOn,"show-empty":"","empty-text":"No Enterprise Nodes selected"},on:{"update:sortBy":function(e){return t.$set(t.entNodesTable,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.entNodesTable,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.entNodesTable,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.entNodesTable,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[s.item.ip?e("list-entry",{attrs:{title:"IP Address",data:s.item.ip}}):t._e(),e("list-entry",{attrs:{title:"Public Key",data:s.item.pubkey}}),e("list-entry",{attrs:{title:"Node Address",data:s.item.payment_address}}),e("list-entry",{attrs:{title:"Collateral",data:`${s.item.txhash}:${s.item.outidx}`}}),e("list-entry",{attrs:{title:"Tier",data:s.item.tier}}),e("list-entry",{attrs:{title:"Overall Score",data:s.item.score.toString()}}),e("list-entry",{attrs:{title:"Collateral Score",data:s.item.collateralPoints.toString()}}),e("list-entry",{attrs:{title:"Maturity Score",data:s.item.maturityPoints.toString()}}),e("list-entry",{attrs:{title:"Public Key Score",data:s.item.pubKeyPoints.toString()}}),e("list-entry",{attrs:{title:"Enterprise Apps Assigned",data:s.item.enterpriseApps.toString()}}),e("div",[e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit FluxNode ")])],1)],1)]}},{key:"cell(ip)",fn:function(e){return[t._v(" "+t._s(e.item.ip)+" ")]}},{key:"cell(payment_address)",fn:function(e){return[t._v(" "+t._s(e.item.payment_address.slice(0,8))+"..."+t._s(e.item.payment_address.slice(e.item.payment_address.length-8,e.item.payment_address.length))+" ")]}},{key:"cell(tier)",fn:function(e){return[t._v(" "+t._s(e.item.tier)+" ")]}},{key:"cell(score)",fn:function(e){return[t._v(" "+t._s(e.item.score)+" ")]}},{key:"cell(actions)",fn:function(s){return[e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`remove-${s.item.ip}`,size:"sm",variant:"danger"}},[t._v(" Remove ")]),e("confirm-dialog",{attrs:{target:`remove-${s.item.ip}`,"confirm-button":"Remove FluxNode"},on:{confirm:function(e){return t.removeFluxNode(s.item.ip)}}}),e("b-button",{staticClass:"mr-1 mb-1",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit ")])]}}],null,!1,2861207668)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0",attrs:{"total-rows":t.selectedEnterpriseNodes.length,"per-page":t.entNodesTable.perPage,align:"center",size:"sm"},model:{value:t.entNodesTable.currentPage,callback:function(e){t.$set(t.entNodesTable,"currentPage",e)},expression:"entNodesTable.currentPage"}}),e("span",{staticClass:"table-total"},[t._v("Total: "+t._s(t.selectedEnterpriseNodes.length))])],1)],1),e("br"),e("br"),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 mr-2",attrs:{variant:"primary","aria-label":"Auto Select Enterprise Nodes"},on:{click:t.autoSelectNodes}},[t._v(" Auto Select Enterprise Nodes ")]),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 mr-2",attrs:{variant:"primary","aria-label":"Choose Enterprise Nodes"},on:{click:function(e){t.chooseEnterpriseDialog=!0}}},[t._v(" Choose Enterprise Nodes ")])],1)],1):t._e()],2):e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",{attrs:{title:"Details"}},[e("b-form-group",{attrs:{"label-cols":"2",label:"Version","label-for":"version"}},[e("b-form-input",{attrs:{id:"version",placeholder:t.appUpdateSpecification.version.toString(),readonly:""},model:{value:t.appUpdateSpecification.version,callback:function(e){t.$set(t.appUpdateSpecification,"version",e)},expression:"appUpdateSpecification.version"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Name","label-for":"name"}},[e("b-form-input",{attrs:{id:"name",placeholder:"App Name",readonly:""},model:{value:t.appUpdateSpecification.name,callback:function(e){t.$set(t.appUpdateSpecification,"name",e)},expression:"appUpdateSpecification.name"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Desc.","label-for":"desc"}},[e("b-form-textarea",{attrs:{id:"desc",placeholder:"Description",rows:"3"},model:{value:t.appUpdateSpecification.description,callback:function(e){t.$set(t.appUpdateSpecification,"description",e)},expression:"appUpdateSpecification.description"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Repo","label-for":"repo"}},[e("b-form-input",{attrs:{id:"repo",placeholder:"Docker image namespace/repository:tag",readonly:""},model:{value:t.appUpdateSpecification.repotag,callback:function(e){t.$set(t.appUpdateSpecification,"repotag",e)},expression:"appUpdateSpecification.repotag"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Owner","label-for":"owner"}},[e("b-form-input",{attrs:{id:"owner",placeholder:"Flux ID of Application Owner"},model:{value:t.appUpdateSpecification.owner,callback:function(e){t.$set(t.appUpdateSpecification,"owner",e)},expression:"appUpdateSpecification.owner"}})],1),e("br"),t.appUpdateSpecification.version>=3?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Instances","label-for":"instances"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.instances)+" ")]),e("b-form-input",{attrs:{id:"instances",placeholder:"Minimum number of application instances to be spawned",type:"range",min:"3",max:t.maxInstances,step:"1"},model:{value:t.appUpdateSpecification.instances,callback:function(e){t.$set(t.appUpdateSpecification,"instances",e)},expression:"appUpdateSpecification.instances"}})],1):t._e(),e("br"),t.appUpdateSpecification.version>=6?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Period","label-for":"period"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.getExpireLabel||(t.appUpdateSpecification.expire?`${t.appUpdateSpecification.expire} blocks`:"1 month"))+" ")]),e("b-form-input",{attrs:{id:"period",placeholder:"How long an application will live on Flux network",type:"range",min:0,max:5,step:1},model:{value:t.expirePosition,callback:function(e){t.expirePosition=e},expression:"expirePosition"}})],1):t._e()],1)],1),e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",{attrs:{title:"Environment"}},[e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of Ports on which application will be available",expression:"'Array of Ports on which application will be available'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"ports"},model:{value:t.appUpdateSpecification.ports,callback:function(e){t.$set(t.appUpdateSpecification,"ports",e)},expression:"appUpdateSpecification.ports"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Domains "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains",expression:"'Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"domains"},model:{value:t.appUpdateSpecification.domains,callback:function(e){t.$set(t.appUpdateSpecification,"domains",e)},expression:"appUpdateSpecification.domains"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Environment "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Environmental Parameters",expression:"'Array of strings of Environmental Parameters'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"environmentParameters"},model:{value:t.appUpdateSpecification.enviromentParameters,callback:function(e){t.$set(t.appUpdateSpecification,"enviromentParameters",e)},expression:"appUpdateSpecification.enviromentParameters"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Commands "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Commands",expression:"'Array of strings of Commands'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"commands"},model:{value:t.appUpdateSpecification.commands,callback:function(e){t.$set(t.appUpdateSpecification,"commands",e)},expression:"appUpdateSpecification.commands"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Container Ports - Array of ports which your container has",expression:"'Container Ports - Array of ports which your container has'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"containerPorts"},model:{value:t.appUpdateSpecification.containerPorts,callback:function(e){t.$set(t.appUpdateSpecification,"containerPorts",e)},expression:"appUpdateSpecification.containerPorts"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Data "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data",expression:"'Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"containerData"},model:{value:t.appUpdateSpecification.containerData,callback:function(e){t.$set(t.appUpdateSpecification,"containerData",e)},expression:"appUpdateSpecification.containerData"}})],1)])])],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12"}},[e("b-card",[e("b-card-title",[t._v(" Resources    "),e("h6",{staticClass:"inline etext-small"},[t._v(" Tiered: "),e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"tiered",switch:""},model:{value:t.appUpdateSpecification.tiered,callback:function(e){t.$set(t.appUpdateSpecification,"tiered",e)},expression:"appUpdateSpecification.tiered"}})],1)]),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"CPU","label-for":"cpu"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.cpu)+" ")]),e("b-form-input",{attrs:{id:"cpu",placeholder:"CPU cores to use by default",type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:t.appUpdateSpecification.cpu,callback:function(e){t.$set(t.appUpdateSpecification,"cpu",e)},expression:"appUpdateSpecification.cpu"}})],1),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"RAM","label-for":"ram"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.ram)+" ")]),e("b-form-input",{attrs:{id:"ram",placeholder:"RAM in MB value to use by default",type:"range",min:"100",max:"59000",step:"100"},model:{value:t.appUpdateSpecification.ram,callback:function(e){t.$set(t.appUpdateSpecification,"ram",e)},expression:"appUpdateSpecification.ram"}})],1),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"SSD","label-for":"ssd"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.hdd)+" ")]),e("b-form-input",{attrs:{id:"ssd",placeholder:"SSD in GB value to use by default",type:"range",min:"1",max:"820",step:"1"},model:{value:t.appUpdateSpecification.hdd,callback:function(e){t.$set(t.appUpdateSpecification,"hdd",e)},expression:"appUpdateSpecification.hdd"}})],1)],1)],1)],1),t.appUpdateSpecification.tiered?e("b-row",[e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Cumulus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpubasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"3",step:"0.1"},model:{value:t.appUpdateSpecification.cpubasic,callback:function(e){t.$set(t.appUpdateSpecification,"cpubasic",e)},expression:"appUpdateSpecification.cpubasic"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.rambasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"5000",step:"100"},model:{value:t.appUpdateSpecification.rambasic,callback:function(e){t.$set(t.appUpdateSpecification,"rambasic",e)},expression:"appUpdateSpecification.rambasic"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddbasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"180",step:"1"},model:{value:t.appUpdateSpecification.hddbasic,callback:function(e){t.$set(t.appUpdateSpecification,"hddbasic",e)},expression:"appUpdateSpecification.hddbasic"}})],1)],1),e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Nimbus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpusuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"7",step:"0.1"},model:{value:t.appUpdateSpecification.cpusuper,callback:function(e){t.$set(t.appUpdateSpecification,"cpusuper",e)},expression:"appUpdateSpecification.cpusuper"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.ramsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"28000",step:"100"},model:{value:t.appUpdateSpecification.ramsuper,callback:function(e){t.$set(t.appUpdateSpecification,"ramsuper",e)},expression:"appUpdateSpecification.ramsuper"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"400",step:"1"},model:{value:t.appUpdateSpecification.hddsuper,callback:function(e){t.$set(t.appUpdateSpecification,"hddsuper",e)},expression:"appUpdateSpecification.hddsuper"}})],1)],1),e("b-col",{attrs:{xs:"12",lg:"4"}},[e("b-card",{attrs:{title:"Stratus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpubamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:t.appUpdateSpecification.cpubamf,callback:function(e){t.$set(t.appUpdateSpecification,"cpubamf",e)},expression:"appUpdateSpecification.cpubamf"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.rambamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"59000",step:"100"},model:{value:t.appUpdateSpecification.rambamf,callback:function(e){t.$set(t.appUpdateSpecification,"rambamf",e)},expression:"appUpdateSpecification.rambamf"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddbamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"820",step:"1"},model:{value:t.appUpdateSpecification.hddbamf,callback:function(e){t.$set(t.appUpdateSpecification,"hddbamf",e)},expression:"appUpdateSpecification.hddbamf"}})],1)],1)],1):t._e()],1)]):t._e(),t.appUpdateSpecification.version>=6?e("div",{staticClass:"form-row form-group d-flex align-items-center"},[e("b-input-group",[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"clock-history"}}),t._v(" Extend Subscription "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if you want to extend or change your subscription period",expression:"'Select if you want to extend or change your subscription period'",modifiers:{hover:!0,top:!0}}],staticClass:"ml-1",attrs:{name:"info-circle"}}),t._v("    ")],1)],1),e("b-input-group-append",{attrs:{"is-text":""}},[e("b-form-checkbox",{staticClass:"custom-control-primary",attrs:{id:"extendSubscription",switch:""},model:{value:t.extendSubscription,callback:function(e){t.extendSubscription=e},expression:"extendSubscription"}})],1)],1)],1):t._e(),t.extendSubscription&&t.appUpdateSpecification.version>=6?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Period "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Time your application subscription will be extended",expression:"'Time your application subscription will be extended'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-2",attrs:{name:"info-circle"}}),e("kbd",{staticClass:"bg-primary mr-1"},[e("b",[t._v(t._s(t.getExpireLabel||(t.appUpdateSpecification.expire?`${t.appUpdateSpecification.expire} blocks`:"1 month")))])])],1),e("div",{staticClass:"w-100",staticStyle:{flex:"1",padding:"10px"}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.expirePosition,expression:"expirePosition"}],staticClass:"form-control-range",staticStyle:{width:"100%",outline:"none"},attrs:{id:"period",type:"range",min:0,max:5,step:1},domProps:{value:t.expirePosition},on:{__r:function(e){t.expirePosition=e.target.value}}})])]):t._e(),e("div",[t._v(" Currently your application is subscribed until "),e("b",[t._v(t._s(new Date(t.appRunningTill.current).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". "),t.extendSubscription?e("span",[e("br"),t._v(" Your new adjusted subscription end on "),e("b",[t._v(t._s(new Date(t.appRunningTill.new).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". ")]):t._e(),t.appRunningTill.new0?e("h4",[e("kbd",{staticClass:"d-flex justify-content-center bg-primary mb-2"},[t._v("Discount - "+t._s(t.applicationPriceFluxDiscount)+"%")])]):t._e(),e("h4",{staticClass:"text-center mb-2"},[t._v(" Pay with Zelcore/SSP ")]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{href:`zel:?action=pay&coin=zelcash&address=${t.deploymentAddress}&amount=${t.appPricePerSpecs}&message=${t.updateHash}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2Fflux_banner.png`}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initSSPpay}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])])])],1)],1),t.updateHash&&t.freeUpdate?e("b-row",{staticClass:"match-height"},[e("b-card",[e("b-card-text",[t._v(" Everything is ready, your application update should be effective automatically in less than 30 minutes. ")])],1)],1):t._e()],1):t._e()]),e("b-tab",{attrs:{title:"Cancel Subscription",disabled:!t.isAppOwner||t.appUpdateSpecification.version<6}},[t.fluxCommunication?t._e():e("div",{staticClass:"text-danger"},[t._v(" Warning: Connected Flux is not communicating properly with Flux network ")]),e("div",{staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"ui-checks-grid"}}),t._v(" Cancel Application subscription ")],1)]),e("br"),e("div",[t._v(" Currently your application is subscribed until "),e("b",[t._v(t._s(new Date(t.appRunningTill.current).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". "),e("br"),e("b",[t._v("WARNING: By cancelling your application subscription, your application will be removed from the network and all data will be lost.")])]),e("br"),e("div",[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 w-100",attrs:{variant:"outline-success","aria-label":"Compute Cancel Message"},on:{click:t.checkFluxCancelSubscriptionAndFormatMessage}},[t._v(" Compute Cancel Message ")])],1),t.dataToSign?e("div",[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"Update Message","label-for":"updatemessage"}},[e("div",{staticClass:"text-wrap"},[e("b-form-textarea",{attrs:{id:"updatemessage",rows:"6",readonly:""},model:{value:t.dataToSign,callback:function(e){t.dataToSign=e},expression:"dataToSign"}}),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip",value:t.tooltipText,expression:"tooltipText"}],ref:"copyButtonRef",staticClass:"clipboard icon",attrs:{scale:"1.5",icon:"clipboard"},on:{click:t.copyMessageToSign}})],1)]),e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"Signature","label-for":"updatesignature"}},[e("b-form-input",{attrs:{id:"updatesignature"},model:{value:t.signature,callback:function(e){t.signature=e},expression:"signature"}})],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6",lg:"8"}},[e("b-card",[e("br"),e("div",{staticClass:"text-center"},[e("h4",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"chat-right"}}),t._v(" Data has to be signed by the last application owner ")],1)]),e("br"),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"w-100",attrs:{variant:"outline-success","aria-label":"Update Flux App"},on:{click:t.update}},[t._v(" Cancel Application ")])],1)],1),e("b-col",{attrs:{xs:"6",lg:"4"}},[e("b-card",{staticClass:"text-center",attrs:{title:"Sign with"}},[e("div",{staticClass:"loginRow"},[e("a",{attrs:{href:`zel:?action=sign&message=${t.dataToSign}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${t.callbackValue}`},on:{click:t.initiateSignWSUpdate}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initSSP}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("a",{on:{click:t.initWalletConnect}},[e("img",{staticClass:"walletIcon",attrs:{src:s(47622),alt:"WalletConnect",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initMetamask}},[e("img",{staticClass:"walletIcon",attrs:{src:s(28125),alt:"Metamask",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"my-1",staticStyle:{width:"250px"},attrs:{variant:"primary","aria-label":"Flux Single Sign On"},on:{click:t.initSignFluxSSO}},[t._v(" Flux Single Sign On (SSO) ")])],1)])],1)],1),t.updateHash?e("b-row",{staticClass:"match-height"},[e("b-card",[e("b-card-text",[t._v(" Everything is ready, your application cancelattion should be effective automatically in less than 30 minutes and removed from the network in the next ~3hours. ")])],1)],1):t._e()],1):t._e()])],1),t.output.length>0?e("div",{staticClass:"actionCenter"},[e("br"),e("b-row",[e("b-col",{attrs:{cols:"9"}},[e("b-form-textarea",{staticClass:"mt-1",attrs:{plaintext:"","no-resize":"",rows:t.output.length+1,value:t.stringOutput()}})],1),t.downloadOutputReturned?e("b-col",{attrs:{cols:"3"}},[e("h3",[t._v("Downloads")]),t._l(t.downloadOutput,(function(s){return e("div",{key:s.id},[e("h4",[t._v(" "+t._s(s.id))]),e("b-progress",{attrs:{value:s.detail.current/s.detail.total*100,max:"100",striped:"",height:"1rem",variant:s.variant}}),e("br")],1)}))],2):t._e()],1)],1):t._e(),t._m(0),e("b-modal",{attrs:{title:"Select Enterprise Nodes",size:"xl",centered:"","button-size":"sm","ok-only":"","ok-title":"Done"},model:{value:t.chooseEnterpriseDialog,callback:function(e){t.chooseEnterpriseDialog=e},expression:"chooseEnterpriseDialog"}},[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.entNodesSelectTable.pageOptions},model:{value:t.entNodesSelectTable.perPage,callback:function(e){t.$set(t.entNodesSelectTable,"perPage",e)},expression:"entNodesSelectTable.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.entNodesSelectTable.filter,callback:function(e){t.$set(t.entNodesSelectTable,"filter",e)},expression:"entNodesSelectTable.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.entNodesSelectTable.filter},on:{click:function(e){t.entNodesSelectTable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"app-enterprise-nodes-table",attrs:{striped:"",hover:"",responsive:"","per-page":t.entNodesSelectTable.perPage,"current-page":t.entNodesSelectTable.currentPage,items:t.enterpriseNodes,fields:t.entNodesSelectTable.fields,"sort-by":t.entNodesSelectTable.sortBy,"sort-desc":t.entNodesSelectTable.sortDesc,"sort-direction":t.entNodesSelectTable.sortDirection,filter:t.entNodesSelectTable.filter,"filter-included-fields":t.entNodesSelectTable.filterOn,"show-empty":"","empty-text":"No Enterprise Nodes For Addition Found"},on:{"update:sortBy":function(e){return t.$set(t.entNodesSelectTable,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.entNodesSelectTable,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.entNodesSelectTable,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.entNodesSelectTable,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[e("list-entry",{attrs:{title:"IP Address",data:s.item.ip}}),e("list-entry",{attrs:{title:"Public Key",data:s.item.pubkey}}),e("list-entry",{attrs:{title:"Node Address",data:s.item.payment_address}}),e("list-entry",{attrs:{title:"Collateral",data:`${s.item.txhash}:${s.item.outidx}`}}),e("list-entry",{attrs:{title:"Tier",data:s.item.tier}}),e("list-entry",{attrs:{title:"Overall Score",data:s.item.score.toString()}}),e("list-entry",{attrs:{title:"Collateral Score",data:s.item.collateralPoints.toString()}}),e("list-entry",{attrs:{title:"Maturity Score",data:s.item.maturityPoints.toString()}}),e("list-entry",{attrs:{title:"Public Key Score",data:s.item.pubKeyPoints.toString()}}),e("list-entry",{attrs:{title:"Enterprise Apps Assigned",data:s.item.enterpriseApps.toString()}}),e("div",[e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(t.locationRow.item.ip.split(":")[0],t.locationRow.item.ip.split(":")[1]?+t.locationRow.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit FluxNode ")])],1)],1)]}},{key:"cell(ip)",fn:function(e){return[t._v(" "+t._s(e.item.ip)+" ")]}},{key:"cell(payment_address)",fn:function(e){return[t._v(" "+t._s(e.item.payment_address.slice(0,8))+"..."+t._s(e.item.payment_address.slice(e.item.payment_address.length-8,e.item.payment_address.length))+" ")]}},{key:"cell(tier)",fn:function(e){return[t._v(" "+t._s(e.item.tier)+" ")]}},{key:"cell(score)",fn:function(e){return[t._v(" "+t._s(e.item.score)+" ")]}},{key:"cell(actions)",fn:function(s){return[e("b-button",{staticClass:"mr-1 mb-1",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit ")]),t.selectedEnterpriseNodes.find((t=>t.ip===s.item.ip))?t._e():e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`add-${s.item.ip}`,size:"sm",variant:"success"},on:{click:function(e){return t.addFluxNode(s.item.ip)}}},[t._v(" Add ")]),t.selectedEnterpriseNodes.find((t=>t.ip===s.item.ip))?e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`add-${s.item.ip}`,size:"sm",variant:"danger"},on:{click:function(e){return t.removeFluxNode(s.item.ip)}}},[t._v(" Remove ")]):t._e()]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0",attrs:{"total-rows":t.entNodesSelectTable.totalRows,"per-page":t.entNodesSelectTable.perPage,align:"center",size:"sm"},model:{value:t.entNodesSelectTable.currentPage,callback:function(e){t.$set(t.entNodesSelectTable,"currentPage",e)},expression:"entNodesSelectTable.currentPage"}}),e("span",{staticClass:"table-total"},[t._v("Total: "+t._s(t.entNodesSelectTable.totalRows))])],1)],1)],1)],1)},a=[function(){var t=this,e=t._self._c;return e("div",[e("br"),t._v(" By managing an application I agree with "),e("a",{attrs:{href:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Terms of Service ")])])}],o=(s(70560),s(98858),s(61318),s(33228),s(73106)),n=s(58887),r=s(51015),l=s(16521),c=s(66456),p=s(92095),d=s(31642),h=s(87379),u=s(51909),m=s(71605),f=s(43022),g=s(4060),b=s(27754),v=s(22418),y=s(50725),x=s(86855),w=s(64206),_=s(49379),S=s(97794),C=s(26253),k=s(15193),A=s(1759),T=s(87167),P=s(333),R=s(46709),D=s(22183),L=s(19692),F=s(8051),M=s(78959),$=s(10962),I=s(45752),N=s(22981),U=s(5870),O=s(67166),E=s.n(O),B=s(20266),z=s(20629),V=s(34547),H=s(87156),j=s(51748),q=s(92355),G=s(90699),W=s.n(G),K=s(2272),Z=s(52829),X=s(5449),Y=s(65864),J=s(43672),Q=s(27616),tt=s(38511),et=s(94145),st=s(12320),it=s(12617),at=s(67511),ot=s(32993),nt=s(12286),rt=s(53920),lt=s(37307),ct=s(7174),pt=s.n(ct),dt=s(34369); +(globalThis["webpackChunkflux"]=globalThis["webpackChunkflux"]||[]).push([[8182],{78182:(t,e,s)=>{"use strict";s.d(e,{Z:()=>wc});var i=function(){var t=this,e=t._self._c;return e("div",[e("b-modal",{attrs:{"hide-footer":"",centered:"","hide-header-close":"","no-close-on-backdrop":"","no-close-on-esc":"",size:"lg","header-bg-variant":"primary",title:t.operationTitle,"title-tag":"h5"},model:{value:t.progressVisable,callback:function(e){t.progressVisable=e},expression:"progressVisable"}},[e("div",{staticClass:"d-flex flex-column justify-content-center align-items-center",staticStyle:{height:"100%"}},[e("div",{staticClass:"d-flex align-items-center mb-2"},[e("b-spinner",{attrs:{label:"Loading..."}}),e("div",{staticClass:"ml-1"},[t._v(" Waiting for the operation to be completed... ")])],1)])]),e("div",[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mr-2",attrs:{variant:"outline-primary",pill:""},on:{click:t.goBackToApps}},[e("v-icon",{attrs:{name:"chevron-left"}}),t._v(" Back ")],1),t._v(" "+t._s(t.applicationManagementAndStatus)+" ")],1),e("b-tabs",{ref:"managementTabs",staticClass:"mt-2",staticStyle:{"flex-wrap":"nowrap"},attrs:{pills:"",vertical:t.windowWidth>860,lazy:""},on:{input:e=>t.updateManagementTab(e)}},[t.windowWidth>860?e("b-tab",{attrs:{title:"Local App Management",disabled:""}}):t._e(),e("b-tab",{attrs:{active:"",title:"Specifications"}},[e("div",[e("b-card",[e("h3",[e("b-icon",{attrs:{icon:"hdd-network-fill"}}),t._v("  Backend Selection")],1),e("div",{staticClass:"d-flex"},[e("b-input-group",{staticClass:"my-1",staticStyle:{width:"250px"},attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"laptop"}})],1),e("b-form-select",{attrs:{options:null},on:{change:t.selectedIpChanged},model:{value:t.selectedIp,callback:function(e){t.selectedIp=e},expression:"selectedIp"}},t._l(t.instances.data,(function(s){return e("b-form-select-option",{key:s.ip,attrs:{value:s.ip}},[t._v(" "+t._s(s.ip)+" ")])})),1),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.refreshInfo}})],1)],1)])],1),e("div",[e("b-card",[t.callBResponse.data&&t.callResponse.data?e("div",[t.callBResponse.data.hash!==t.callResponse.data.hash?e("div",[e("h1",[t._v("Locally running application does not match global specifications! Update needed")]),e("br"),e("br")]):e("div",[t._v(" Application is synced with Global network "),e("br"),e("br")])]):t._e(),e("h2",[t._v("Installed Specifications")]),t.callResponse.data?e("div",{staticStyle:{"text-align":"left"}},[e("b-card",{},[e("list-entry",{attrs:{title:"Name",data:t.callResponse.data.name}}),e("list-entry",{attrs:{title:"Description",data:t.callResponse.data.description}}),e("list-entry",{attrs:{title:"Owner",data:t.callResponse.data.owner}}),e("list-entry",{attrs:{title:"Hash",data:t.callResponse.data.hash}}),t.callResponse.data.version>=5?e("div",[t.callResponse.data.geolocation.length?e("div",t._l(t.callResponse.data.geolocation,(function(s){return e("div",{key:s},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(s)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)]):t._e(),t.callResponse.data.instances?e("list-entry",{attrs:{title:"Instances",data:t.callResponse.data.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Specifications version",number:t.callResponse.data.version}}),e("list-entry",{attrs:{title:"Registered on Blockheight",number:t.callResponse.data.height}}),t.callResponse.data.hash&&64===t.callResponse.data.hash.length?e("list-entry",{attrs:{title:"Expires on Blockheight",number:t.callResponse.data.height+(t.callResponse.data.expire||22e3)}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.getNewExpireLabel}}),e("list-entry",{attrs:{title:"Enterprise Nodes",data:t.callResponse.data.nodes?t.callResponse.data.nodes.toString():"Not scoped"}}),e("list-entry",{attrs:{title:"Static IP",data:t.callResponse.data.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}}),e("h4",[t._v("Composition")]),t.callResponse.data.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:t.callResponse.data.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:t.callResponse.data.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(t.callResponse.data.ports,t.callResponse.data.name).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:t.callResponse.data.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:t.callResponse.data.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:t.callResponse.data.containerData.toString()||"none"}}),e("list-entry",{attrs:{title:"Environment Parameters",data:t.callResponse.data.enviromentParameters.length>0?t.callResponse.data.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:t.callResponse.data.commands.length>0?t.callResponse.data.commands.toString():"none"}}),t.callResponse.data.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${t.callResponse.data.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${t.callResponse.data.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${t.callResponse.data.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${t.callResponse.data.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${t.callResponse.data.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${t.callResponse.data.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${t.callResponse.data.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${t.callResponse.data.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${t.callResponse.data.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${t.callResponse.data.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${t.callResponse.data.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${t.callResponse.data.hdd} GB`}})],1)],1)],1):e("div",t._l(t.callResponse.data.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,t.callResponse.data.name,i).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)})),1)],1)],1):e("div",[t._v(" Local Specifications loading... ")]),e("h2",{staticClass:"mt-2"},[t._v(" Global Specifications ")]),t.callBResponse.data?e("div",{staticStyle:{"text-align":"left"}},[e("b-card",{},[e("list-entry",{attrs:{title:"Name",data:t.callBResponse.data.name}}),e("list-entry",{attrs:{title:"Description",data:t.callBResponse.data.description}}),e("list-entry",{attrs:{title:"Owner",data:t.callBResponse.data.owner}}),e("list-entry",{attrs:{title:"Hash",data:t.callBResponse.data.hash}}),t.callBResponse.data.version>=5?e("div",[t.callBResponse.data.geolocation.length?e("div",t._l(t.callBResponse.data.geolocation,(function(s){return e("div",{key:s},[e("list-entry",{attrs:{title:"Geolocation",data:t.getGeolocation(s)}})],1)})),0):e("div",[e("list-entry",{attrs:{title:"Continent",data:"All"}}),e("list-entry",{attrs:{title:"Country",data:"All"}}),e("list-entry",{attrs:{title:"Region",data:"All"}})],1)]):t._e(),t.callBResponse.data.instances?e("list-entry",{attrs:{title:"Instances",data:t.callBResponse.data.instances.toString()}}):t._e(),e("list-entry",{attrs:{title:"Specifications version",number:t.callBResponse.data.version}}),e("list-entry",{attrs:{title:"Registered on Blockheight",number:t.callBResponse.data.height}}),t.callBResponse.data.hash&&64===t.callBResponse.data.hash.length?e("list-entry",{attrs:{title:"Expires on Blockheight",number:t.callBResponse.data.height+(t.callBResponse.data.expire||22e3)}}):t._e(),e("list-entry",{attrs:{title:"Expires in",data:t.getNewExpireLabel}}),e("list-entry",{attrs:{title:"Enterprise Nodes",data:t.callBResponse.data.nodes?t.callBResponse.data.nodes.toString():"Not scoped"}}),e("list-entry",{attrs:{title:"Static IP",data:t.callBResponse.data.staticip?"Yes, Running only on Static IP nodes":"No, Running on all nodes"}}),e("h4",[t._v("Composition")]),t.callBResponse.data.version<=3?e("div",[e("b-card",[e("list-entry",{attrs:{title:"Repository",data:t.callBResponse.data.repotag}}),e("list-entry",{attrs:{title:"Custom Domains",data:t.callBResponse.data.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomainsGlobal.toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:t.callBResponse.data.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:t.callBResponse.data.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:t.callBResponse.data.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:t.callBResponse.data.enviromentParameters.length>0?t.callBResponse.data.enviromentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:t.callBResponse.data.commands.length>0?t.callBResponse.data.commands.toString():"none"}}),t.callBResponse.data.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${t.callBResponse.data.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${t.callBResponse.data.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${t.callBResponse.data.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${t.callBResponse.data.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${t.callBResponse.data.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${t.callBResponse.data.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${t.callBResponse.data.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${t.callBResponse.data.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${t.callBResponse.data.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${t.callBResponse.data.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${t.callBResponse.data.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${t.callBResponse.data.hdd} GB`}})],1)],1)],1):e("div",t._l(t.callBResponse.data.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("list-entry",{attrs:{title:"Name",data:s.name}}),e("list-entry",{attrs:{title:"Description",data:s.description}}),e("list-entry",{attrs:{title:"Repository",data:s.repotag}}),e("list-entry",{attrs:{title:"Repository Authentication",data:s.repoauth?"Content Encrypted":"Public"}}),e("list-entry",{attrs:{title:"Custom Domains",data:s.domains.toString()||"none"}}),e("list-entry",{attrs:{title:"Automatic Domains",data:t.constructAutomaticDomains(s.ports,t.callBResponse.data.name,i).toString()||"none"}}),e("list-entry",{attrs:{title:"Ports",data:s.ports.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Ports",data:s.containerPorts.toString()||"none"}}),e("list-entry",{attrs:{title:"Container Data",data:s.containerData}}),e("list-entry",{attrs:{title:"Environment Parameters",data:s.environmentParameters.length>0?s.environmentParameters.toString():"none"}}),e("list-entry",{attrs:{title:"Commands",data:s.commands.length>0?s.commands.toString():"none"}}),e("list-entry",{attrs:{title:"Secret Environment Parameters",data:s.secrets?"Content Encrypted":"none"}}),s.tiered?e("div",[e("list-entry",{attrs:{title:"CPU Cumulus",data:`${s.cpubasic} vCore`}}),e("list-entry",{attrs:{title:"CPU Nimbus",data:`${s.cpusuper} vCore`}}),e("list-entry",{attrs:{title:"CPU Stratus",data:`${s.cpubamf} vCore`}}),e("list-entry",{attrs:{title:"RAM Cumulus",data:`${s.rambasic} MB`}}),e("list-entry",{attrs:{title:"RAM Nimbus",data:`${s.ramsuper} MB`}}),e("list-entry",{attrs:{title:"RAM Stratus",data:`${s.rambamf} MB`}}),e("list-entry",{attrs:{title:"SSD Cumulus",data:`${s.hddbasic} GB`}}),e("list-entry",{attrs:{title:"SSD Nimbus",data:`${s.hddsuper} GB`}}),e("list-entry",{attrs:{title:"SSD Stratus",data:`${s.hddbamf} GB`}})],1):e("div",[e("list-entry",{attrs:{title:"CPU",data:`${s.cpu} vCore`}}),e("list-entry",{attrs:{title:"RAM",data:`${s.ram} MB`}}),e("list-entry",{attrs:{title:"SSD",data:`${s.hdd} GB`}})],1)],1)})),1)],1)],1):"error"===t.callBResponse.status?e("div",[t._v(" Global specifications not found! ")]):e("div",[t._v(" Global Specifications loading... ")])])],1)]),e("b-tab",{attrs:{title:"Information"}},[e("h3",[e("b-icon",{attrs:{icon:"app-indicator"}}),t._v(" "+t._s(t.appSpecification.name))],1),t.commandExecutingInspect?e("div",[e("div",{staticStyle:{display:"flex","align-items":"center"}},[e("v-icon",{staticClass:"spin-icon",staticStyle:{"margin-right":"5px"},attrs:{name:"spinner"}}),e("h5",{staticStyle:{margin:"0"}},[t._v(" Loading... ")])],1)]):t._e(),t.appSpecification.version>=4?e("div",t._l(t.callResponseInspect.data,(function(s,i){return e("div",{key:i},[e("h4",[t._v("Component: "+t._s(s.name))]),s.callData?e("div",[e("json-viewer",{attrs:{value:s.callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])})),0):e("div",[t.callResponseInspect.data&&t.callResponseInspect.data[0]?e("div",[e("json-viewer",{attrs:{value:t.callResponseInspect.data[0].callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])]),e("b-tab",{attrs:{title:"Monitoring"}},[e("div",{staticClass:"container"},[e("div",{staticClass:"d-flex mb-1 align-items-center justify-content-between",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px","padding-top":"12px","padding-bottom":"4px","padding-left":"12px","padding-right":"12px","text-align":"left"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"bar-chart-fill"}}),t._v(" "+t._s(t.overviewTitle)+" ")],1),e("b-form-checkbox",{attrs:{switch:""},on:{change:t.enableHistoryStatisticsChange},model:{value:t.enableHistoryStatistics,callback:function(e){t.enableHistoryStatistics=e},expression:"enableHistoryStatistics"}},[t._v(" History Statistics ")])],1),e("div",{staticClass:"d-flex flex-container2"},[e("div",[e("b-input-group",{staticClass:"mb-1",attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"app-indicator"}})],1),t.appSpecification?.compose?e("b-form-select",{attrs:{options:null,disabled:t.isComposeSingle},model:{value:t.selectedContainerMonitoring,callback:function(e){t.selectedContainerMonitoring=e},expression:"selectedContainerMonitoring"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2):t._e(),t.appSpecification?.compose?t._e():e("b-form-input",{attrs:{placeholder:t.appSpecification.name,disabled:""}}),t.enableHistoryStatistics?e("b-icon",{class:["ml-1","r"],attrs:{icon:"arrow-clockwise"},on:{click:t.fetchStats}}):t._e(),t.enableHistoryStatistics||!0!==t.buttonStats?t._e():e("b-icon",{class:["ml-1","r"],attrs:{icon:"arrow-clockwise"},on:{click:function(e){return t.startPollingStats(!0)}}})],1),t.enableHistoryStatistics?t._e():e("b-input-group",{staticStyle:{width:"120px"},attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Limit the number of data points displayed on the charts.",expression:"'Limit the number of data points displayed on the charts.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"clipboard-data"}})],1),e("b-form-select",{attrs:{options:t.pointsOptions},model:{value:t.selectedPoints,callback:function(e){t.selectedPoints=e},expression:"selectedPoints"}})],1)],1),t.enableHistoryStatistics?t._e():e("div",[e("b-input-group",{attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose the interval for refreshing data on the charts.",expression:"'Choose the interval for refreshing data on the charts.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"clock"}})],1),e("b-form-select",{attrs:{size:"sm",options:t.refreshOptions},model:{value:t.refreshRateMonitoring,callback:function(e){t.refreshRateMonitoring=e},expression:"refreshRateMonitoring"}})],1)],1),t.enableHistoryStatistics?e("div",[e("b-input-group",{attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose the time period to display historical data.",expression:"'Choose the time period to display historical data.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],attrs:{icon:"calendar-range"}})],1),e("b-form-select",{attrs:{options:t.timeOptions},on:{change:t.fetchStats},model:{value:t.selectedTimeRange,callback:function(e){t.selectedTimeRange=e},expression:"selectedTimeRange"}})],1)],1):t._e()]),e("div",{staticClass:"charts-grid"},[e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("CPU usage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays CPU usage over time. Monitoring CPU usage helps identify high load periods, optimize resource allocation, and troubleshoot performance bottlenecks.",expression:"'Displays CPU usage over time. Monitoring CPU usage helps identify high load periods, optimize resource allocation, and troubleshoot performance bottlenecks.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"cpuChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title ml-2"},[t._v("Memory usage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays memory usage over time. Monitoring memory usage helps identify potential memory leaks, optimize application performance, and.",expression:"'Displays memory usage over time. Monitoring memory usage helps identify potential memory leaks, optimize application performance, and.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"memoryChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Network usage (aggregate)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays network usage over time (TX: Transmit - outgoing data; RX: Receive - incoming data). Key metrics include bandwidth, throughput, and latency. Monitoring helps identify bottlenecks, optimize performance, and ensure efficient data transfer.",expression:"'Displays network usage over time (TX: Transmit - outgoing data; RX: Receive - incoming data). Key metrics include bandwidth, throughput, and latency. Monitoring helps identify bottlenecks, optimize performance, and ensure efficient data transfer.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"networkChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("I/O usage (aggregate)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Displays Input/Output operations over time, measuring data transfer to/from storage devices and peripherals. Monitoring I/O helps identify bottlenecks, optimize performance, and ensure responsive system behavior.",expression:"'Displays Input/Output operations over time, measuring data transfer to/from storage devices and peripherals. Monitoring I/O helps identify bottlenecks, optimize performance, and ensure responsive system behavior.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"ioChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Persistent Storage")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Persistent Storage refers to data that is retained across container restarts and updates. It ensures important information is preserved. Monitoring this helps prevent disk space exhaustion and supports efficient data management.",expression:"'Persistent Storage refers to data that is retained across container restarts and updates. It ensures important information is preserved. Monitoring this helps prevent disk space exhaustion and supports efficient data management.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"diskPersistentChart"}})]),e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"bar-chart-line"}}),e("span",{staticClass:"chart-title"},[t._v("Root Filesystem (rootfs)")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Root Filesystem refers to the temporary storage used by the container during its lifetime. This data is not retained after the container is stopped or deleted. Monitoring rootfs usage helps avoid disk space issues within the container’s filesystem.",expression:"'Root Filesystem refers to the temporary storage used by the container during its lifetime. This data is not retained after the container is stopped or deleted. Monitoring rootfs usage helps avoid disk space issues within the container’s filesystem.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("canvas",{attrs:{id:"diskFileSystemChart"}})]),t.enableHistoryStatistics?t._e():e("div",{staticClass:"chart-wrapper"},[e("div",{staticClass:"chart-title-container mb-2"},[e("b-icon",{staticStyle:{width:"30px",height:"30px"},attrs:{icon:"list-ul"}}),e("span",{staticClass:"chart-title"},[t._v("Processes")]),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"List of running process in continer.",expression:"'List of running process in continer.'",modifiers:{hover:!0,top:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"ml-1",staticStyle:{width:"15px",height:"15px"},attrs:{icon:"info-circle"}})],1),e("b-form-input",{staticClass:"mb-2",attrs:{placeholder:"Search processes..."},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}}),e("div",{staticClass:"table-responsive"},[e("b-table",{staticClass:"table-monitoring",attrs:{small:"",responsive:"","show-empty":"","empty-text":"No records available.",items:t.paginatedProcesses,fields:t.titles,bordered:"",hover:""}})],1),e("div",{staticClass:"d-flex align-items-center my-1"},[e("div",{staticClass:"flex-grow-1 text-center"},[t.filteredProcesses.length?e("b-pagination",{attrs:{pills:"",size:"sm","total-rows":t.filteredProcesses.length,"per-page":t.perPage},on:{change:t.scrollToPagination},model:{value:t.currentPage,callback:function(e){t.currentPage=e},expression:"currentPage"}}):t._e()],1),e("div",{staticClass:"d-flex align-items-center ml-3"},[e("label",{staticClass:"mr-2 mb-0",staticStyle:{"white-space":"nowrap"}},[t._v("Items per page:")]),e("b-form-select",{staticClass:"ml-2",attrs:{options:t.perPageOptions,size:"sm"},on:{change:t.scrollToPagination},model:{value:t.perPage,callback:function(e){t.perPage=e},expression:"perPage"}})],1)])],1)])])]),e("b-tab",{attrs:{title:"File Changes"}},[e("h3",[e("b-icon",{attrs:{icon:"app-indicator"}}),t._v(" "+t._s(t.appSpecification.name))],1),t.commandExecutingChanges?e("div",[e("div",{staticStyle:{display:"flex","align-items":"center"}},[e("v-icon",{staticClass:"spin-icon",staticStyle:{"margin-right":"5px"},attrs:{name:"spinner"}}),e("h5",{staticStyle:{margin:"0"}},[t._v(" Loading... ")])],1)]):t._e(),t.appSpecification.version>=4?e("div",t._l(t.callResponseChanges.data,(function(s,i){return e("div",{key:i},[e("h4",[t._v("Component: "+t._s(s.name))]),s.callData?e("div",[e("kbd",{staticClass:"bg-primary mr-1"},[t._v("Kind: 0 = Modified")]),e("kbd",{staticClass:"bg-success mr-1"},[t._v("Kind: 1 = Added ")]),e("kbd",{staticClass:"bg-danger"},[t._v("Kind: 2 = Deleted")]),e("json-viewer",{staticClass:"mt-1",attrs:{value:s.callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])})),0):e("div",[t.callResponseChanges.data&&t.callResponseChanges.data[0]?e("div",[e("kbd",{staticClass:"bg-primary mr-1"},[t._v("Kind: 0 = Modified")]),e("kbd",{staticClass:"bg-success mr-1"},[t._v("Kind: 1 = Added ")]),e("kbd",{staticClass:"bg-danger"},[t._v("Kind: 2 = Deleted")]),e("json-viewer",{staticClass:"mt-1",attrs:{value:t.callResponseChanges.data[0].callData,"expand-depth":5,copyable:"",boxed:"",theme:"jv-dark"}})],1):t._e()])]),e("b-tab",{attrs:{title:"Logs"}},[e("div",[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","text-align":"left","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"search"}}),t._v(" Logs Management ")],1)]),e("b-form",{staticClass:"ml-2 mr-2"},[e("div",{staticClass:"flex-container"},[e("b-form-group",[t.appSpecification?.compose?t._e():e("b-form-group",{attrs:{label:"Component"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-input",{staticClass:"input_s",attrs:{size:"sm",placeholder:t.appSpecification.name,disabled:""}}),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.manualFetchLogs}})],1)]),t.appSpecification?.compose?e("b-form-group",{attrs:{label:"Component"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-select",{staticClass:"input_s",attrs:{options:null,disabled:t.isComposeSingle,size:"sm"},on:{change:t.handleContainerChange},model:{value:t.selectedApp,callback:function(e){t.selectedApp=e},expression:"selectedApp"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2),e("b-icon",{class:["ml-1","r",{disabled:t.isDisabled}],attrs:{icon:"arrow-clockwise"},on:{click:t.manualFetchLogs}})],1)]):t._e(),e("b-form-group",{attrs:{label:"Line Count"}},[e("b-form-input",{staticClass:"input",attrs:{type:"number",size:"sm",disabled:t.fetchAllLogs,step:"10",min:"0"},model:{value:t.lineCount,callback:function(e){t.lineCount=e},expression:"lineCount"}})],1),e("b-form-group",{attrs:{label:"Logs Since"}},[e("div",{staticClass:"d-flex align-items-center"},[e("b-form-input",{staticClass:"input",attrs:{size:"sm",type:"datetime-local",placeholder:"Logs Since"},model:{value:t.sinceTimestamp,callback:function(e){t.sinceTimestamp=e},expression:"sinceTimestamp"}}),t.sinceTimestamp?e("b-icon",{staticClass:"ml-1 x",attrs:{icon:"x-square"},on:{click:t.clearDateFilter}}):t._e()],1)])],1),e("b-form-group",{attrs:{label:"Filter"}},[e("b-input-group",{staticClass:"search_input",attrs:{size:"sm"}},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"funnel-fill"}})],1),e("b-form-input",{attrs:{type:"search",placeholder:"Enter keywords.."},model:{value:t.filterKeyword,callback:function(e){t.filterKeyword=e},expression:"filterKeyword"}})],1),e("b-form-checkbox",{staticClass:"mt-2",attrs:{switch:""},on:{change:t.togglePolling},model:{value:t.pollingEnabled,callback:function(e){t.pollingEnabled=e},expression:"pollingEnabled"}},[t._v(" Auto-refresh "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Enable or disable automatic refreshing of logs every few seconds.",expression:"'Enable or disable automatic refreshing of logs every few seconds.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.fetchAllLogs,callback:function(e){t.fetchAllLogs=e},expression:"fetchAllLogs"}},[t._v(" Fetch All Logs ")]),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.displayTimestamps,callback:function(e){t.displayTimestamps=e},expression:"displayTimestamps"}},[t._v(" Display Timestamps ")]),e("b-form-checkbox",{attrs:{switch:""},model:{value:t.isLineByLineMode,callback:function(e){t.isLineByLineMode=e},expression:"isLineByLineMode"}},[t._v(" Line Selection "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Switch between normal text selection or selecting individual log lines for copying.",expression:"'Switch between normal text selection or selecting individual log lines for copying.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1),e("b-form-checkbox",{staticClass:"mb-1",attrs:{switch:""},model:{value:t.autoScroll,callback:function(e){t.autoScroll=e},expression:"autoScroll"}},[t._v(" Auto-scroll "),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.title",value:"Enable or disable automatic scrolling to the latest logs.",expression:"'Enable or disable automatic scrolling to the latest logs.'",modifiers:{hover:!0,title:!0}}],staticClass:"icon-tooltip",attrs:{icon:"info-circle"}})],1)],1)],1)]),e("div",{ref:"logsContainer",staticClass:"code-container",class:{"line-by-line-mode":t.isLineByLineMode}},[t.filteredLogs.length>0?e("button",{ref:"copyButton",staticClass:"log-copy-button ml-2",attrs:{type:"button",disabled:t.copied},on:{click:t.copyCode}},[e("b-icon",{attrs:{icon:t.copied?"check":"back"}}),t._v(" "+t._s(t.copied?"Copied!":"Copy")+" ")],1):t._e(),t.selectedLog.length>0&&t.filteredLogs.length>0?e("button",{staticClass:"log-copy-button ml-2",attrs:{type:"button"},on:{click:t.unselectText}},[e("b-icon",{attrs:{icon:"exclude"}}),t._v(" Unselect ")],1):t._e(),t.filteredLogs.length>0?e("button",{staticClass:"download-button",attrs:{disabled:t.downloadingLog,type:"button"},on:{click:function(e){return t.downloadApplicationLog(t.selectedApp?`${t.selectedApp}_${t.appSpecification.name}`:t.appSpecification.name)}}},[e("b-icon",{class:{"spin-icon-l":t.downloadingLog},attrs:{icon:t.downloadingLog?"arrow-repeat":"download"}}),t._v(" Download ")],1):t._e(),t.filteredLogs.length>0?e("div",t._l(t.filteredLogs,(function(s){return e("div",{directives:[{name:"sane-html",rawName:"v-sane-html",value:t.formatLog(s),expression:"formatLog(log)"}],key:t.extractTimestamp(s),staticClass:"log-entry",class:{selected:t.selectedLog.includes(t.extractTimestamp(s))},on:{click:function(e){t.isLineByLineMode&&t.toggleLogSelection(s)}}})})),0):""!==t.filterKeyword.trim()?e("div",{staticClass:"no-matches"},[t._v(" No log line matching the '"+t._s(t.filterKeyword)+"' filter. ")]):t.noLogs?e("div",{staticClass:"no-matches"},[t._v(" No log records found. ")]):t._e()])],1)]),e("b-tab",{attrs:{title:"Control"}},[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" General options to control running status of App. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-app",variant:"success","aria-label":"Start App"}},[t._v(" Start App ")]),e("confirm-dialog",{attrs:{target:"start-app","confirm-button":"Start App"},on:{confirm:function(e){return t.startApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-app",variant:"success","aria-label":"Stop App"}},[t._v(" Stop App ")]),e("confirm-dialog",{attrs:{target:"stop-app","confirm-button":"Stop App"},on:{confirm:function(e){return t.stopApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"restart-app",variant:"success","aria-label":"Restart App"}},[t._v(" Restart App ")]),e("confirm-dialog",{attrs:{target:"restart-app","confirm-button":"Restart App"},on:{confirm:function(e){return t.restartApp(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" The Pause command suspends all processes in the specified App. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"pause-app",variant:"success","aria-label":"Pause App"}},[t._v(" Pause App ")]),e("confirm-dialog",{attrs:{target:"pause-app","confirm-button":"Pause App"},on:{confirm:function(e){return t.pauseApp(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"unpause-app",variant:"success","aria-label":"Unpause App"}},[t._v(" Unpause App ")]),e("confirm-dialog",{attrs:{target:"unpause-app","confirm-button":"Unpause App"},on:{confirm:function(e){return t.unpauseApp(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Monitoring"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Controls Application Monitoring ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-monitoring",variant:"success","aria-label":"Start Monitoring"}},[t._v(" Start Monitoring ")]),e("confirm-dialog",{attrs:{target:"start-monitoring","confirm-button":"Start Monitoring"},on:{confirm:function(e){return t.startMonitoring(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-monitoring",variant:"success","aria-label":"Stop Monitoring"}},[t._v(" Stop Monitoring ")]),e("confirm-dialog",{attrs:{target:"stop-monitoring","confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(t.appName,!1)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-monitoring-delete",variant:"success","aria-label":"Stop Monitoring and Delete Monitored Data"}},[t._v(" Stop Monitoring and Delete Monitored Data ")]),e("confirm-dialog",{attrs:{target:"stop-monitoring-delete","confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(t.appName,!0)}}})],1)],1)],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Redeploy"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Reinstall your application from the docker repo. Soft option, keeps data on the instance, Hard option deletes everything and gets installed like a fresh install. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-soft",variant:"success","aria-label":"Soft Redeploy App"}},[t._v(" Soft Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-soft","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppSoft(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-hard",variant:"success","aria-label":"Hard Redeploy App"}},[t._v(" Hard Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-hard","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppHard(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Remove"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Stops, uninstalls and removes all App data from this Flux node. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"remove-app",variant:"success","aria-label":"Remove App"}},[t._v(" Remove App ")]),e("confirm-dialog",{attrs:{target:"remove-app","confirm-button":"Remove App"},on:{confirm:function(e){return t.removeApp(t.appName)}}})],1)],1)],1)],1)],1),t.windowWidth>860?e("b-tab",{attrs:{title:"Component Control",disabled:!t.isApplicationInstalledLocally||t.appSpecification.version<=3}},t._l(t.appSpecification.compose,(function(s,i){return e("b-card",{key:i},[e("h4",[t._v(t._s(s.name)+" Component")]),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" General options to control running status of Component. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`start-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Start Component"}},[t._v(" Start Component ")]),e("confirm-dialog",{attrs:{target:`start-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Start Component"},on:{confirm:function(e){return t.startApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Component"}},[t._v(" Stop Component ")]),e("confirm-dialog",{attrs:{target:`stop-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop App"},on:{confirm:function(e){return t.stopApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`restart-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Restart Component"}},[t._v(" Restart Component ")]),e("confirm-dialog",{attrs:{target:`restart-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Restart Component"},on:{confirm:function(e){return t.restartApp(`${s.name}_${t.appSpecification.name}`)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" The Pause command suspends all processes in the specified Component. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`pause-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Pause Component"}},[t._v(" Pause Component ")]),e("confirm-dialog",{attrs:{target:`pause-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Pause Component"},on:{confirm:function(e){return t.pauseApp(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`unpause-app-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Unpause Component"}},[t._v(" Unpause Component ")]),e("confirm-dialog",{attrs:{target:`unpause-app-${s.name}_${t.appSpecification.name}`,"confirm-button":"Unpause Component"},on:{confirm:function(e){return t.unpauseApp(`${s.name}_${t.appSpecification.name}`)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Monitoring"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" Controls Component Monitoring ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`start-monitoring-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Start Monitoring"}},[t._v(" Start Monitoring ")]),e("confirm-dialog",{attrs:{target:`start-monitoring-${s.name}_${t.appSpecification.name}`,"confirm-button":"Start Monitoring"},on:{confirm:function(e){return t.startMonitoring(`${s.name}_${t.appSpecification.name}`)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-monitoring-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Monitoring"}},[t._v(" Stop Monitoring ")]),e("confirm-dialog",{attrs:{target:`stop-monitoring-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(`${s.name}_${t.appSpecification.name}`,!1)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:`stop-monitoring-delete-${s.name}_${t.appSpecification.name}`,variant:"success","aria-label":"Stop Monitoring and Delete Monitored Data"}},[t._v(" Stop Monitoring and Delete Monitored Data ")]),e("confirm-dialog",{attrs:{target:`stop-monitoring-delete-${s.name}_${t.appSpecification.name}`,"confirm-button":"Stop Monitoring"},on:{confirm:function(e){return t.stopMonitoring(`${s.name}_${t.appSpecification.name}`,!0)}}})],1)],1)],1)],1)],1)})),1):t._e(),e("b-tab",{attrs:{title:"Backup/Restore",disabled:!t.appSpecification?.compose}},[e("div",[e("b-card",{attrs:{"no-body":""}},[e("b-tabs",{attrs:{pills:"",card:""}},[e("b-tab",{staticStyle:{margin:"0","padding-top":"0px"},attrs:{title:"Backup"}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"back"}}),t._v(" Manual Backup Container Data ")],1)]),e("div",{staticClass:"mb-2"},[e("b-form-group",[e("b-form-tags",{attrs:{id:"tags-component-select",size:"lg","add-on-change":"","no-outer-focus":""},scopedSlots:t._u([{key:"default",fn:function({tags:s,inputAttrs:i,inputHandlers:a,disabled:o,removeTag:n}){return[s.length>0?e("ul",{staticClass:"list-inline d-inline-block mb-2"},t._l(s,(function(s){return e("li",{key:s,staticClass:"list-inline-item"},[e("b-form-tag",{attrs:{title:s,disabled:o,variant:"primary"},on:{remove:function(t){return n(s)}}},[t._v(" "+t._s(s)+" ")])],1)})),0):t._e(),e("b-form-select",t._g(t._b({attrs:{disabled:o||0===t.componentAvailableOptions?.length||1===t.components?.length,options:t.componentAvailableOptions},scopedSlots:t._u([{key:"first",fn:function(){return[e("option",{attrs:{disabled:"",value:""}},[t._v(" Select the application component(s) you would like to backup ")])]},proxy:!0}],null,!0)},"b-form-select",i,!1),a))]}}]),model:{value:t.selectedBackupComponents,callback:function(e){t.selectedBackupComponents=e},expression:"selectedBackupComponents"}})],1)],1),t.components?.length>1?e("b-button",{staticClass:"mr-1",attrs:{variant:"outline-primary"},on:{click:t.addAllTags}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-square"}}),t._v(" Select all ")],1):t._e(),e("b-button",{staticStyle:{"white-space":"nowrap"},attrs:{disabled:0===t.selectedBackupComponents.length||!0===t.backupProgress,variant:"outline-primary"},on:{click:function(e){return t.createBackup(t.appName,t.selectedBackupComponents)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"back"}}),t._v(" Create backup ")],1),e("br"),e("div",{staticClass:"mt-1"},[!0===t.backupProgress?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.backupProgress?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.tarProgress)+" ")],1):t._e()]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()]),t.backupList?.length>0&&!1===t.backupProgress?e("div",[e("div",{staticClass:"mb-1 text-right"},[e("b-dropdown",{staticClass:"mr-1",staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{text:"Select",variant:"outline-primary"},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-square"}}),t._v(" Select ")]},proxy:!0}],null,!1,1960591975)},[e("b-dropdown-item",{attrs:{disabled:t.backupToUpload?.length===t.backupList?.length},on:{click:t.selectAllRows}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"check2-circle"}}),t._v(" Select all ")],1),e("b-dropdown-item",{attrs:{disabled:0===t.backupToUpload?.length},on:{click:t.clearSelected}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"square"}}),t._v(" Select none ")],1)],1),e("b-dropdown",{staticClass:"mr-1",staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{text:"Download",variant:"outline-primary"},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"download"}}),t._v(" Download ")]},proxy:!0}],null,!1,2545655511)},[e("b-dropdown-item",{attrs:{disabled:0===t.backupToUpload?.length},on:{click:function(e){return t.downloadAllBackupFiles(t.backupToUpload)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"download"}}),t._v(" Download selected ")],1),e("b-dropdown-item",{on:{click:function(e){return t.downloadAllBackupFiles(t.backupList)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.7",icon:"download"}}),t._v(" Download all ")],1)],1),e("b-button",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteLocalBackup(null,t.backupList)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"0.9",icon:"trash"}}),t._v(" Remove all ")],1)],1),t.backupList?.length>0?e("b-table",{ref:"selectableTable",staticClass:"mb-0",attrs:{items:t.backupList,fields:[...t.localBackupTableFields,{key:"actions",label:"Actions",thStyle:{width:"5%"},class:"text-center"}],stacked:"md","show-empty":"",bordered:"","select-mode":"multi",selectable:"","selected-variant":"outline-dark",hover:"",small:""},on:{"row-selected":t.onRowSelected},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6"}},[e("b",[t._v(" List of available backups on the local machine (backups are automatically deleted 24 hours after creation) ")])])],1)]},proxy:!0},{key:"cell(create)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.create))+" ")]}},{key:"cell(expire)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.create,!0))+" ")]}},{key:"cell(isActive)",fn:function({rowSelected:s}){return[s?[e("span",{staticStyle:{color:"green"},attrs:{"aria-hidden":"true"}},[e("b-icon",{attrs:{icon:"check-square-fill",scale:"1",variant:"success"}})],1),e("span",{staticClass:"sr-only"},[t._v("Selected")])]:[e("span",{staticStyle:{color:"white"},attrs:{"aria-hidden":"true"}},[e("b-icon",{attrs:{icon:"square",scale:"1",variant:"secondary"}})],1),e("span",{staticClass:"sr-only"},[t._v("Not selected")])]]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove file",expression:"'Remove file'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center mr-1 custom-button",attrs:{id:`delete-local-backup-${s.item.component}_${t.backupList[s.index].create}`,variant:"outline-danger"}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1),e("confirm-dialog",{attrs:{target:`delete-local-backup-${s.item.component}_${t.backupList[s.index].create}`,"confirm-button":"Remove File"},on:{confirm:function(e){return t.deleteLocalBackup(s.item.component,t.backupList,t.backupList[s.index].file)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Download file",expression:"'Download file'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center custom-button",attrs:{variant:"outline-primary"},on:{click:function(e){return t.downloadAllBackupFiles([{component:s.item.component,file:t.backupList[s.index].file}])}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"1",icon:"cloud-arrow-down"}})],1)],1)]}}],null,!1,1174065662)}):t._e(),e("span",{staticStyle:{"font-size":"0.9rem"}},[t._v("Select application component(s) you would like to upload")]),t.showProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgress.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[t.allDownloadsCompleted()?e("span",[t._v(" Download Completed ")]):e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" Downloading... ")],1)]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e(),t.backupList?.length>0?e("div",{staticClass:"mt-2"},[e("div",{staticClass:"mb-2 mt-3",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{attrs:{icon:"gear-fill"}}),t._v(" Choose your storage method")],1)]),e("b-form-radio-group",{attrs:{id:"btn-radios-2",options:t.storageMethod,"button-variant":"outline-primary",name:"radio-btn-outline",disable:t.storageMethod,buttons:""},model:{value:t.selectedStorageMethod,callback:function(e){t.selectedStorageMethod=e},expression:"selectedStorageMethod"}}),"flux"===t.selectedStorageMethod?e("div",[!0===t.sigInPrivilage?e("div",{staticClass:"mb-2"},[e("ul",{staticClass:"mt-2",staticStyle:{"font-size":"0.9rem"}},[e("li",[t._v("Free FluxDrive backups! Up to 10GB total to use per user")]),e("li",[t._v("FluxDrive backups can be downloaded on Restore page")])]),e("b-button",{staticClass:"mt-2",attrs:{disabled:!0===t.uploadProgress||0===t.backupToUpload.length,block:"",variant:"outline-primary"},on:{click:function(e){return t.uploadToFluxDrive()}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"cloud-arrow-up"}}),t._v(" Upload Selected Components To FluxDrive ")],1)],1):t._e(),!1===t.sigInPrivilage?e("b-button",{staticClass:"mt-1 w-100",attrs:{variant:"outline-primary"},on:{click:t.removeAllBackup}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.5",icon:"cloud-arrow-up"}}),t._v(" Export ")],1):t._e()],1):t._e(),"google"===t.selectedStorageMethod?e("div",[e("b-button",{staticClass:"mt-1 w-100",attrs:{variant:"outline-primary"},on:{click:t.removeAllBackup}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.5",icon:"cloud-arrow-up"}}),t._v(" Export ")],1)],1):t._e(),t.showUploadProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgress.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.uploadStatus)+" ")],1)]),t._l(t.computedFileProgress,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e(),t.showFluxDriveProgressBar?e("b-card-text",[e("div",{staticClass:"mt-1"},[t.fileProgressFD.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.fluxDriveUploadStatus)+" ")],1)]),t._l(t.computedFileProgressFD,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e()])]):t._e()],1):t._e()],1):t._e()],1),e("b-tab",{staticStyle:{margin:"0","padding-top":"0px"},attrs:{title:"Restore"},on:{click:t.handleRadioClick}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"cloud-download"}}),t._v(" Select restore method ")],1)]),e("b-form-group",{staticClass:"mb-2"},[e("b-row",[e("b-col",{staticClass:"d-flex align-items-center",staticStyle:{height:"38px"}},[e("b-form-radio-group",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{id:"btn-radios-2",options:t.restoreOptions,disable:t.restoreOptions,"button-variant":"outline-primary",name:"radio-btn-outline",buttons:""},on:{change:t.handleRadioClick},model:{value:t.selectedRestoreOption,callback:function(e){t.selectedRestoreOption=e},expression:"selectedRestoreOption"}})],1),e("b-col",{staticClass:"text-right",staticStyle:{height:"38px"}},["FluxDrive"===t.selectedRestoreOption?e("b-button",{staticStyle:{"max-height":"38px","min-width":"100px","white-space":"nowrap"},attrs:{variant:"outline-success"},on:{click:t.getFluxDriveBackupList}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"arrow-repeat"}}),t._v("Refresh ")],1):t._e()],1)],1)],1),"FluxDrive"===t.selectedRestoreOption?e("div",[!0===t.sigInPrivilage?e("div",[e("div",[e("b-input-group",{staticClass:"mb-2"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"funnel-fill"}})],1),e("b-form-select",{attrs:{options:t.restoreComponents},model:{value:t.nestedTableFilter,callback:function(e){t.nestedTableFilter=e},expression:"nestedTableFilter"}})],1)],1),e("b-table",{key:t.tableBackup,attrs:{items:t.checkpoints,fields:t.backupTableFields,stacked:"md","show-empty":"",bordered:"",small:"","empty-text":"No records available. Please export your backup to FluxDrive.","sort-by":t.sortbackupTableKey,"sort-desc":t.sortbackupTableDesc,"tbody-tr-class":t.rowClassFluxDriveBackups},on:{"update:sortBy":function(e){t.sortbackupTableKey=e},"update:sort-by":function(e){t.sortbackupTableKey=e},"update:sortDesc":function(e){t.sortbackupTableDesc=e},"update:sort-desc":function(e){t.sortbackupTableDesc=e},filtered:t.onFilteredBackup},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-2",attrs:{scale:"1.2",icon:"back"}}),e("b",[t._v("Backups Inventory")])],1)],1)]},proxy:!0},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove Backup(s)",expression:"'Remove Backup(s)'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center mr-1",staticStyle:{width:"15px",height:"25px"},attrs:{id:`remove-checkpoint-${s.item.timestamp}`,variant:"outline-danger"}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1),e("confirm-dialog",{attrs:{target:`remove-checkpoint-${s.item.timestamp}`,"confirm-button":"Remove Backup(s)"},on:{confirm:function(e){return t.deleteRestoreBackup(s.item.component,t.checkpoints,s.item.timestamp)}}}),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Add all to Restore List",expression:"'Add all to Restore List'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-primary"},on:{click:function(e){return t.addAllBackupComponents(s.item.timestamp)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"save"}})],1)],1)]}},{key:"cell(timestamp)",fn:function(s){return[e("kbd",{staticClass:"alert-info no-wrap"},[e("b-icon",{attrs:{scale:"1.2",icon:"hdd"}}),t._v("  backup_"+t._s(s.item.timestamp))],1)]}},{key:"cell(time)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.timestamp))+" ")]}},{key:"row-details",fn:function(s){return[e("b-table",{key:t.tableBackup,staticClass:"backups-table",attrs:{stacked:"md","show-empty":"",bordered:"",hover:"",small:"",items:s.item.components.filter((e=>Object.values(e).some((e=>String(e).toLowerCase().includes(t.nestedTableFilter.toLowerCase()))))),fields:t.componentsTable1},scopedSlots:t._u([{key:"cell(file_url)",fn:function(s){return[e("div",{staticClass:"ellipsis-wrapper"},[e("b-link",{attrs:{href:s.item.file_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(" "+t._s(s.item.file_url)+" ")])],1)]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(i){return[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Add to Restore List",expression:"'Add to Restore List'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{margin:"auto",width:"95px",height:"25px",display:"flex"},attrs:{variant:"outline-primary"},on:{click:function(e){return t.addComponent(i.item,s.item.timestamp)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.7",icon:"plus-lg"}})],1)]}}],null,!0)})]}}],null,!1,1747254148)}),t.newComponents.length>0?e("b-table",{staticClass:"mt-1 backups-table",attrs:{items:t.newComponents,fields:[...t.newComponentsTableFields,{key:"actions",label:"Actions",thStyle:{width:"20%"},class:"text-center"}],stacked:"md","show-empty":"",bordered:"",small:""},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(timestamp)",fn:function(e){return[t._v(" "+t._s(t.formatDateTime(e.item.timestamp))+" ")]}},{key:"cell(file_url)",fn:function(s){return[e("div",{staticClass:"ellipsis-wrapper"},[e("b-link",{attrs:{href:s.item.file_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(" "+t._s(s.item.file_url)+" ")])],1)]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.addAndConvertFileSizes(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"95px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.newComponents)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"3",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-2",attrs:{icon:"hdd",scale:"1.4"}}),t._v(" "+t._s(t.addAndConvertFileSizes(t.totalArchiveFileSize(t.newComponents)))+" ")],1)],1)]},proxy:!0}],null,!1,3243908673)}):t._e(),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopFluxDrive,callback:function(e){t.showTopFluxDrive=e},expression:"showTopFluxDrive"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.newComponents?.length>0&&!t.restoringFromFluxDrive?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.restoreFromFluxDrive(t.newComponents)}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.2"}}),t._v("Restore ")],1):t._e(),!0===t.restoringFromFluxDrive?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.restoringFromFluxDrive?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromFluxDriveStatus)+" ")],1):t._e()])]):t._e()],1):t._e()]):t._e(),"Upload File"===t.selectedRestoreOption?e("div",[e("div",[e("b-input-group",{staticClass:"mb-0"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"folder-plus"}})],1),e("b-form-select",{staticStyle:{"border-radius":"0"},attrs:{options:t.components,disabled:t.remoteFileComponents},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:null,disabled:""}},[t._v(" - Select component - ")])]},proxy:!0}],null,!1,2230972607),model:{value:t.restoreRemoteFile,callback:function(e){t.restoreRemoteFile=e},expression:"restoreRemoteFile"}}),e("b-input-group-append",[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Choose file to upload",expression:"'Choose file to upload'",modifiers:{hover:!0,top:!0}}],attrs:{disabled:null===t.restoreRemoteFile,text:"Button",size:"sm",variant:"outline-primary"},on:{click:t.addRemoteFile}},[e("b-icon",{attrs:{icon:"cloud-arrow-up",scale:"1.5"}})],1)],1)],1)],1),e("div",[e("input",{ref:"fileselector",staticClass:"flux-share-upload-input",staticStyle:{display:"none"},attrs:{id:"file-selector",type:"file"},on:{input:t.handleFiles}})]),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopUpload,callback:function(e){t.showTopUpload=e},expression:"showTopUpload"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.files?.length>0?e("div",{staticClass:"d-flex justify-content-between mt-2"},[e("b-table",{staticClass:"b-table",attrs:{small:"",bordered:"",size:"sm",items:t.files,fields:t.computedRestoreUploadFileFields},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(file)",fn:function(s){return[e("div",{staticClass:"table-cell"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(file_size)",fn:function(s){return[e("div",{staticClass:"table-cell no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.value))+" ")])]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.files,s.item.file,"upload")}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"2",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"hdd",scale:"1.4"}}),t._v(t._s(t.addAndConvertFileSizes(t.files))+" ")],1)],1)]},proxy:!0}],null,!1,1264712967)})],1):t._e(),e("div",{staticClass:"mt-2"},[t.restoreFromUpload?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px","text-align":"center"}},[t.restoreFromUpload?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromUploadStatus)+" ")],1):t._e()]),t._l(t.files,(function(s){return s.uploading?e("div",{key:s.file_name,staticClass:"upload-item mb-1"},[e("div",{class:s.uploading?"":"hidden"},[t._v(" "+t._s(s.file_name)+" ")]),e("b-progress",{attrs:{max:"100",height:"15px"}},[e("b-progress-bar",{class:s.uploading?"":"hidden",attrs:{value:s.progress,label:`${s.progress.toFixed(2)}%`}})],1)],1):t._e()}))],2):t._e()]),t.files?.length>0&&""===t.restoreFromUploadStatus?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.startUpload()}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.1"}}),t._v("Restore ")],1):t._e()],1):t._e(),"Remote URL"===t.selectedRestoreOption?e("div",[e("div",[e("b-input-group",{staticClass:"mb-0"},[e("b-input-group-prepend",{attrs:{"is-text":""}},[e("b-icon",{attrs:{icon:"globe"}})],1),e("b-form-input",{attrs:{state:t.urlValidationState,type:"url",placeholder:"Enter the URL for your remote backup archive",required:""},model:{value:t.restoreRemoteUrl,callback:function(e){t.restoreRemoteUrl=e},expression:"restoreRemoteUrl"}}),e("b-input-group-append",[e("b-form-select",{staticStyle:{"border-radius":"0"},attrs:{options:t.components,disabled:t.remoteUrlComponents},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:null,disabled:""}},[t._v(" - Select component - ")])]},proxy:!0}],null,!1,2230972607),model:{value:t.restoreRemoteUrlComponent,callback:function(e){t.restoreRemoteUrlComponent=e},expression:"restoreRemoteUrlComponent"}})],1),e("b-input-group-append",[e("b-button",{attrs:{disabled:null===t.restoreRemoteUrlComponent,size:"sm",variant:"outline-primary"},on:{click:function(e){return t.addRemoteUrlItem(t.appName,t.restoreRemoteUrlComponent)}}},[e("b-icon",{attrs:{scale:"0.8",icon:"plus-lg"}})],1)],1)],1),e("b-form-invalid-feedback",{staticClass:"mb-2",attrs:{state:t.urlValidationState}},[t._v(" "+t._s(t.urlValidationMessage)+" ")])],1),e("b-alert",{staticClass:"mt-1 rounded-0 d-flex align-items-center justify-content-center",staticStyle:{"z-index":"1000"},attrs:{variant:t.alertVariant,solid:"true",dismissible:""},model:{value:t.showTopRemote,callback:function(e){t.showTopRemote=e},expression:"showTopRemote"}},[e("h5",{staticClass:"mt-1 mb-1"},[t._v(" "+t._s(t.alertMessage)+" ")])]),t.restoreRemoteUrlItems?.length>0?e("div",{staticClass:"d-flex justify-content-between mt-2"},[e("b-table",{staticClass:"b-table",attrs:{small:"",bordered:"",size:"sm",items:t.restoreRemoteUrlItems,fields:t.computedRestoreRemoteURLFields},scopedSlots:t._u([{key:"thead-top",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-center",attrs:{colspan:"6",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"life-preserver"}}),e("b",[t._v("Restore Overview")])],1)],1)]},proxy:!0},{key:"cell(url)",fn:function(s){return[e("div",{staticClass:"table-cell no"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(component)",fn:function(s){return[e("div",{staticClass:"table-cell"},[t._v(" "+t._s(s.value)+" ")])]}},{key:"cell(file_size)",fn:function(s){return[e("div",{staticClass:"table-cell no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.value))+" ")])]}},{key:"cell(actions)",fn:function(s){return[e("div",{staticClass:"d-flex justify-content-center align-items-center"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Remove restore job",expression:"'Remove restore job'",modifiers:{hover:!0,top:!0}}],staticClass:"d-flex justify-content-center align-items-center",staticStyle:{width:"15px",height:"25px"},attrs:{variant:"outline-danger"},on:{click:function(e){return t.deleteItem(s.index,t.restoreRemoteUrlItems)}}},[e("b-icon",{staticClass:"d-flex justify-content-center align-items-center",attrs:{scale:"0.9",icon:"trash"}})],1)],1)]}},{key:"custom-foot",fn:function(){return[e("b-tr",[e("b-td",{staticClass:"text-right",attrs:{colspan:"2",variant:"dark"}}),e("b-td",{staticStyle:{"text-align":"center","vertical-align":"middle"},attrs:{colspan:"2",variant:"dark"}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"hdd",scale:"1.4"}}),t._v(t._s(t.addAndConvertFileSizes(t.restoreRemoteUrlItems))+" ")],1)],1)]},proxy:!0}],null,!1,2584524300)})],1):t._e(),e("div",{staticClass:"mt-2"},[!0===t.downloadingFromUrl?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[!0===t.downloadingFromUrl?e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" "+t._s(t.restoreFromRemoteURLStatus)+" ")],1):t._e()])]):t._e()]),t.restoreRemoteUrlItems?.length>0&&""===t.restoreFromRemoteURLStatus?e("b-button",{staticClass:"mt-2",attrs:{block:"",variant:"outline-primary"},on:{click:function(e){return t.restoreFromRemoteFile(t.appName)}}},[e("b-icon",{staticClass:"mr-1",attrs:{icon:"arrow-clockwise",scale:"1.1"}}),t._v("Restore ")],1):t._e()],1):t._e()],1)],1)],1)],1)]),e("b-tab",{attrs:{title:"Interactive Terminal"}},[e("div",{staticClass:"text-center"},[e("div",[e("b-card-group",{attrs:{deck:""}},[e("b-card",{attrs:{"header-tag":"header"}},[e("div",{staticClass:"mb-2",staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","text-align":"left","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"terminal"}}),t._v(" Browser-based Interactive Terminal ")],1)]),e("div",{staticClass:"d-flex align-items-center"},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.appSpecification?.compose,expression:"appSpecification?.compose"}],staticClass:"mr-4"},[e("b-form-select",{attrs:{options:null,disabled:!!t.isVisible||t.isComposeSingle},model:{value:t.selectedApp,callback:function(e){t.selectedApp=e},expression:"selectedApp"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification?.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2)],1),e("div",{staticClass:"mr-4"},[e("b-form-select",{attrs:{options:t.options,disabled:!!t.isVisible},on:{input:t.onSelectChangeCmd},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{option:null,value:null,disabled:""}},[t._v(" -- Please select command -- ")])]},proxy:!0}]),model:{value:t.selectedCmd,callback:function(e){t.selectedCmd=e},expression:"selectedCmd"}})],1),t.isVisible||t.isConnecting?t._e():e("b-button",{staticClass:"col-2 no-wrap-limit",attrs:{href:"#",variant:"outline-primary"},on:{click:function(e){return t.connectTerminal(t.selectedApp?`${t.selectedApp}_${t.appSpecification.name}`:t.appSpecification.name)}}},[t._v(" Connect ")]),t.isVisible?e("b-button",{staticClass:"col-2 no-wrap-limit",attrs:{variant:"outline-danger"},on:{click:t.disconnectTerminal}},[t._v(" Disconnect ")]):t._e(),t.isConnecting?e("b-button",{staticClass:"col-2 align-items-center justify-content-center",attrs:{variant:"outline-primary",disabled:""}},[e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner",{staticClass:"mr-1",attrs:{small:""}}),t._v(" Connecting... ")],1)]):t._e(),e("div",{staticClass:"ml-auto mt-1"},[e("div",{staticClass:"ml-auto d-flex"},[e("b-form-checkbox",{staticClass:"ml-4 mr-1 d-flex align-items-center justify-content-center",attrs:{switch:"",disabled:!!t.isVisible},on:{input:t.onSelectChangeUser},model:{value:t.enableUser,callback:function(e){t.enableUser=e},expression:"enableUser"}},[e("div",{staticClass:"d-flex",staticStyle:{"font-size":"14px"}},[t._v(" User ")])]),e("b-form-checkbox",{staticClass:"ml-2 d-flex align-items-center justify-content-center",attrs:{switch:"",disabled:!!t.isVisible},on:{input:t.onSelectChangeEnv},model:{value:t.enableEnvironment,callback:function(e){t.enableEnvironment=e},expression:"enableEnvironment"}},[e("div",{staticClass:"d-flex",staticStyle:{"font-size":"14px"}},[t._v(" Environment ")])])],1)])],1),"Custom"!==t.selectedCmd||t.isVisible?t._e():e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter custom command (string)"},model:{value:t.customValue,callback:function(e){t.customValue=e},expression:"customValue"}})],1),t.enableUser&&!t.isVisible?e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter user. Format is one of: user, user:group, uid, or uid:gid."},model:{value:t.userInputValue,callback:function(e){t.userInputValue=e},expression:"userInputValue"}})],1):t._e(),t.enableEnvironment&&!t.isVisible?e("div",{staticClass:"d-flex mt-1"},[e("b-form-input",{style:{width:"100%"},attrs:{placeholder:"Enter environment parameters (string)"},model:{value:t.envInputValue,callback:function(e){t.envInputValue=e},expression:"envInputValue"}})],1):t._e(),e("div",{staticClass:"d-flex align-items-center mb-1"},[t.isVisible?e("div",{staticClass:"mt-2"},["Custom"!==t.selectedCmd?[e("span",{staticStyle:{"font-weight":"bold"}},[t._v("Exec into container")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedApp||t.appSpecification.name))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("using command")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedOptionText))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("as")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.userInputValue?t.userInputValue:"default user"))])]:[e("span",{staticStyle:{"font-weight":"bold"}},[t._v("Exec into container")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.selectedApp||t.appSpecification.name))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("using custom command")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.customValue))]),e("span",{staticStyle:{"font-weight":"bold"}},[t._v("as")]),e("span",{style:t.selectedOptionTextStyle},[t._v(t._s(t.userInputValue?t.userInputValue:"default user"))])]],2):t._e()])])],1),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isVisible,expression:"isVisible"}],ref:"terminalElement",staticStyle:{"text-align":"left","border-radius":"6px",border:"1px solid #e1e4e8",overflow:"hidden"}})],1)]),e("div",[e("b-card",{staticClass:"mt-1"},[e("div",{staticClass:"mb-2",staticStyle:{display:"flex","justify-content":"space-between","align-items":"center",border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"15px 15px 10px 15px","text-align":"left","line-height":"0"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.2",icon:"server"}}),t._v(" Volume browser ")],1),t.selectedAppVolume||!t.appSpecification?.compose?e("div",{staticClass:"d-flex justify-content-center align-items-center no-wrap",staticStyle:{"margin-bottom":"7px"}},[e("b-progress",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.html.left",value:{id:"my-id",content:t.tooltipContent,title:t.tooltipContent},expression:"{\n id: 'my-id', content: tooltipContent, title: tooltipContent,\n }",modifiers:{hover:!0,html:!0,left:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.12)",expression:"'rgba(255, 255, 255, 0.12)'",modifiers:{400:!0}}],staticClass:"progress-container",attrs:{value:t.usagePercentage,max:100,variant:t.getProgressVariant()}},[e("b-progress-bar",{attrs:{value:t.usagePercentage}}),e("div",{staticClass:"progress-center-text"},[t._v(" "+t._s(t.usagePercentage.toFixed(2))+"% ")])],1)],1):t._e()]),e("div",{staticClass:"mr-4 d-flex",class:{"mb-2":t.appSpecification&&t.appSpecification.compose},staticStyle:{"max-width":"250px"}},[e("b-form-select",{directives:[{name:"show",rawName:"v-show",value:t.appSpecification?.compose,expression:"appSpecification?.compose"}],attrs:{options:null,disabled:t.isComposeSingle},on:{change:t.refreshFolderSwitch},model:{value:t.selectedAppVolume,callback:function(e){t.selectedAppVolume=e},expression:"selectedAppVolume"}},[e("b-form-select-option",{attrs:{value:"null",disabled:""}},[t._v(" -- Please select component -- ")]),t._l(t.appSpecification.compose,(function(s){return e("b-form-select-option",{key:s.name,attrs:{value:s.name}},[t._v(" "+t._s(s.name)+" ")])}))],2)],1),t.fileProgressVolume.length>0?e("div",{staticClass:"mb-2 mt-2 w-100",staticStyle:{margin:"0 auto",padding:"12px",border:"1px solid #eaeaea","border-radius":"8px","box-shadow":"0 4px 8px rgba(0, 0, 0, 0.1)","text-align":"center"}},[e("h5",{staticStyle:{"font-size":"16px","margin-bottom":"5px"}},[t.allDownloadsCompletedVolume()?e("span",[t._v(" Download Completed ")]):e("span",[e("b-spinner",{attrs:{small:""}}),t._v(" Downloading... ")],1)]),t._l(t.computedFileProgressVolume,(function(s,i){return s.progress>0?e("b-progress",{key:i,staticClass:"mt-1",staticStyle:{height:"16px"},attrs:{max:100}},[e("b-progress-bar",{staticStyle:{"font-size":"14px"},attrs:{value:s.progress,label:`${s.fileName} - ${s.progress.toFixed(2)}%`}})],1):t._e()}))],2):t._e(),e("div",[t.selectedAppVolume||!t.appSpecification?.compose?e("b-button-toolbar",{staticClass:"mb-1 w-100",attrs:{justify:""}},[e("div",{staticClass:"d-flex flex-row w-100"},[e("b-input-group",{staticClass:"w-100 mr-2"},[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{attrs:{icon:"house-fill"}})],1)],1),e("b-form-input",{staticClass:"text-secondary",staticStyle:{"font-weight":"bold","font-size":"1.0em"},model:{value:t.inputPathValue,callback:function(e){t.inputPathValue=e},expression:"inputPathValue"}})],1),e("b-button-group",{attrs:{size:"sm"}}),e("b-button-group",{staticClass:"ml-auto",attrs:{size:"sm"}},[e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){return t.refreshFolder()}}},[e("v-icon",{attrs:{name:"redo-alt"}})],1),e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){t.uploadFilesDialog=!0}}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("b-button",{attrs:{variant:"outline-primary"},on:{click:function(e){t.createDirectoryDialogVisible=!0}}},[e("v-icon",{attrs:{name:"folder-plus"}})],1),e("b-modal",{attrs:{title:"Create Folder",size:"lg",centered:"","ok-only":"","ok-title":"Create Folder","header-bg-variant":"primary"},on:{ok:function(e){return t.createFolder(t.newDirName)}},model:{value:t.createDirectoryDialogVisible,callback:function(e){t.createDirectoryDialogVisible=e},expression:"createDirectoryDialogVisible"}},[e("b-form-group",{attrs:{label:"Folder Name","label-for":"folderNameInput"}},[e("b-form-input",{attrs:{id:"folderNameInput",size:"lg",placeholder:"New Folder Name"},model:{value:t.newDirName,callback:function(e){t.newDirName=e},expression:"newDirName"}})],1)],1),e("b-modal",{attrs:{title:"Upload Files",size:"lg","header-bg-variant":"primary",centered:"","hide-footer":""},on:{close:function(e){return t.refreshFolder()}},model:{value:t.uploadFilesDialog,callback:function(e){t.uploadFilesDialog=e},expression:"uploadFilesDialog"}},[e("file-upload",{attrs:{"upload-folder":t.getUploadFolder(),headers:t.zelidHeader},on:{complete:t.refreshFolder}})],1)],1)],1)]):t._e(),t.selectedAppVolume||!t.appSpecification?.compose?e("b-table",{staticClass:"fluxshare-table",attrs:{hover:"",responsive:"",small:"",outlined:"",size:"sm",items:t.folderContentFilter,fields:t.fields,busy:t.loadingFolder,"sort-compare":t.sort,"sort-by":"name","show-empty":"","empty-text":"Directory is empty."},scopedSlots:t._u([{key:"table-busy",fn:function(){return[e("div",{staticClass:"text-center text-danger my-2"},[e("b-spinner",{staticClass:"align-middle mx-2"}),e("strong",[t._v("Loading...")])],1)]},proxy:!0},{key:"head(name)",fn:function(e){return[t._v(" "+t._s(e.label.toUpperCase())+" ")]}},{key:"cell(name)",fn:function(s){return[s.item.symLink?e("div",[e("b-link",{on:{click:function(e){return t.changeFolder(s.item.name)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"folder-symlink"}}),t._v(" "+t._s(s.item.name)+" ")],1)],1):t._e(),s.item.isDirectory?e("div",[e("b-link",{on:{click:function(e){return t.changeFolder(s.item.name)}}},[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"folder"}}),t._v(" "+t._s(s.item.name)+" ")],1)],1):e("div",[s.item.symLink?t._e():e("div",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"file-earmark"}}),t._v(" "+t._s(s.item.name)+" ")],1)])]}},{key:"cell(modifiedAt)",fn:function(s){return[s.item.isUpButton?t._e():e("div",{staticClass:"no-wrap"},[t._v(" "+t._s(new Date(s.item.modifiedAt).toLocaleString("en-GB",t.timeoptions))+" ")])]}},{key:"cell(type)",fn:function(s){return[s.item.isUpButton?t._e():e("div",[s.item.isDirectory?e("div",[t._v(" Folder ")]):s.item.isFile||s.item.isSymbolicLink?e("div",[t._v(" File ")]):e("div",[t._v(" Other ")])])]}},{key:"cell(size)",fn:function(s){return[s.item.size>0&&!s.item.isUpButton?e("div",{staticClass:"no-wrap"},[t._v(" "+t._s(t.addAndConvertFileSizes(s.item.size))+" ")]):t._e()]}},{key:"cell(actions)",fn:function(s){return[s.item.isUpButton?t._e():e("b-button-group",{attrs:{size:"sm"}},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:s.item.isFile?"Download":"Download zip of folder",expression:"data.item.isFile ? 'Download' : 'Download zip of folder'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`download-${s.item.name}`,variant:"outline-secondary"}},[e("v-icon",{attrs:{name:s.item.isFile?"file-download":"file-archive"}})],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Rename",expression:"'Rename'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`rename-${s.item.name}`,variant:"outline-secondary"},on:{click:function(e){return t.rename(s.item.name)}}},[e("v-icon",{attrs:{name:"edit"}})],1),e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Delete",expression:"'Delete'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],attrs:{id:`delete-${s.item.name}`,variant:"outline-secondary"}},[e("v-icon",{attrs:{name:"trash-alt"}})],1),e("confirm-dialog",{attrs:{target:`delete-${s.item.name}`,"confirm-button":s.item.isFile?"Delete File":"Delete Folder"},on:{confirm:function(e){return t.deleteFile(s.item.name)}}})],1),e("confirm-dialog",{attrs:{target:`download-${s.item.name}`,"confirm-button":s.item.isFile?"Download File":"Download Folder"},on:{confirm:function(e){s.item.isFile?t.download(s.item.name):t.download(s.item.name,!0,s.item.size)}}}),e("b-modal",{attrs:{title:"Rename",size:"lg",centered:"","ok-only":"","ok-title":"Rename"},on:{ok:function(e){return t.confirmRename()}},model:{value:t.renameDialogVisible,callback:function(e){t.renameDialogVisible=e},expression:"renameDialogVisible"}},[e("b-form-group",{attrs:{label:"Name","label-for":"nameInput"}},[e("b-form-input",{attrs:{id:"nameInput",size:"lg",placeholder:"Name"},model:{value:t.newName,callback:function(e){t.newName=e},expression:"newName"}})],1)],1)]}}],null,!1,3040013154)}):t._e()],1)])],1)]),t.windowWidth>860?e("b-tab",{attrs:{title:"Global App Management",disabled:""}}):t._e(),e("b-tab",{attrs:{title:"Global Control"}},[t.globalZelidAuthorized?e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Control"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" "+t._s(t.isAppOwner?"General options to control all instances of your application":"General options to control instances of selected application running on all nodes that you own")+" ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"start-app-global",variant:"success","aria-label":"Start App"}},[t._v(" Start App ")]),e("confirm-dialog",{attrs:{target:"start-app-global","confirm-button":"Start App"},on:{confirm:function(e){return t.startAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"stop-app-global",variant:"success","aria-label":"Stop App"}},[t._v(" Stop App ")]),e("confirm-dialog",{attrs:{target:"stop-app-global","confirm-button":"Stop App"},on:{confirm:function(e){return t.stopAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"restart-app-global",variant:"success","aria-label":"Restart App"}},[t._v(" Restart App ")]),e("confirm-dialog",{attrs:{target:"restart-app-global","confirm-button":"Restart App"},on:{confirm:function(e){return t.restartAppGlobally(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Pause"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" "+t._s(t.isAppOwner?"The Pause command suspends all processes of all instances of your app":"The Pause command suspends all processes of selected application on all of nodes that you own")+" ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"pause-app-global",variant:"success","aria-label":"Pause App"}},[t._v(" Pause App ")]),e("confirm-dialog",{attrs:{target:"pause-app-global","confirm-button":"Pause App"},on:{confirm:function(e){return t.pauseAppGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"unpause-app-global",variant:"success","aria-label":"Unpause App"}},[t._v(" Unpause App ")]),e("confirm-dialog",{attrs:{target:"unpause-app-global","confirm-button":"Unpause App"},on:{confirm:function(e){return t.unpauseAppGlobally(t.appName)}}})],1)],1)],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Redeploy"}},[e("b-card-text",{staticClass:"mb-2"},[e("div",{staticClass:"text-danger"},[t._v(" Warning: This will be executed on all your aplications instances accross the network ")]),t._v(" Reinstall your application from the docker repo. Soft option, keeps data on the instance, Hard option deletes everything and gets installed like a fresh install. Using hard option, if app uses syncthing it can takes up to 30m to be up and running on all instances. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-soft-global",variant:"success","aria-label":"Soft Redeploy App"}},[t._v(" Soft Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-soft-global","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppSoftGlobally(t.appName)}}}),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"redeploy-app-hard-global",variant:"success","aria-label":"Hard Redeploy App"}},[t._v(" Hard Reinstall ")]),e("confirm-dialog",{attrs:{target:"redeploy-app-hard-global","confirm-button":"Redeploy"},on:{confirm:function(e){return t.redeployAppHardGlobally(t.appName)}}})],1)],1)],1),e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Fresh Start?"}},[e("b-card-text",{staticClass:"mb-2"},[t._v(" All your app instances are uninstalled and are after installed on new Flux Nodes. All app data will be delete. ")]),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mx-1 my-1",attrs:{id:"remove-app-global",variant:"success","aria-label":"Reinstall App"}},[t._v(" Get New Instances ")]),e("confirm-dialog",{attrs:{target:"remove-app-global","confirm-button":"Reinstall App"},on:{confirm:function(e){return t.removeAppGlobally(t.appName)}}})],1)],1)],1)],1)],1):e("div",[t._v(" Global management session expired. Please log out and back into FluxOS. ")])]),e("b-tab",{attrs:{title:"Running Instances"}},[t.masterSlaveApp?e("div",[e("b-card",{attrs:{title:"Primary/Standby App Information"}},[e("list-entry",{attrs:{title:"Current IP selected as Primary running your application",data:t.masterIP}})],1)],1):t._e(),e("b-row",[e("b-col",[e("div",{staticClass:"map_m"},[e("flux-map",{staticClass:"mb-0",attrs:{"show-all":!1,"filter-nodes":t.mapLocations}})],1)])],1),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.instances.pageOptions},model:{value:t.instances.perPage,callback:function(e){t.$set(t.instances,"perPage",e)},expression:"instances.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.instances.filter,callback:function(e){t.$set(t.instances,"filter",e)},expression:"instances.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.instances.filter},on:{click:function(e){t.instances.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{key:t.tableKey,staticClass:"app-instances-table",attrs:{striped:"",hover:"",outlined:"",responsive:"","sort-icon-left":"",busy:t.isBusy,"per-page":t.instances.perPage,"current-page":t.instances.currentPage,items:t.instances.data,fields:t.instances.fields,"sort-by":t.instances.sortBy,"sort-desc":t.instances.sortDesc,"sort-direction":t.instances.sortDirection,filter:t.instances.filter,"show-empty":"","empty-text":`No instances of ${t.appName}`},on:{"update:sortBy":function(e){return t.$set(t.instances,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.instances,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.instances,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.instances,"sortDesc",e)}},scopedSlots:t._u([{key:"table-busy",fn:function(){return[e("div",{staticClass:"text-center text-danger my-2"},[e("b-spinner",{staticClass:"align-middle mr-1"}),e("strong",[t._v("Loading geolocation...")])],1)]},proxy:!0},{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{staticClass:"ml-2",attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{staticClass:"ml-2",attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[s.item.broadcastedAt?e("list-entry",{attrs:{title:"Broadcast",data:new Date(s.item.broadcastedAt).toLocaleString("en-GB",t.timeoptions.shortDate)}}):t._e(),s.item.expireAt?e("list-entry",{attrs:{title:"Expires",data:new Date(s.item.expireAt).toLocaleString("en-GB",t.timeoptions.shortDate)}}):t._e()],1)]}},{key:"cell(visit)",fn:function(s){return[e("div",{staticClass:"button-cell"},[e("b-button",{staticClass:"mr-1",attrs:{size:"sm",variant:"outline-secondary"},on:{click:function(e){t.openApp(s.item.name,s.item.ip.split(":")[0],t.getProperPort())}}},[t._v(" App ")]),e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"outline-primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" FluxNode ")])],1)]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0 mt-1",attrs:{"total-rows":t.instances.totalRows,"per-page":t.instances.perPage,align:"center",size:"sm"},model:{value:t.instances.currentPage,callback:function(e){t.$set(t.instances,"currentPage",e)},expression:"instances.currentPage"}})],1)],1)],1),e("b-tab",{attrs:{title:"Update/Renew",disabled:!t.isAppOwner}},[t.fluxCommunication?t._e():e("div",{staticClass:"text-danger"},[t._v(" Warning: Connected Flux is not communicating properly with Flux network ")]),e("div",{staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"ui-checks-grid"}}),t._v(" Update Application Specifications / Extend subscription ")],1)]),e("div",{staticClass:"form-row form-group"},[e("b-input-group",{staticClass:"mt-2"},[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"plus-square"}}),t._v(" Update Specifications "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if you want to change your application specifications",expression:"'Select if you want to change your application specifications'",modifiers:{hover:!0,top:!0}}],staticClass:"ml-1",attrs:{name:"info-circle"}})],1)],1),e("b-input-group-append",{attrs:{"is-text":""}},[e("b-form-checkbox",{staticClass:"custom-control-primary",attrs:{id:"updateSpecifications",switch:""},model:{value:t.updateSpecifications,callback:function(e){t.updateSpecifications=e},expression:"updateSpecifications"}})],1)],1)],1),t.updateSpecifications?e("div",[t.appUpdateSpecification.version>=4?e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6"}},[e("b-card",{attrs:{title:"Details"}},[e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Version","label-for":"version"}},[e("b-form-input",{attrs:{id:"version",placeholder:t.appUpdateSpecification.version.toString(),readonly:""},model:{value:t.appUpdateSpecification.version,callback:function(e){t.$set(t.appUpdateSpecification,"version",e)},expression:"appUpdateSpecification.version"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Name","label-for":"name"}},[e("b-form-input",{attrs:{id:"name",placeholder:"Application Name",readonly:""},model:{value:t.appUpdateSpecification.name,callback:function(e){t.$set(t.appUpdateSpecification,"name",e)},expression:"appUpdateSpecification.name"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Desc.","label-for":"desc"}},[e("b-form-textarea",{attrs:{id:"desc",placeholder:"Description",rows:"3"},model:{value:t.appUpdateSpecification.description,callback:function(e){t.$set(t.appUpdateSpecification,"description",e)},expression:"appUpdateSpecification.description"}})],1),e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Owner","label-for":"owner"}},[e("b-form-input",{attrs:{id:"owner",placeholder:"Flux ID of Application Owner"},model:{value:t.appUpdateSpecification.owner,callback:function(e){t.$set(t.appUpdateSpecification,"owner",e)},expression:"appUpdateSpecification.owner"}})],1),t.appUpdateSpecification.version>=5&&!t.isPrivateApp?e("div",[e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-1 col-form-label"},[t._v(" Contacts "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of emails Contacts to get notifications ex. app about to expire, app spawns. Contacts are also PUBLIC information.",expression:"'Array of strings of emails Contacts to get notifications ex. app about to expire, app spawns. Contacts are also PUBLIC information.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"contacs"},model:{value:t.appUpdateSpecification.contacts,callback:function(e){t.$set(t.appUpdateSpecification,"contacts",e)},expression:"appUpdateSpecification.contacts"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Contacts to Flux Storage. Contacts will be replaced with a link to Flux Storage instead. This increases maximum allowed contacts while adding enhanced privacy - nobody except FluxOS Team maintaining notifications system has access to contacts.",expression:"\n 'Uploads Contacts to Flux Storage. Contacts will be replaced with a link to Flux Storage instead. This increases maximum allowed contacts while adding enhanced privacy - nobody except FluxOS Team maintaining notifications system has access to contacts.'\n ",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-contacts",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-contacts","confirm-button":"Upload Contacts",width:600},on:{confirm:function(e){return t.uploadContactsToFluxStorage()}}})],1)])]):t._e(),t.appUpdateSpecification.version>=5&&!t.isPrivateApp?e("div",[e("h4",[t._v("Allowed Geolocation")]),t._l(t.numberOfGeolocations,(function(s){return e("div",{key:`${s}pos`},[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Continent - ${s}`,"label-for":"Continent"}},[e("b-form-select",{attrs:{id:"Continent",options:t.continentsOptions(!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Continent -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedContinent${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedContinent${s}`,e)},expression:"allowedGeolocations[`selectedContinent${n}`]"}})],1),t.allowedGeolocations[`selectedContinent${s}`]&&"ALL"!==t.allowedGeolocations[`selectedContinent${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Country - ${s}`,"label-for":"Country"}},[e("b-form-select",{attrs:{id:"country",options:t.countriesOptions(t.allowedGeolocations[`selectedContinent${s}`],!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Country -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedCountry${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedCountry${s}`,e)},expression:"allowedGeolocations[`selectedCountry${n}`]"}})],1):t._e(),t.allowedGeolocations[`selectedContinent${s}`]&&"ALL"!==t.allowedGeolocations[`selectedContinent${s}`]&&t.allowedGeolocations[`selectedCountry${s}`]&&"ALL"!==t.allowedGeolocations[`selectedCountry${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Region - ${s}`,"label-for":"Region"}},[e("b-form-select",{attrs:{id:"Region",options:t.regionsOptions(t.allowedGeolocations[`selectedContinent${s}`],t.allowedGeolocations[`selectedCountry${s}`],!1)},on:{change:function(e){return t.adjustMaxInstancesPossible()}},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to restrict Region -- ")])]},proxy:!0}],null,!0),model:{value:t.allowedGeolocations[`selectedRegion${s}`],callback:function(e){t.$set(t.allowedGeolocations,`selectedRegion${s}`,e)},expression:"allowedGeolocations[`selectedRegion${n}`]"}})],1):t._e()],1)})),e("div",{staticClass:"text-center"},[t.numberOfGeolocations>1?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Remove Allowed Geolocation Restriction",expression:"'Remove Allowed Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfGeolocations=t.numberOfGeolocations-1,t.adjustMaxInstancesPossible()}}},[e("v-icon",{attrs:{name:"minus"}})],1):t._e(),t.numberOfGeolocations<5?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Add Allowed Geolocation Restriction",expression:"'Add Allowed Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfGeolocations=t.numberOfGeolocations+1,t.adjustMaxInstancesPossible()}}},[e("v-icon",{attrs:{name:"plus"}})],1):t._e()],1)],2):t._e(),e("br"),e("br"),t.appUpdateSpecification.version>=5?e("div",[e("h4",[t._v("Forbidden Geolocation")]),t._l(t.numberOfNegativeGeolocations,(function(s){return e("div",{key:`${s}posB`},[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Continent - ${s}`,"label-for":"Continent"}},[e("b-form-select",{attrs:{id:"Continent",options:t.continentsOptions(!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Continent -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedContinent${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedContinent${s}`,e)},expression:"forbiddenGeolocations[`selectedContinent${n}`]"}})],1),t.forbiddenGeolocations[`selectedContinent${s}`]&&"NONE"!==t.forbiddenGeolocations[`selectedContinent${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Country - ${s}`,"label-for":"Country"}},[e("b-form-select",{attrs:{id:"country",options:t.countriesOptions(t.forbiddenGeolocations[`selectedContinent${s}`],!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Country -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedCountry${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedCountry${s}`,e)},expression:"forbiddenGeolocations[`selectedCountry${n}`]"}})],1):t._e(),t.forbiddenGeolocations[`selectedContinent${s}`]&&"NONE"!==t.forbiddenGeolocations[`selectedContinent${s}`]&&t.forbiddenGeolocations[`selectedCountry${s}`]&&"ALL"!==t.forbiddenGeolocations[`selectedCountry${s}`]?e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"1",label:`Region - ${s}`,"label-for":"Region"}},[e("b-form-select",{attrs:{id:"Region",options:t.regionsOptions(t.forbiddenGeolocations[`selectedContinent${s}`],t.forbiddenGeolocations[`selectedCountry${s}`],!0)},scopedSlots:t._u([{key:"first",fn:function(){return[e("b-form-select-option",{attrs:{value:void 0,disabled:""}},[t._v(" -- Select to ban Region -- ")])]},proxy:!0}],null,!0),model:{value:t.forbiddenGeolocations[`selectedRegion${s}`],callback:function(e){t.$set(t.forbiddenGeolocations,`selectedRegion${s}`,e)},expression:"forbiddenGeolocations[`selectedRegion${n}`]"}})],1):t._e()],1)})),e("div",{staticClass:"text-center"},[t.numberOfNegativeGeolocations>1?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Remove Forbidden Geolocation Restriction",expression:"'Remove Forbidden Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfNegativeGeolocations=t.numberOfNegativeGeolocations-1}}},[e("v-icon",{attrs:{name:"minus"}})],1):t._e(),t.numberOfNegativeGeolocations<5?e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.bottom",value:"Add Forbidden Geolocation Restriction",expression:"'Add Forbidden Geolocation Restriction'",modifiers:{hover:!0,bottom:!0}},{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"m-1",attrs:{variant:"outline-secondary",size:"sm"},on:{click:function(e){t.numberOfNegativeGeolocations=t.numberOfNegativeGeolocations+1}}},[e("v-icon",{attrs:{name:"plus"}})],1):t._e()],1)],2):t._e(),e("br"),t.appUpdateSpecification.version>=3?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Instances","label-for":"instances"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.instances)+" ")]),e("b-form-input",{attrs:{id:"instances",placeholder:"Minimum number of application instances to be spawned",type:"range",min:"3",max:t.maxInstances,step:"1"},model:{value:t.appUpdateSpecification.instances,callback:function(e){t.$set(t.appUpdateSpecification,"instances",e)},expression:"appUpdateSpecification.instances"}})],1):t._e(),t.appUpdateSpecification.version>=7?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Static IP "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if your application strictly requires static IP address",expression:"'Select if your application strictly requires static IP address'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"staticip",switch:""},model:{value:t.appUpdateSpecification.staticip,callback:function(e){t.$set(t.appUpdateSpecification,"staticip",e)},expression:"appUpdateSpecification.staticip"}})],1)]):t._e(),e("br"),t.appUpdateSpecification.version>=7?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Enterprise Application "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if your application requires private image, secrets or if you want to target specific nodes on which application can run. Geolocation targetting is not possible in this case.",expression:"'Select if your application requires private image, secrets or if you want to target specific nodes on which application can run. Geolocation targetting is not possible in this case.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"enterpriseapp",switch:""},model:{value:t.isPrivateApp,callback:function(e){t.isPrivateApp=e},expression:"isPrivateApp"}})],1)]):t._e()],1)],1)],1),t._l(t.appUpdateSpecification.compose,(function(s,i){return e("b-card",{key:i},[e("b-card-title",[t._v(" Component "+t._s(s.name)+" ")]),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",[e("b-card-title",[t._v(" General ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Name "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Name of Application Component",expression:"'Name of Application Component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Component name",readonly:""},model:{value:s.name,callback:function(e){t.$set(s,"name",e)},expression:"component.name"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Description "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Description of Application Component",expression:"'Description of Application Component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Component description"},model:{value:s.description,callback:function(e){t.$set(s,"description",e)},expression:"component.description"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Repository "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Docker image namespace/repository:tag for component",expression:"'Docker image namespace/repository:tag for component'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repo-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Docker image namespace/repository:tag"},model:{value:s.repotag,callback:function(e){t.$set(s,"repotag",e)},expression:"component.repotag"}})],1)]),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Repository Authentication "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected enterprise nodes only.",expression:"'Docker image authentication for private images in the format of username:apikey. This field will be encrypted and accessible to selected enterprise nodes only.'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`repoauth-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"Docker authentication username:apikey"},model:{value:s.repoauth,callback:function(e){t.$set(s,"repoauth",e)},expression:"component.repoauth"}})],1)]):t._e(),e("br"),e("b-card-title",[t._v(" Connectivity ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of Ports on which application will be available",expression:"'Array of Ports on which application will be available'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`ports-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.ports,callback:function(e){t.$set(s,"ports",e)},expression:"component.ports"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Domains "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains",expression:"'Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`domains-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.domains,callback:function(e){t.$set(s,"domains",e)},expression:"component.domains"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Container Ports - Array of ports which your container has",expression:"'Container Ports - Array of ports which your container has'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`containerPorts-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.containerPorts,callback:function(e){t.$set(s,"containerPorts",e)},expression:"component.containerPorts"}})],1)])],1)],1),e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",[e("b-card-title",[t._v(" Environment ")]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Environment "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Environmental Parameters",expression:"'Array of strings of Environmental Parameters'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`environmentParameters-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.environmentParameters,callback:function(e){t.$set(s,"environmentParameters",e)},expression:"component.environmentParameters"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Enviornment to Flux Storage. Environment parameters will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Env. parameters while adding basic privacy - instead of parameters, link to Flux Storage will be visible.",expression:"\n 'Uploads Enviornment to Flux Storage. Environment parameters will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Env. parameters while adding basic privacy - instead of parameters, link to Flux Storage will be visible.'\n ",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-env",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-env","confirm-button":"Upload Environment Parameters",width:600},on:{confirm:function(e){return t.uploadEnvToFluxStorage(i)}}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Commands "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Commands",expression:"'Array of strings of Commands'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`commands-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.commands,callback:function(e){t.$set(s,"commands",e)},expression:"component.commands"}})],1),e("div",{staticClass:"col-0"},[e("b-button",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Uploads Commands to Flux Storage. Commands will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Commands while adding basic privacy - instead of commands, link to Flux Storage will be visible.",expression:"'Uploads Commands to Flux Storage. Commands will be replaced with a link to Flux Storage instead. This increases maximum allowed size of Commands while adding basic privacy - instead of commands, link to Flux Storage will be visible.'",modifiers:{hover:!0,top:!0}}],attrs:{id:"upload-cmd",variant:"outline-primary"}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}})],1),e("confirm-dialog",{attrs:{target:"upload-cmd","confirm-button":"Upload Commands",width:600},on:{confirm:function(e){return t.uploadCmdToFluxStorage(i)}}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Data "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data",expression:"'Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`containerData-${s.name}_${t.appUpdateSpecification.name}`},model:{value:s.containerData,callback:function(e){t.$set(s,"containerData",e)},expression:"component.containerData"}})],1)]),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Secrets "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only",expression:"'Array of strings of Secret Environmental Parameters. This will be encrypted and accessible to selected Enterprise Nodes only'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:`secrets-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"[]"},model:{value:s.secrets,callback:function(e){t.$set(s,"secrets",e)},expression:"component.secrets"}})],1)]):t._e(),e("br"),e("b-card-title",[t._v(" Resources    "),e("h6",{staticClass:"inline text-small"},[t._v(" Tiered: "),e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"tiered",switch:""},model:{value:s.tiered,callback:function(e){t.$set(s,"tiered",e)},expression:"component.tiered"}})],1)]),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"CPU","label-for":"cpu"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.cpu)+" ")]),e("b-form-input",{attrs:{id:`cpu-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"CPU cores to use by default",type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:s.cpu,callback:function(e){t.$set(s,"cpu",e)},expression:"component.cpu"}})],1),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"RAM","label-for":"ram"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.ram)+" ")]),e("b-form-input",{attrs:{id:`ram-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"RAM in MB value to use by default",type:"range",min:"100",max:"59000",step:"100"},model:{value:s.ram,callback:function(e){t.$set(s,"ram",e)},expression:"component.ram"}})],1),s.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"SSD","label-for":"ssd"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(s.hdd)+" ")]),e("b-form-input",{attrs:{id:`ssd-${s.name}_${t.appUpdateSpecification.name}`,placeholder:"SSD in GB value to use by default",type:"range",min:"1",max:"820",step:"1"},model:{value:s.hdd,callback:function(e){t.$set(s,"hdd",e)},expression:"component.hdd"}})],1)],1)],1)],1),s.tiered?e("b-row",[e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Cumulus"}},[e("div",[t._v(" CPU: "+t._s(s.cpubasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"3",step:"0.1"},model:{value:s.cpubasic,callback:function(e){t.$set(s,"cpubasic",e)},expression:"component.cpubasic"}}),e("div",[t._v(" RAM: "+t._s(s.rambasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"5000",step:"100"},model:{value:s.rambasic,callback:function(e){t.$set(s,"rambasic",e)},expression:"component.rambasic"}}),e("div",[t._v(" SSD: "+t._s(s.hddbasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"180",step:"1"},model:{value:s.hddbasic,callback:function(e){t.$set(s,"hddbasic",e)},expression:"component.hddbasic"}})],1)],1),e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Nimbus"}},[e("div",[t._v(" CPU: "+t._s(s.cpusuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"7",step:"0.1"},model:{value:s.cpusuper,callback:function(e){t.$set(s,"cpusuper",e)},expression:"component.cpusuper"}}),e("div",[t._v(" RAM: "+t._s(s.ramsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"28000",step:"100"},model:{value:s.ramsuper,callback:function(e){t.$set(s,"ramsuper",e)},expression:"component.ramsuper"}}),e("div",[t._v(" SSD: "+t._s(s.hddsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"400",step:"1"},model:{value:s.hddsuper,callback:function(e){t.$set(s,"hddsuper",e)},expression:"component.hddsuper"}})],1)],1),e("b-col",{attrs:{xs:"12",lg:"4"}},[e("b-card",{attrs:{title:"Stratus"}},[e("div",[t._v(" CPU: "+t._s(s.cpubamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:s.cpubamf,callback:function(e){t.$set(s,"cpubamf",e)},expression:"component.cpubamf"}}),e("div",[t._v(" RAM: "+t._s(s.rambamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"59000",step:"100"},model:{value:s.rambamf,callback:function(e){t.$set(s,"rambamf",e)},expression:"component.rambamf"}}),e("div",[t._v(" SSD: "+t._s(s.hddbamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"820",step:"1"},model:{value:s.hddbamf,callback:function(e){t.$set(s,"hddbamf",e)},expression:"component.hddbamf"}})],1)],1)],1):t._e()],1)})),t.appUpdateSpecification.version>=7&&t.isPrivateApp?e("b-card",{attrs:{title:"Enterprise Nodes"}},[t._v(" Only these selected enterprise nodes will be able to run your application and are used for encryption. Only these nodes are able to access your private image and secrets."),e("br"),t._v(" Changing the node list after the message is computed and encrypted will result in a failure to run. Secrets and Repository Authentication would need to be adjusted again."),e("br"),t._v(" The score determines how reputable a node and node operator are. The higher the score, the higher the reputation on the network."),e("br"),t._v(" Secrets and Repository Authentication need to be set again if this node list changes."),e("br"),t._v(" The more nodes can run your application, the more stable it is. On the other hand, more nodes will have access to your private data!"),e("br"),e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.entNodesTable.pageOptions},model:{value:t.entNodesTable.perPage,callback:function(e){t.$set(t.entNodesTable,"perPage",e)},expression:"entNodesTable.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.entNodesTable.filter,callback:function(e){t.$set(t.entNodesTable,"filter",e)},expression:"entNodesTable.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.entNodesTable.filter},on:{click:function(e){t.entNodesTable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"app-enterprise-nodes-table",attrs:{striped:"",hover:"",responsive:"","per-page":t.entNodesTable.perPage,"current-page":t.entNodesTable.currentPage,items:t.selectedEnterpriseNodes,fields:t.entNodesTable.fields,"sort-by":t.entNodesTable.sortBy,"sort-desc":t.entNodesTable.sortDesc,"sort-direction":t.entNodesTable.sortDirection,filter:t.entNodesTable.filter,"filter-included-fields":t.entNodesTable.filterOn,"show-empty":"","empty-text":"No Enterprise Nodes selected"},on:{"update:sortBy":function(e){return t.$set(t.entNodesTable,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.entNodesTable,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.entNodesTable,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.entNodesTable,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[s.item.ip?e("list-entry",{attrs:{title:"IP Address",data:s.item.ip}}):t._e(),e("list-entry",{attrs:{title:"Public Key",data:s.item.pubkey}}),e("list-entry",{attrs:{title:"Node Address",data:s.item.payment_address}}),e("list-entry",{attrs:{title:"Collateral",data:`${s.item.txhash}:${s.item.outidx}`}}),e("list-entry",{attrs:{title:"Tier",data:s.item.tier}}),e("list-entry",{attrs:{title:"Overall Score",data:s.item.score.toString()}}),e("list-entry",{attrs:{title:"Collateral Score",data:s.item.collateralPoints.toString()}}),e("list-entry",{attrs:{title:"Maturity Score",data:s.item.maturityPoints.toString()}}),e("list-entry",{attrs:{title:"Public Key Score",data:s.item.pubKeyPoints.toString()}}),e("list-entry",{attrs:{title:"Enterprise Apps Assigned",data:s.item.enterpriseApps.toString()}}),e("div",[e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit FluxNode ")])],1)],1)]}},{key:"cell(ip)",fn:function(e){return[t._v(" "+t._s(e.item.ip)+" ")]}},{key:"cell(payment_address)",fn:function(e){return[t._v(" "+t._s(e.item.payment_address.slice(0,8))+"..."+t._s(e.item.payment_address.slice(e.item.payment_address.length-8,e.item.payment_address.length))+" ")]}},{key:"cell(tier)",fn:function(e){return[t._v(" "+t._s(e.item.tier)+" ")]}},{key:"cell(score)",fn:function(e){return[t._v(" "+t._s(e.item.score)+" ")]}},{key:"cell(actions)",fn:function(s){return[e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`remove-${s.item.ip}`,size:"sm",variant:"danger"}},[t._v(" Remove ")]),e("confirm-dialog",{attrs:{target:`remove-${s.item.ip}`,"confirm-button":"Remove FluxNode"},on:{confirm:function(e){return t.removeFluxNode(s.item.ip)}}}),e("b-button",{staticClass:"mr-1 mb-1",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit ")])]}}],null,!1,2861207668)})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0",attrs:{"total-rows":t.selectedEnterpriseNodes.length,"per-page":t.entNodesTable.perPage,align:"center",size:"sm"},model:{value:t.entNodesTable.currentPage,callback:function(e){t.$set(t.entNodesTable,"currentPage",e)},expression:"entNodesTable.currentPage"}}),e("span",{staticClass:"table-total"},[t._v("Total: "+t._s(t.selectedEnterpriseNodes.length))])],1)],1),e("br"),e("br"),e("div",{staticClass:"text-center"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 mr-2",attrs:{variant:"primary","aria-label":"Auto Select Enterprise Nodes"},on:{click:t.autoSelectNodes}},[t._v(" Auto Select Enterprise Nodes ")]),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 mr-2",attrs:{variant:"primary","aria-label":"Choose Enterprise Nodes"},on:{click:function(e){t.chooseEnterpriseDialog=!0}}},[t._v(" Choose Enterprise Nodes ")])],1)],1):t._e()],2):e("div",[e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",{attrs:{title:"Details"}},[e("b-form-group",{attrs:{"label-cols":"2",label:"Version","label-for":"version"}},[e("b-form-input",{attrs:{id:"version",placeholder:t.appUpdateSpecification.version.toString(),readonly:""},model:{value:t.appUpdateSpecification.version,callback:function(e){t.$set(t.appUpdateSpecification,"version",e)},expression:"appUpdateSpecification.version"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Name","label-for":"name"}},[e("b-form-input",{attrs:{id:"name",placeholder:"App Name",readonly:""},model:{value:t.appUpdateSpecification.name,callback:function(e){t.$set(t.appUpdateSpecification,"name",e)},expression:"appUpdateSpecification.name"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Desc.","label-for":"desc"}},[e("b-form-textarea",{attrs:{id:"desc",placeholder:"Description",rows:"3"},model:{value:t.appUpdateSpecification.description,callback:function(e){t.$set(t.appUpdateSpecification,"description",e)},expression:"appUpdateSpecification.description"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Repo","label-for":"repo"}},[e("b-form-input",{attrs:{id:"repo",placeholder:"Docker image namespace/repository:tag",readonly:""},model:{value:t.appUpdateSpecification.repotag,callback:function(e){t.$set(t.appUpdateSpecification,"repotag",e)},expression:"appUpdateSpecification.repotag"}})],1),e("b-form-group",{attrs:{"label-cols":"2",label:"Owner","label-for":"owner"}},[e("b-form-input",{attrs:{id:"owner",placeholder:"Flux ID of Application Owner"},model:{value:t.appUpdateSpecification.owner,callback:function(e){t.$set(t.appUpdateSpecification,"owner",e)},expression:"appUpdateSpecification.owner"}})],1),e("br"),t.appUpdateSpecification.version>=3?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Instances","label-for":"instances"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.instances)+" ")]),e("b-form-input",{attrs:{id:"instances",placeholder:"Minimum number of application instances to be spawned",type:"range",min:"3",max:t.maxInstances,step:"1"},model:{value:t.appUpdateSpecification.instances,callback:function(e){t.$set(t.appUpdateSpecification,"instances",e)},expression:"appUpdateSpecification.instances"}})],1):t._e(),e("br"),t.appUpdateSpecification.version>=6?e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"Period","label-for":"period"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.getExpireLabel||(t.appUpdateSpecification.expire?`${t.appUpdateSpecification.expire} blocks`:"1 month"))+" ")]),e("b-form-input",{attrs:{id:"period",placeholder:"How long an application will live on Flux network",type:"range",min:0,max:5,step:1},model:{value:t.expirePosition,callback:function(e){t.expirePosition=e},expression:"expirePosition"}})],1):t._e()],1)],1),e("b-col",{attrs:{xs:"12",xl:"6"}},[e("b-card",{attrs:{title:"Environment"}},[e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of Ports on which application will be available",expression:"'Array of Ports on which application will be available'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"ports"},model:{value:t.appUpdateSpecification.ports,callback:function(e){t.$set(t.appUpdateSpecification,"ports",e)},expression:"appUpdateSpecification.ports"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Domains "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains",expression:"'Array of strings of Domains managed by Flux Domain Manager (FDM). Length must correspond to available ports. Use empty strings for no domains'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"domains"},model:{value:t.appUpdateSpecification.domains,callback:function(e){t.$set(t.appUpdateSpecification,"domains",e)},expression:"appUpdateSpecification.domains"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Environment "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Environmental Parameters",expression:"'Array of strings of Environmental Parameters'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"environmentParameters"},model:{value:t.appUpdateSpecification.enviromentParameters,callback:function(e){t.$set(t.appUpdateSpecification,"enviromentParameters",e)},expression:"appUpdateSpecification.enviromentParameters"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Commands "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Array of strings of Commands",expression:"'Array of strings of Commands'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"commands"},model:{value:t.appUpdateSpecification.commands,callback:function(e){t.$set(t.appUpdateSpecification,"commands",e)},expression:"appUpdateSpecification.commands"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Ports "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Container Ports - Array of ports which your container has",expression:"'Container Ports - Array of ports which your container has'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"containerPorts"},model:{value:t.appUpdateSpecification.containerPorts,callback:function(e){t.$set(t.appUpdateSpecification,"containerPorts",e)},expression:"appUpdateSpecification.containerPorts"}})],1)]),e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-3 col-form-label"},[t._v(" Cont. Data "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data",expression:"'Data folder that is shared by application to App volume. Prepend with r: for synced data between instances. Ex. r:/data. Prepend with g: for synced data and primary/standby solution. Ex. g:/data'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-1",attrs:{name:"info-circle"}})],1),e("div",{staticClass:"col"},[e("b-form-input",{attrs:{id:"containerData"},model:{value:t.appUpdateSpecification.containerData,callback:function(e){t.$set(t.appUpdateSpecification,"containerData",e)},expression:"appUpdateSpecification.containerData"}})],1)])])],1)],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"12"}},[e("b-card",[e("b-card-title",[t._v(" Resources    "),e("h6",{staticClass:"inline etext-small"},[t._v(" Tiered: "),e("b-form-checkbox",{staticClass:"custom-control-primary inline",attrs:{id:"tiered",switch:""},model:{value:t.appUpdateSpecification.tiered,callback:function(e){t.$set(t.appUpdateSpecification,"tiered",e)},expression:"appUpdateSpecification.tiered"}})],1)]),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"CPU","label-for":"cpu"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.cpu)+" ")]),e("b-form-input",{attrs:{id:"cpu",placeholder:"CPU cores to use by default",type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:t.appUpdateSpecification.cpu,callback:function(e){t.$set(t.appUpdateSpecification,"cpu",e)},expression:"appUpdateSpecification.cpu"}})],1),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"RAM","label-for":"ram"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.ram)+" ")]),e("b-form-input",{attrs:{id:"ram",placeholder:"RAM in MB value to use by default",type:"range",min:"100",max:"59000",step:"100"},model:{value:t.appUpdateSpecification.ram,callback:function(e){t.$set(t.appUpdateSpecification,"ram",e)},expression:"appUpdateSpecification.ram"}})],1),t.appUpdateSpecification.tiered?t._e():e("b-form-group",{attrs:{"label-cols":"2","label-cols-lg":"1",label:"SSD","label-for":"ssd"}},[e("div",{staticClass:"mx-1"},[t._v(" "+t._s(t.appUpdateSpecification.hdd)+" ")]),e("b-form-input",{attrs:{id:"ssd",placeholder:"SSD in GB value to use by default",type:"range",min:"1",max:"820",step:"1"},model:{value:t.appUpdateSpecification.hdd,callback:function(e){t.$set(t.appUpdateSpecification,"hdd",e)},expression:"appUpdateSpecification.hdd"}})],1)],1)],1)],1),t.appUpdateSpecification.tiered?e("b-row",[e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Cumulus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpubasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"3",step:"0.1"},model:{value:t.appUpdateSpecification.cpubasic,callback:function(e){t.$set(t.appUpdateSpecification,"cpubasic",e)},expression:"appUpdateSpecification.cpubasic"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.rambasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"5000",step:"100"},model:{value:t.appUpdateSpecification.rambasic,callback:function(e){t.$set(t.appUpdateSpecification,"rambasic",e)},expression:"appUpdateSpecification.rambasic"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddbasic)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"180",step:"1"},model:{value:t.appUpdateSpecification.hddbasic,callback:function(e){t.$set(t.appUpdateSpecification,"hddbasic",e)},expression:"appUpdateSpecification.hddbasic"}})],1)],1),e("b-col",{attrs:{xs:"12",md:"6",lg:"4"}},[e("b-card",{attrs:{title:"Nimbus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpusuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"7",step:"0.1"},model:{value:t.appUpdateSpecification.cpusuper,callback:function(e){t.$set(t.appUpdateSpecification,"cpusuper",e)},expression:"appUpdateSpecification.cpusuper"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.ramsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"28000",step:"100"},model:{value:t.appUpdateSpecification.ramsuper,callback:function(e){t.$set(t.appUpdateSpecification,"ramsuper",e)},expression:"appUpdateSpecification.ramsuper"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddsuper)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"400",step:"1"},model:{value:t.appUpdateSpecification.hddsuper,callback:function(e){t.$set(t.appUpdateSpecification,"hddsuper",e)},expression:"appUpdateSpecification.hddsuper"}})],1)],1),e("b-col",{attrs:{xs:"12",lg:"4"}},[e("b-card",{attrs:{title:"Stratus"}},[e("div",[t._v(" CPU: "+t._s(t.appUpdateSpecification.cpubamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"0.1",max:"15",step:"0.1"},model:{value:t.appUpdateSpecification.cpubamf,callback:function(e){t.$set(t.appUpdateSpecification,"cpubamf",e)},expression:"appUpdateSpecification.cpubamf"}}),e("div",[t._v(" RAM: "+t._s(t.appUpdateSpecification.rambamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"100",max:"59000",step:"100"},model:{value:t.appUpdateSpecification.rambamf,callback:function(e){t.$set(t.appUpdateSpecification,"rambamf",e)},expression:"appUpdateSpecification.rambamf"}}),e("div",[t._v(" SSD: "+t._s(t.appUpdateSpecification.hddbamf)+" ")]),e("b-form-input",{attrs:{type:"range",min:"1",max:"820",step:"1"},model:{value:t.appUpdateSpecification.hddbamf,callback:function(e){t.$set(t.appUpdateSpecification,"hddbamf",e)},expression:"appUpdateSpecification.hddbamf"}})],1)],1)],1):t._e()],1)]):t._e(),t.appUpdateSpecification.version>=6?e("div",{staticClass:"form-row form-group d-flex align-items-center"},[e("b-input-group",[e("b-input-group-prepend",[e("b-input-group-text",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"clock-history"}}),t._v(" Extend Subscription "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Select if you want to extend or change your subscription period",expression:"'Select if you want to extend or change your subscription period'",modifiers:{hover:!0,top:!0}}],staticClass:"ml-1",attrs:{name:"info-circle"}}),t._v("    ")],1)],1),e("b-input-group-append",{attrs:{"is-text":""}},[e("b-form-checkbox",{staticClass:"custom-control-primary",attrs:{id:"extendSubscription",switch:""},model:{value:t.extendSubscription,callback:function(e){t.extendSubscription=e},expression:"extendSubscription"}})],1)],1)],1):t._e(),t.extendSubscription&&t.appUpdateSpecification.version>=6?e("div",{staticClass:"form-row form-group"},[e("label",{staticClass:"col-form-label"},[t._v(" Period "),e("v-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip.hover.top",value:"Time your application subscription will be extended",expression:"'Time your application subscription will be extended'",modifiers:{hover:!0,top:!0}}],staticClass:"mr-2",attrs:{name:"info-circle"}}),e("kbd",{staticClass:"bg-primary mr-1"},[e("b",[t._v(t._s(t.getExpireLabel||(t.appUpdateSpecification.expire?`${t.appUpdateSpecification.expire} blocks`:"1 month")))])])],1),e("div",{staticClass:"w-100",staticStyle:{flex:"1",padding:"10px"}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.expirePosition,expression:"expirePosition"}],staticClass:"form-control-range",staticStyle:{width:"100%",outline:"none"},attrs:{id:"period",type:"range",min:0,max:5,step:1},domProps:{value:t.expirePosition},on:{__r:function(e){t.expirePosition=e.target.value}}})])]):t._e(),e("div",[t._v(" Currently your application is subscribed until "),e("b",[t._v(t._s(new Date(t.appRunningTill.current).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". "),t.extendSubscription?e("span",[e("br"),t._v(" Your new adjusted subscription end on "),e("b",[t._v(t._s(new Date(t.appRunningTill.new).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". ")]):t._e(),t.appRunningTill.new0?e("h4",[e("kbd",{staticClass:"d-flex justify-content-center bg-primary mb-2"},[t._v("Discount - "+t._s(t.applicationPriceFluxDiscount)+"%")])]):t._e(),e("h4",{staticClass:"text-center mb-2"},[t._v(" Pay with Zelcore/SSP ")]),e("div",{staticClass:"loginRow"},[e("a",{attrs:{href:`zel:?action=pay&coin=zelcash&address=${t.deploymentAddress}&amount=${t.appPricePerSpecs}&message=${t.updateHash}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2Fflux_banner.png`}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initSSPpay}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])])])],1)],1),t.updateHash&&t.freeUpdate?e("b-row",{staticClass:"match-height"},[e("b-card",[e("b-card-text",[t._v(" Everything is ready, your application update should be effective automatically in less than 30 minutes. ")])],1)],1):t._e()],1):t._e()]),e("b-tab",{attrs:{title:"Cancel Subscription",disabled:!t.isAppOwner||t.appUpdateSpecification.version<6}},[t.fluxCommunication?t._e():e("div",{staticClass:"text-danger"},[t._v(" Warning: Connected Flux is not communicating properly with Flux network ")]),e("div",{staticStyle:{border:"1px solid #ccc","border-radius":"8px",height:"45px",padding:"12px","line-height":"0px"}},[e("h5",[e("b-icon",{staticClass:"mr-1",attrs:{icon:"ui-checks-grid"}}),t._v(" Cancel Application subscription ")],1)]),e("br"),e("div",[t._v(" Currently your application is subscribed until "),e("b",[t._v(t._s(new Date(t.appRunningTill.current).toLocaleString("en-GB",t.timeoptions.shortDate)))]),t._v(". "),e("br"),e("b",[t._v("WARNING: By cancelling your application subscription, your application will be removed from the network and all data will be lost.")])]),e("br"),e("div",[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"mb-2 w-100",attrs:{variant:"outline-success","aria-label":"Compute Cancel Message"},on:{click:t.checkFluxCancelSubscriptionAndFormatMessage}},[t._v(" Compute Cancel Message ")])],1),t.dataToSign?e("div",[e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"Update Message","label-for":"updatemessage"}},[e("div",{staticClass:"text-wrap"},[e("b-form-textarea",{attrs:{id:"updatemessage",rows:"6",readonly:""},model:{value:t.dataToSign,callback:function(e){t.dataToSign=e},expression:"dataToSign"}}),e("b-icon",{directives:[{name:"b-tooltip",rawName:"v-b-tooltip",value:t.tooltipText,expression:"tooltipText"}],ref:"copyButtonRef",staticClass:"clipboard icon",attrs:{scale:"1.5",icon:"clipboard"},on:{click:t.copyMessageToSign}})],1)]),e("b-form-group",{attrs:{"label-cols":"3","label-cols-lg":"2",label:"Signature","label-for":"updatesignature"}},[e("b-form-input",{attrs:{id:"updatesignature"},model:{value:t.signature,callback:function(e){t.signature=e},expression:"signature"}})],1),e("b-row",{staticClass:"match-height"},[e("b-col",{attrs:{xs:"6",lg:"8"}},[e("b-card",[e("br"),e("div",{staticClass:"text-center"},[e("h4",[e("b-icon",{staticClass:"mr-1",attrs:{scale:"1.4",icon:"chat-right"}}),t._v(" Data has to be signed by the last application owner ")],1)]),e("br"),e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"w-100",attrs:{variant:"outline-success","aria-label":"Update Flux App"},on:{click:t.update}},[t._v(" Cancel Application ")])],1)],1),e("b-col",{attrs:{xs:"6",lg:"4"}},[e("b-card",{staticClass:"text-center",attrs:{title:"Sign with"}},[e("div",{staticClass:"loginRow"},[e("a",{attrs:{href:`zel:?action=sign&message=${t.dataToSign}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${t.callbackValue}`},on:{click:t.initiateSignWSUpdate}},[e("img",{staticClass:"walletIcon",attrs:{src:s(96358),alt:"Flux ID",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initSSP}},[e("img",{staticClass:"walletIcon",attrs:{src:"dark"===t.skin?s(56070):s(58962),alt:"SSP",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("a",{on:{click:t.initWalletConnect}},[e("img",{staticClass:"walletIcon",attrs:{src:s(47622),alt:"WalletConnect",height:"100%",width:"100%"}})]),e("a",{on:{click:t.initMetamask}},[e("img",{staticClass:"walletIcon",attrs:{src:s(28125),alt:"Metamask",height:"100%",width:"100%"}})])]),e("div",{staticClass:"loginRow"},[e("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"my-1",staticStyle:{width:"250px"},attrs:{variant:"primary","aria-label":"Flux Single Sign On"},on:{click:t.initSignFluxSSO}},[t._v(" Flux Single Sign On (SSO) ")])],1)])],1)],1),t.updateHash?e("b-row",{staticClass:"match-height"},[e("b-card",[e("b-card-text",[t._v(" Everything is ready, your application cancelattion should be effective automatically in less than 30 minutes and removed from the network in the next ~3hours. ")])],1)],1):t._e()],1):t._e()])],1),t.output.length>0?e("div",{staticClass:"actionCenter"},[e("br"),e("b-row",[e("b-col",{attrs:{cols:"9"}},[e("b-form-textarea",{staticClass:"mt-1",attrs:{plaintext:"","no-resize":"",rows:t.output.length+1,value:t.stringOutput()}})],1),t.downloadOutputReturned?e("b-col",{attrs:{cols:"3"}},[e("h3",[t._v("Downloads")]),t._l(t.downloadOutput,(function(s){return e("div",{key:s.id},[e("h4",[t._v(" "+t._s(s.id))]),e("b-progress",{attrs:{value:s.detail.current/s.detail.total*100,max:"100",striped:"",height:"1rem",variant:s.variant}}),e("br")],1)}))],2):t._e()],1)],1):t._e(),t._m(0),e("b-modal",{attrs:{title:"Select Enterprise Nodes",size:"xl",centered:"","button-size":"sm","ok-only":"","ok-title":"Done"},model:{value:t.chooseEnterpriseDialog,callback:function(e){t.chooseEnterpriseDialog=e},expression:"chooseEnterpriseDialog"}},[e("b-row",[e("b-col",{staticClass:"my-1",attrs:{md:"4",sm:"4"}},[e("b-form-group",{staticClass:"mb-0"},[e("label",{staticClass:"d-inline-block text-left mr-50"},[t._v("Per page")]),e("b-form-select",{staticClass:"w-50",attrs:{id:"perPageSelect",size:"sm",options:t.entNodesSelectTable.pageOptions},model:{value:t.entNodesSelectTable.perPage,callback:function(e){t.$set(t.entNodesSelectTable,"perPage",e)},expression:"entNodesSelectTable.perPage"}})],1)],1),e("b-col",{staticClass:"my-1",attrs:{md:"8"}},[e("b-form-group",{staticClass:"mb-0",attrs:{label:"Filter","label-cols-sm":"1","label-align-sm":"right","label-for":"filterInput"}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{attrs:{id:"filterInput",type:"search",placeholder:"Type to Search"},model:{value:t.entNodesSelectTable.filter,callback:function(e){t.$set(t.entNodesSelectTable,"filter",e)},expression:"entNodesSelectTable.filter"}}),e("b-input-group-append",[e("b-button",{attrs:{disabled:!t.entNodesSelectTable.filter},on:{click:function(e){t.entNodesSelectTable.filter=""}}},[t._v(" Clear ")])],1)],1)],1)],1),e("b-col",{attrs:{cols:"12"}},[e("b-table",{staticClass:"app-enterprise-nodes-table",attrs:{striped:"",hover:"",responsive:"","per-page":t.entNodesSelectTable.perPage,"current-page":t.entNodesSelectTable.currentPage,items:t.enterpriseNodes,fields:t.entNodesSelectTable.fields,"sort-by":t.entNodesSelectTable.sortBy,"sort-desc":t.entNodesSelectTable.sortDesc,"sort-direction":t.entNodesSelectTable.sortDirection,filter:t.entNodesSelectTable.filter,"filter-included-fields":t.entNodesSelectTable.filterOn,"show-empty":"","empty-text":"No Enterprise Nodes For Addition Found"},on:{"update:sortBy":function(e){return t.$set(t.entNodesSelectTable,"sortBy",e)},"update:sort-by":function(e){return t.$set(t.entNodesSelectTable,"sortBy",e)},"update:sortDesc":function(e){return t.$set(t.entNodesSelectTable,"sortDesc",e)},"update:sort-desc":function(e){return t.$set(t.entNodesSelectTable,"sortDesc",e)}},scopedSlots:t._u([{key:"cell(show_details)",fn:function(s){return[e("a",{on:{click:s.toggleDetails}},[s.detailsShowing?t._e():e("v-icon",{attrs:{name:"chevron-down"}}),s.detailsShowing?e("v-icon",{attrs:{name:"chevron-up"}}):t._e()],1)]}},{key:"row-details",fn:function(s){return[e("b-card",{},[e("list-entry",{attrs:{title:"IP Address",data:s.item.ip}}),e("list-entry",{attrs:{title:"Public Key",data:s.item.pubkey}}),e("list-entry",{attrs:{title:"Node Address",data:s.item.payment_address}}),e("list-entry",{attrs:{title:"Collateral",data:`${s.item.txhash}:${s.item.outidx}`}}),e("list-entry",{attrs:{title:"Tier",data:s.item.tier}}),e("list-entry",{attrs:{title:"Overall Score",data:s.item.score.toString()}}),e("list-entry",{attrs:{title:"Collateral Score",data:s.item.collateralPoints.toString()}}),e("list-entry",{attrs:{title:"Maturity Score",data:s.item.maturityPoints.toString()}}),e("list-entry",{attrs:{title:"Public Key Score",data:s.item.pubKeyPoints.toString()}}),e("list-entry",{attrs:{title:"Enterprise Apps Assigned",data:s.item.enterpriseApps.toString()}}),e("div",[e("b-button",{staticClass:"mr-0",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(t.locationRow.item.ip.split(":")[0],t.locationRow.item.ip.split(":")[1]?+t.locationRow.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit FluxNode ")])],1)],1)]}},{key:"cell(ip)",fn:function(e){return[t._v(" "+t._s(e.item.ip)+" ")]}},{key:"cell(payment_address)",fn:function(e){return[t._v(" "+t._s(e.item.payment_address.slice(0,8))+"..."+t._s(e.item.payment_address.slice(e.item.payment_address.length-8,e.item.payment_address.length))+" ")]}},{key:"cell(tier)",fn:function(e){return[t._v(" "+t._s(e.item.tier)+" ")]}},{key:"cell(score)",fn:function(e){return[t._v(" "+t._s(e.item.score)+" ")]}},{key:"cell(actions)",fn:function(s){return[e("b-button",{staticClass:"mr-1 mb-1",attrs:{size:"sm",variant:"primary"},on:{click:function(e){t.openNodeFluxOS(s.item.ip.split(":")[0],s.item.ip.split(":")[1]?+s.item.ip.split(":")[1]-1:16126)}}},[t._v(" Visit ")]),t.selectedEnterpriseNodes.find((t=>t.ip===s.item.ip))?t._e():e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`add-${s.item.ip}`,size:"sm",variant:"success"},on:{click:function(e){return t.addFluxNode(s.item.ip)}}},[t._v(" Add ")]),t.selectedEnterpriseNodes.find((t=>t.ip===s.item.ip))?e("b-button",{staticClass:"mr-1 mb-1",attrs:{id:`add-${s.item.ip}`,size:"sm",variant:"danger"},on:{click:function(e){return t.removeFluxNode(s.item.ip)}}},[t._v(" Remove ")]):t._e()]}}])})],1),e("b-col",{attrs:{cols:"12"}},[e("b-pagination",{staticClass:"my-0",attrs:{"total-rows":t.entNodesSelectTable.totalRows,"per-page":t.entNodesSelectTable.perPage,align:"center",size:"sm"},model:{value:t.entNodesSelectTable.currentPage,callback:function(e){t.$set(t.entNodesSelectTable,"currentPage",e)},expression:"entNodesSelectTable.currentPage"}}),e("span",{staticClass:"table-total"},[t._v("Total: "+t._s(t.entNodesSelectTable.totalRows))])],1)],1)],1)],1)},a=[function(){var t=this,e=t._self._c;return e("div",[e("br"),t._v(" By managing an application I agree with "),e("a",{attrs:{href:"https://cdn.runonflux.io/Flux_Terms_of_Service.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v(" Terms of Service ")])])}],o=(s(70560),s(98858),s(61318),s(33228),s(73106)),n=s(58887),r=s(51015),l=s(16521),c=s(66456),p=s(92095),d=s(31642),h=s(87379),u=s(51909),m=s(71605),f=s(43022),g=s(4060),b=s(27754),v=s(22418),y=s(50725),x=s(86855),w=s(64206),_=s(49379),S=s(97794),C=s(26253),k=s(15193),A=s(1759),T=s(87167),P=s(333),R=s(46709),D=s(22183),L=s(19692),F=s(8051),M=s(78959),$=s(10962),N=s(45752),I=s(22981),U=s(5870),O=s(67166),E=s.n(O),B=s(20266),z=s(20629),V=s(34547),H=s(87156),j=s(51748),q=s(92355),G=s(90699),W=s.n(G),K=s(2272),Z=s(52829),X=s(5449),Y=s(65864),J=s(43672),Q=s(27616),tt=s(38511),et=s(94145),st=s(12320),it=s(12617),at=s(67511),ot=s(32993),nt=s(12286),rt=s(53920),lt=s(37307),ct=s(7174),pt=s.n(ct),dt=s(34369); /*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela * Released under the MIT License */ -function ht(t){return t+.5|0}const ut=(t,e,s)=>Math.max(Math.min(t,s),e);function mt(t){return ut(ht(2.55*t),0,255)}function ft(t){return ut(ht(255*t),0,255)}function gt(t){return ut(ht(t/2.55)/100,0,1)}function bt(t){return ut(ht(100*t),0,100)}const vt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},yt=[..."0123456789ABCDEF"],xt=t=>yt[15&t],wt=t=>yt[(240&t)>>4]+yt[15&t],_t=t=>(240&t)>>4===(15&t),St=t=>_t(t.r)&&_t(t.g)&&_t(t.b)&&_t(t.a);function Ct(t){var e,s=t.length;return"#"===t[0]&&(4===s||5===s?e={r:255&17*vt[t[1]],g:255&17*vt[t[2]],b:255&17*vt[t[3]],a:5===s?17*vt[t[4]]:255}:7!==s&&9!==s||(e={r:vt[t[1]]<<4|vt[t[2]],g:vt[t[3]]<<4|vt[t[4]],b:vt[t[5]]<<4|vt[t[6]],a:9===s?vt[t[7]]<<4|vt[t[8]]:255})),e}const kt=(t,e)=>t<255?e(t):"";function At(t){var e=St(t)?xt:wt;return t?"#"+e(t.r)+e(t.g)+e(t.b)+kt(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Pt(t,e,s){const i=e*Math.min(s,1-s),a=(e,a=(e+t/30)%12)=>s-i*Math.max(Math.min(a-3,9-a,1),-1);return[a(0),a(8),a(4)]}function Rt(t,e,s){const i=(i,a=(i+t/60)%6)=>s-s*e*Math.max(Math.min(a,4-a,1),0);return[i(5),i(3),i(1)]}function Dt(t,e,s){const i=Pt(t,1,.5);let a;for(e+s>1&&(a=1/(e+s),e*=a,s*=a),a=0;a<3;a++)i[a]*=1-e-s,i[a]+=e;return i}function Lt(t,e,s,i,a){return t===a?(e-s)/i+(e.5?p/(2-o-n):p/(o+n),l=Lt(s,i,a,p,o),l=60*l+.5),[0|l,c||0,r]}function Mt(t,e,s,i){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,s,i)).map(ft)}function $t(t,e,s){return Mt(Pt,t,e,s)}function It(t,e,s){return Mt(Dt,t,e,s)}function Nt(t,e,s){return Mt(Rt,t,e,s)}function Ut(t){return(t%360+360)%360}function Ot(t){const e=Tt.exec(t);let s,i=255;if(!e)return;e[5]!==s&&(i=e[6]?mt(+e[5]):ft(+e[5]));const a=Ut(+e[2]),o=+e[3]/100,n=+e[4]/100;return s="hwb"===e[1]?It(a,o,n):"hsv"===e[1]?Nt(a,o,n):$t(a,o,n),{r:s[0],g:s[1],b:s[2],a:i}}function Et(t,e){var s=Ft(t);s[0]=Ut(s[0]+e),s=$t(s),t.r=s[0],t.g=s[1],t.b=s[2]}function Bt(t){if(!t)return;const e=Ft(t),s=e[0],i=bt(e[1]),a=bt(e[2]);return t.a<255?`hsla(${s}, ${i}%, ${a}%, ${gt(t.a)})`:`hsl(${s}, ${i}%, ${a}%)`}const zt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Vt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Ht(){const t={},e=Object.keys(Vt),s=Object.keys(zt);let i,a,o,n,r;for(i=0;i>16&255,o>>8&255,255&o]}return t}let jt;function qt(t){jt||(jt=Ht(),jt.transparent=[0,0,0,0]);const e=jt[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const Gt=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Wt(t){const e=Gt.exec(t);let s,i,a,o=255;if(e){if(e[7]!==s){const t=+e[7];o=e[8]?mt(t):ut(255*t,0,255)}return s=+e[1],i=+e[3],a=+e[5],s=255&(e[2]?mt(s):ut(s,0,255)),i=255&(e[4]?mt(i):ut(i,0,255)),a=255&(e[6]?mt(a):ut(a,0,255)),{r:s,g:i,b:a,a:o}}}function Kt(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${gt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const Zt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Xt=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Yt(t,e,s){const i=Xt(gt(t.r)),a=Xt(gt(t.g)),o=Xt(gt(t.b));return{r:ft(Zt(i+s*(Xt(gt(e.r))-i))),g:ft(Zt(a+s*(Xt(gt(e.g))-a))),b:ft(Zt(o+s*(Xt(gt(e.b))-o))),a:t.a+s*(e.a-t.a)}}function Jt(t,e,s){if(t){let i=Ft(t);i[e]=Math.max(0,Math.min(i[e]+i[e]*s,0===e?360:1)),i=$t(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function Qt(t,e){return t?Object.assign(e||{},t):t}function te(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=ft(t[3]))):(e=Qt(t,{r:0,g:0,b:0,a:1}),e.a=ft(e.a)),e}function ee(t){return"r"===t.charAt(0)?Wt(t):Ot(t)}class se{constructor(t){if(t instanceof se)return t;const e=typeof t;let s;"object"===e?s=te(t):"string"===e&&(s=Ct(t)||qt(t)||ee(t)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var t=Qt(this._rgb);return t&&(t.a=gt(t.a)),t}set rgb(t){this._rgb=te(t)}rgbString(){return this._valid?Kt(this._rgb):void 0}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?Bt(this._rgb):void 0}mix(t,e){if(t){const s=this.rgb,i=t.rgb;let a;const o=e===a?.5:e,n=2*o-1,r=s.a-i.a,l=((n*r===-1?n:(n+r)/(1+n*r))+1)/2;a=1-l,s.r=255&l*s.r+a*i.r+.5,s.g=255&l*s.g+a*i.g+.5,s.b=255&l*s.b+a*i.b+.5,s.a=o*s.a+(1-o)*i.a,this.rgb=s}return this}interpolate(t,e){return t&&(this._rgb=Yt(this._rgb,t._rgb,e)),this}clone(){return new se(this.rgb)}alpha(t){return this._rgb.a=ft(t),this}clearer(t){const e=this._rgb;return e.a*=1-t,this}greyscale(){const t=this._rgb,e=ht(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){const e=this._rgb;return e.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Jt(this._rgb,2,t),this}darken(t){return Jt(this._rgb,2,-t),this}saturate(t){return Jt(this._rgb,1,t),this}desaturate(t){return Jt(this._rgb,1,-t),this}rotate(t){return Et(this._rgb,t),this}} +function ht(t){return t+.5|0}const ut=(t,e,s)=>Math.max(Math.min(t,s),e);function mt(t){return ut(ht(2.55*t),0,255)}function ft(t){return ut(ht(255*t),0,255)}function gt(t){return ut(ht(t/2.55)/100,0,1)}function bt(t){return ut(ht(100*t),0,100)}const vt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},yt=[..."0123456789ABCDEF"],xt=t=>yt[15&t],wt=t=>yt[(240&t)>>4]+yt[15&t],_t=t=>(240&t)>>4===(15&t),St=t=>_t(t.r)&&_t(t.g)&&_t(t.b)&&_t(t.a);function Ct(t){var e,s=t.length;return"#"===t[0]&&(4===s||5===s?e={r:255&17*vt[t[1]],g:255&17*vt[t[2]],b:255&17*vt[t[3]],a:5===s?17*vt[t[4]]:255}:7!==s&&9!==s||(e={r:vt[t[1]]<<4|vt[t[2]],g:vt[t[3]]<<4|vt[t[4]],b:vt[t[5]]<<4|vt[t[6]],a:9===s?vt[t[7]]<<4|vt[t[8]]:255})),e}const kt=(t,e)=>t<255?e(t):"";function At(t){var e=St(t)?xt:wt;return t?"#"+e(t.r)+e(t.g)+e(t.b)+kt(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Pt(t,e,s){const i=e*Math.min(s,1-s),a=(e,a=(e+t/30)%12)=>s-i*Math.max(Math.min(a-3,9-a,1),-1);return[a(0),a(8),a(4)]}function Rt(t,e,s){const i=(i,a=(i+t/60)%6)=>s-s*e*Math.max(Math.min(a,4-a,1),0);return[i(5),i(3),i(1)]}function Dt(t,e,s){const i=Pt(t,1,.5);let a;for(e+s>1&&(a=1/(e+s),e*=a,s*=a),a=0;a<3;a++)i[a]*=1-e-s,i[a]+=e;return i}function Lt(t,e,s,i,a){return t===a?(e-s)/i+(e.5?p/(2-o-n):p/(o+n),l=Lt(s,i,a,p,o),l=60*l+.5),[0|l,c||0,r]}function Mt(t,e,s,i){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,s,i)).map(ft)}function $t(t,e,s){return Mt(Pt,t,e,s)}function Nt(t,e,s){return Mt(Dt,t,e,s)}function It(t,e,s){return Mt(Rt,t,e,s)}function Ut(t){return(t%360+360)%360}function Ot(t){const e=Tt.exec(t);let s,i=255;if(!e)return;e[5]!==s&&(i=e[6]?mt(+e[5]):ft(+e[5]));const a=Ut(+e[2]),o=+e[3]/100,n=+e[4]/100;return s="hwb"===e[1]?Nt(a,o,n):"hsv"===e[1]?It(a,o,n):$t(a,o,n),{r:s[0],g:s[1],b:s[2],a:i}}function Et(t,e){var s=Ft(t);s[0]=Ut(s[0]+e),s=$t(s),t.r=s[0],t.g=s[1],t.b=s[2]}function Bt(t){if(!t)return;const e=Ft(t),s=e[0],i=bt(e[1]),a=bt(e[2]);return t.a<255?`hsla(${s}, ${i}%, ${a}%, ${gt(t.a)})`:`hsl(${s}, ${i}%, ${a}%)`}const zt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Vt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Ht(){const t={},e=Object.keys(Vt),s=Object.keys(zt);let i,a,o,n,r;for(i=0;i>16&255,o>>8&255,255&o]}return t}let jt;function qt(t){jt||(jt=Ht(),jt.transparent=[0,0,0,0]);const e=jt[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const Gt=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Wt(t){const e=Gt.exec(t);let s,i,a,o=255;if(e){if(e[7]!==s){const t=+e[7];o=e[8]?mt(t):ut(255*t,0,255)}return s=+e[1],i=+e[3],a=+e[5],s=255&(e[2]?mt(s):ut(s,0,255)),i=255&(e[4]?mt(i):ut(i,0,255)),a=255&(e[6]?mt(a):ut(a,0,255)),{r:s,g:i,b:a,a:o}}}function Kt(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${gt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const Zt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Xt=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Yt(t,e,s){const i=Xt(gt(t.r)),a=Xt(gt(t.g)),o=Xt(gt(t.b));return{r:ft(Zt(i+s*(Xt(gt(e.r))-i))),g:ft(Zt(a+s*(Xt(gt(e.g))-a))),b:ft(Zt(o+s*(Xt(gt(e.b))-o))),a:t.a+s*(e.a-t.a)}}function Jt(t,e,s){if(t){let i=Ft(t);i[e]=Math.max(0,Math.min(i[e]+i[e]*s,0===e?360:1)),i=$t(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function Qt(t,e){return t?Object.assign(e||{},t):t}function te(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=ft(t[3]))):(e=Qt(t,{r:0,g:0,b:0,a:1}),e.a=ft(e.a)),e}function ee(t){return"r"===t.charAt(0)?Wt(t):Ot(t)}class se{constructor(t){if(t instanceof se)return t;const e=typeof t;let s;"object"===e?s=te(t):"string"===e&&(s=Ct(t)||qt(t)||ee(t)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var t=Qt(this._rgb);return t&&(t.a=gt(t.a)),t}set rgb(t){this._rgb=te(t)}rgbString(){return this._valid?Kt(this._rgb):void 0}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?Bt(this._rgb):void 0}mix(t,e){if(t){const s=this.rgb,i=t.rgb;let a;const o=e===a?.5:e,n=2*o-1,r=s.a-i.a,l=((n*r===-1?n:(n+r)/(1+n*r))+1)/2;a=1-l,s.r=255&l*s.r+a*i.r+.5,s.g=255&l*s.g+a*i.g+.5,s.b=255&l*s.b+a*i.b+.5,s.a=o*s.a+(1-o)*i.a,this.rgb=s}return this}interpolate(t,e){return t&&(this._rgb=Yt(this._rgb,t._rgb,e)),this}clone(){return new se(this.rgb)}alpha(t){return this._rgb.a=ft(t),this}clearer(t){const e=this._rgb;return e.a*=1-t,this}greyscale(){const t=this._rgb,e=ht(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){const e=this._rgb;return e.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Jt(this._rgb,2,t),this}darken(t){return Jt(this._rgb,2,-t),this}saturate(t){return Jt(this._rgb,1,t),this}desaturate(t){return Jt(this._rgb,1,-t),this}rotate(t){return Et(this._rgb,t),this}} /*! * Chart.js v4.4.4 * https://www.chartjs.org * (c) 2024 Chart.js Contributors * Released under the MIT License */ -function ie(){}const ae=(()=>{let t=0;return()=>t++})();function oe(t){return null===t||"undefined"===typeof t}function ne(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function re(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function le(t){return("number"===typeof t||t instanceof Number)&&isFinite(+t)}function ce(t,e){return le(t)?t:e}function pe(t,e){return"undefined"===typeof t?e:t}const de=(t,e)=>"string"===typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function he(t,e,s){if(t&&"function"===typeof t.call)return t.apply(s,e)}function ue(t,e,s,i){let a,o,n;if(ne(t))if(o=t.length,i)for(a=o-1;a>=0;a--)e.call(s,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function _e(t){const e=t.split("."),s=[];let i="";for(const a of e)i+=a,i.endsWith("\\")?i=i.slice(0,-1)+".":(s.push(i),i="");return s}function Se(t){const e=_e(t);return t=>{for(const s of e){if(""===s)break;t=t&&t[s]}return t}}function Ce(t,e){const s=we[e]||(we[e]=Se(e));return s(t)}function ke(t){return t.charAt(0).toUpperCase()+t.slice(1)}const Ae=t=>"undefined"!==typeof t,Te=t=>"function"===typeof t,Pe=(t,e)=>{if(t.size!==e.size)return!1;for(const s of t)if(!e.has(s))return!1;return!0};function Re(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const De=Math.PI,Le=2*De,Fe=Le+De,Me=Number.POSITIVE_INFINITY,$e=De/180,Ie=De/2,Ne=De/4,Ue=2*De/3,Oe=Math.log10,Ee=Math.sign;function Be(t,e,s){return Math.abs(t-e)t-e)).pop(),e}function He(t){return!isNaN(parseFloat(t))&&isFinite(t)}function je(t,e){const s=Math.round(t);return s-e<=t&&s+e>=t}function qe(t,e,s){let i,a,o;for(i=0,a=t.length;il&&c=Math.min(e,s)-i&&t<=Math.max(e,s)+i}function is(t,e,s){s=s||(s=>t[s]1)i=o+a>>1,s(i)?o=i:a=i;return{lo:o,hi:a}}const as=(t,e,s,i)=>is(t,s,i?i=>{const a=t[i][e];return at[i][e]is(t,s,(i=>t[i][e]>=s));function ns(t,e,s){let i=0,a=t.length;while(ii&&t[a-1]>s)a--;return i>0||a{const s="_onData"+ke(e),i=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const a=i.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"===typeof t[s]&&t[s](...e)})),a}})})))}function cs(t,e){const s=t._chartjs;if(!s)return;const i=s.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(rs.forEach((e=>{delete t[e]})),delete t._chartjs)}function ps(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ds=function(){return"undefined"===typeof window?function(t){return t()}:window.requestAnimationFrame}();function hs(t,e){let s=[],i=!1;return function(...a){s=a,i||(i=!0,ds.call(window,(()=>{i=!1,t.apply(e,s)})))}}function us(t,e){let s;return function(...i){return e?(clearTimeout(s),s=setTimeout(t,e,i)):t.apply(this,i),e}}const ms=t=>"start"===t?"left":"end"===t?"right":"center",fs=(t,e,s)=>"start"===t?e:"end"===t?s:(e+s)/2,gs=(t,e,s,i)=>{const a=i?"left":"right";return t===a?s:"center"===t?(e+s)/2:e};function bs(t,e,s){const i=e.length;let a=0,o=i;if(t._sorted){const{iScale:n,_parsed:r}=t,l=n.axis,{min:c,max:p,minDefined:d,maxDefined:h}=n.getUserBounds();d&&(a=ts(Math.min(as(r,l,c).lo,s?i:as(e,l,n.getPixelForValue(c)).lo),0,i-1)),o=h?ts(Math.max(as(r,n.axis,p,!0).hi+1,s?0:as(e,l,n.getPixelForValue(p),!0).hi+1),a,i)-a:i-a}return{start:a,count:o}}function vs(t){const{xScale:e,yScale:s,_scaleRanges:i}=t,a={xmin:e.min,xmax:e.max,ymin:s.min,ymax:s.max};if(!i)return t._scaleRanges=a,!0;const o=i.xmin!==e.min||i.xmax!==e.max||i.ymin!==s.min||i.ymax!==s.max;return Object.assign(i,a),o}const ys=t=>0===t||1===t,xs=(t,e,s)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*Le/s),ws=(t,e,s)=>Math.pow(2,-10*t)*Math.sin((t-e)*Le/s)+1,_s={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Ie),easeOutSine:t=>Math.sin(t*Ie),easeInOutSine:t=>-.5*(Math.cos(De*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ys(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ys(t)?t:xs(t,.075,.3),easeOutElastic:t=>ys(t)?t:ws(t,.075,.3),easeInOutElastic(t){const e=.1125,s=.45;return ys(t)?t:t<.5?.5*xs(2*t,e,s):.5+.5*ws(2*t-1,e,s)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-_s.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,s=2.75;return t<1/s?e*t*t:t<2/s?e*(t-=1.5/s)*t+.75:t<2.5/s?e*(t-=2.25/s)*t+.9375:e*(t-=2.625/s)*t+.984375},easeInOutBounce:t=>t<.5?.5*_s.easeInBounce(2*t):.5*_s.easeOutBounce(2*t-1)+.5};function Ss(t){if(t&&"object"===typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Cs(t){return Ss(t)?t:new se(t)}function ks(t){return Ss(t)?t:new se(t).saturate(.5).darken(.1).hexString()}const As=["x","y","borderWidth","radius","tension"],Ts=["color","borderColor","backgroundColor"];function Ps(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:Ts},numbers:{type:"number",properties:As}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})}function Rs(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Ds=new Map;function Ls(t,e){e=e||{};const s=t+JSON.stringify(e);let i=Ds.get(s);return i||(i=new Intl.NumberFormat(t,e),Ds.set(s,i)),i}function Fs(t,e,s){return Ls(e,s).format(t)}const Ms={values(t){return ne(t)?t:""+t},numeric(t,e,s){if(0===t)return"0";const i=this.chart.options.locale;let a,o=t;if(s.length>1){const e=Math.max(Math.abs(s[0].value),Math.abs(s[s.length-1].value));(e<1e-4||e>1e15)&&(a="scientific"),o=$s(t,s)}const n=Oe(Math.abs(o)),r=isNaN(n)?1:Math.max(Math.min(-1*Math.floor(n),20),0),l={notation:a,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Fs(t,i,l)},logarithmic(t,e,s){if(0===t)return"0";const i=s[e].significand||t/Math.pow(10,Math.floor(Oe(t)));return[1,2,3,5,10,15].includes(i)||e>.8*s.length?Ms.numeric.call(this,t,e,s):""}};function $s(t,e){let s=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(s)>=1&&t!==Math.floor(t)&&(s=t-Math.floor(t)),s}var Is={formatters:Ms};function Ns(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Is.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}const Us=Object.create(null),Os=Object.create(null);function Es(t,e){if(!e)return t;const s=e.split(".");for(let i=0,a=s.length;it.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>ks(e.backgroundColor),this.hoverBorderColor=(t,e)=>ks(e.borderColor),this.hoverColor=(t,e)=>ks(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Bs(this,t,e)}get(t){return Es(this,t)}describe(t,e){return Bs(Os,t,e)}override(t,e){return Bs(Us,t,e)}route(t,e,s,i){const a=Es(this,t),o=Es(this,s),n="_"+e;Object.defineProperties(a,{[n]:{value:a[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[n],e=o[i];return re(t)?Object.assign({},e,t):pe(t,e)},set(t){this[n]=t}}})}apply(t){t.forEach((t=>t(this)))}}var Vs=new zs({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[Ps,Rs,Ns]);function Hs(t){return!t||oe(t.size)||oe(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function js(t,e,s,i,a){let o=e[a];return o||(o=e[a]=t.measureText(a).width,s.push(a)),o>i&&(i=o),i}function qs(t,e,s){const i=t.currentDevicePixelRatio,a=0!==s?Math.max(s/2,.5):0;return Math.round((e-a)*i)/i+a}function Gs(t,e){(e||t)&&(e=e||t.getContext("2d"),e.save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Ws(t,e,s,i){Ks(t,e,s,i,null)}function Ks(t,e,s,i,a){let o,n,r,l,c,p,d,h;const u=e.pointStyle,m=e.rotation,f=e.radius;let g=(m||0)*$e;if(u&&"object"===typeof u&&(o=u.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(s,i),t.rotate(g),t.drawImage(u,-u.width/2,-u.height/2,u.width,u.height),void t.restore();if(!(isNaN(f)||f<=0)){switch(t.beginPath(),u){default:a?t.ellipse(s,i,a/2,f,0,0,Le):t.arc(s,i,f,0,Le),t.closePath();break;case"triangle":p=a?a/2:f,t.moveTo(s+Math.sin(g)*p,i-Math.cos(g)*f),g+=Ue,t.lineTo(s+Math.sin(g)*p,i-Math.cos(g)*f),g+=Ue,t.lineTo(s+Math.sin(g)*p,i-Math.cos(g)*f),t.closePath();break;case"rectRounded":c=.516*f,l=f-c,n=Math.cos(g+Ne)*l,d=Math.cos(g+Ne)*(a?a/2-c:l),r=Math.sin(g+Ne)*l,h=Math.sin(g+Ne)*(a?a/2-c:l),t.arc(s-d,i-r,c,g-De,g-Ie),t.arc(s+h,i-n,c,g-Ie,g),t.arc(s+d,i+r,c,g,g+Ie),t.arc(s-h,i+n,c,g+Ie,g+De),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*f,p=a?a/2:l,t.rect(s-p,i-l,2*p,2*l);break}g+=Ne;case"rectRot":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+h,i-n),t.lineTo(s+d,i+r),t.lineTo(s-h,i+n),t.closePath();break;case"crossRot":g+=Ne;case"cross":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n);break;case"star":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n),g+=Ne,d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n);break;case"line":n=a?a/2:Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(s-n,i-r),t.lineTo(s+n,i+r);break;case"dash":t.moveTo(s,i),t.lineTo(s+Math.cos(g)*(a?a/2:f),i+Math.sin(g)*f);break;case!1:t.closePath();break}t.fill(),e.borderWidth>0&&t.stroke()}}function Zs(t,e,s){return s=s||.5,!e||t&&t.x>e.left-s&&t.xe.top-s&&t.y0&&""!==o.strokeColor;let l,c;for(t.save(),t.font=a.string,ti(t,o),l=0;l+t||0;function ci(t,e){const s={},i=re(e),a=i?Object.keys(e):e,o=re(t)?i?s=>pe(t[s],t[e[s]]):e=>t[e]:()=>t;for(const n of a)s[n]=li(o(n));return s}function pi(t){return ci(t,{top:"y",right:"x",bottom:"y",left:"x"})}function di(t){return ci(t,["topLeft","topRight","bottomLeft","bottomRight"])}function hi(t){const e=pi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function ui(t,e){t=t||{},e=e||Vs.font;let s=pe(t.size,e.size);"string"===typeof s&&(s=parseInt(s,10));let i=pe(t.style,e.style);i&&!(""+i).match(ni)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const a={family:pe(t.family,e.family),lineHeight:ri(pe(t.lineHeight,e.lineHeight),s),size:s,style:i,weight:pe(t.weight,e.weight),string:""};return a.string=Hs(a),a}function mi(t,e,s,i){let a,o,n,r=!0;for(a=0,o=t.length;as&&0===t?0:t+e;return{min:n(i,-Math.abs(o)),max:n(a,o)}}function gi(t,e){return Object.assign(Object.create(t),e)}function bi(t,e=[""],s,i,a=(()=>t[0])){const o=s||t;"undefined"===typeof i&&(i=Mi("_fallback",t));const n={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:i,_getTarget:a,override:s=>bi([s,...t],e,o,i)};return new Proxy(n,{deleteProperty(e,s){return delete e[s],delete e._keys,delete t[0][s],!0},get(s,i){return _i(s,i,(()=>Fi(i,e,t,s)))},getOwnPropertyDescriptor(t,e){return Reflect.getOwnPropertyDescriptor(t._scopes[0],e)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(t,e){return $i(t).includes(e)},ownKeys(t){return $i(t)},set(t,e,s){const i=t._storage||(t._storage=a());return t[e]=i[e]=s,delete t._keys,!0}})}function vi(t,e,s,i){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:s,_stack:new Set,_descriptors:yi(t,i),setContext:e=>vi(t,e,s,i),override:a=>vi(t.override(a),e,s,i)};return new Proxy(a,{deleteProperty(e,s){return delete e[s],delete t[s],!0},get(t,e,s){return _i(t,e,(()=>Si(t,e,s)))},getOwnPropertyDescriptor(e,s){return e._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(e,s){return Reflect.has(t,s)},ownKeys(){return Reflect.ownKeys(t)},set(e,s,i){return t[s]=i,delete e[s],!0}})}function yi(t,e={scriptable:!0,indexable:!0}){const{_scriptable:s=e.scriptable,_indexable:i=e.indexable,_allKeys:a=e.allKeys}=t;return{allKeys:a,scriptable:s,indexable:i,isScriptable:Te(s)?s:()=>s,isIndexable:Te(i)?i:()=>i}}const xi=(t,e)=>t?t+ke(e):e,wi=(t,e)=>re(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function _i(t,e,s){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const i=s();return t[e]=i,i}function Si(t,e,s){const{_proxy:i,_context:a,_subProxy:o,_descriptors:n}=t;let r=i[e];return Te(r)&&n.isScriptable(e)&&(r=Ci(e,r,t,s)),ne(r)&&r.length&&(r=ki(e,r,t,n.isIndexable)),wi(e,r)&&(r=vi(r,a,o&&o[e],n)),r}function Ci(t,e,s,i){const{_proxy:a,_context:o,_subProxy:n,_stack:r}=s;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,n||i);return r.delete(t),wi(t,l)&&(l=Ri(a._scopes,a,t,l)),l}function ki(t,e,s,i){const{_proxy:a,_context:o,_subProxy:n,_descriptors:r}=s;if("undefined"!==typeof o.index&&i(t))return e[o.index%e.length];if(re(e[0])){const s=e,i=a._scopes.filter((t=>t!==s));e=[];for(const l of s){const s=Ri(i,a,t,l);e.push(vi(s,o,n&&n[t],r))}}return e}function Ai(t,e,s){return Te(t)?t(e,s):t}const Ti=(t,e)=>!0===t?e:"string"===typeof t?Ce(e,t):void 0;function Pi(t,e,s,i,a){for(const o of e){const e=Ti(s,o);if(e){t.add(e);const o=Ai(e._fallback,s,a);if("undefined"!==typeof o&&o!==s&&o!==i)return o}else if(!1===e&&"undefined"!==typeof i&&s!==i)return null}return!1}function Ri(t,e,s,i){const a=e._rootScopes,o=Ai(e._fallback,s,i),n=[...t,...a],r=new Set;r.add(i);let l=Di(r,n,s,o||s,i);return null!==l&&(("undefined"===typeof o||o===s||(l=Di(r,n,o,l,i),null!==l))&&bi(Array.from(r),[""],a,o,(()=>Li(e,s,i))))}function Di(t,e,s,i,a){while(s)s=Pi(t,e,s,i,a);return s}function Li(t,e,s){const i=t._getTarget();e in i||(i[e]={});const a=i[e];return ne(a)&&re(s)?s:a||{}}function Fi(t,e,s,i){let a;for(const o of e)if(a=Mi(xi(o,t),s),"undefined"!==typeof a)return wi(t,a)?Ri(s,i,t,a):a}function Mi(t,e){for(const s of e){if(!s)continue;const e=s[t];if("undefined"!==typeof e)return e}}function $i(t){let e=t._keys;return e||(e=t._keys=Ii(t._scopes)),e}function Ii(t){const e=new Set;for(const s of t)for(const t of Object.keys(s).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}const Ni=Number.EPSILON||1e-14,Ui=(t,e)=>e"x"===t?"y":"x";function Ei(t,e,s,i){const a=t.skip?e:t,o=e,n=s.skip?e:s,r=Xe(o,a),l=Xe(n,o);let c=r/(r+l),p=l/(r+l);c=isNaN(c)?0:c,p=isNaN(p)?0:p;const d=i*c,h=i*p;return{previous:{x:o.x-d*(n.x-a.x),y:o.y-d*(n.y-a.y)},next:{x:o.x+h*(n.x-a.x),y:o.y+h*(n.y-a.y)}}}function Bi(t,e,s){const i=t.length;let a,o,n,r,l,c=Ui(t,0);for(let p=0;p!t.skip))),"monotone"===e.cubicInterpolationMode)Vi(t,a);else{let s=i?t[t.length-1]:t[0];for(o=0,n=t.length;ot.ownerDocument.defaultView.getComputedStyle(t,null);function Xi(t,e){return Zi(t).getPropertyValue(e)}const Yi=["top","right","bottom","left"];function Ji(t,e,s){const i={};s=s?"-"+s:"";for(let a=0;a<4;a++){const o=Yi[a];i[o]=parseFloat(t[e+"-"+o+s])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Qi=(t,e,s)=>(t>0||e>0)&&(!s||!s.shadowRoot);function ta(t,e){const s=t.touches,i=s&&s.length?s[0]:t,{offsetX:a,offsetY:o}=i;let n,r,l=!1;if(Qi(a,o,t.target))n=a,r=o;else{const t=e.getBoundingClientRect();n=i.clientX-t.left,r=i.clientY-t.top,l=!0}return{x:n,y:r,box:l}}function ea(t,e){if("native"in t)return t;const{canvas:s,currentDevicePixelRatio:i}=e,a=Zi(s),o="border-box"===a.boxSizing,n=Ji(a,"padding"),r=Ji(a,"border","width"),{x:l,y:c,box:p}=ta(t,s),d=n.left+(p&&r.left),h=n.top+(p&&r.top);let{width:u,height:m}=e;return o&&(u-=n.width+r.width,m-=n.height+r.height),{x:Math.round((l-d)/u*s.width/i),y:Math.round((c-h)/m*s.height/i)}}function sa(t,e,s){let i,a;if(void 0===e||void 0===s){const o=t&&Wi(t);if(o){const t=o.getBoundingClientRect(),n=Zi(o),r=Ji(n,"border","width"),l=Ji(n,"padding");e=t.width-l.width-r.width,s=t.height-l.height-r.height,i=Ki(n.maxWidth,o,"clientWidth"),a=Ki(n.maxHeight,o,"clientHeight")}else e=t.clientWidth,s=t.clientHeight}return{width:e,height:s,maxWidth:i||Me,maxHeight:a||Me}}const ia=t=>Math.round(10*t)/10;function aa(t,e,s,i){const a=Zi(t),o=Ji(a,"margin"),n=Ki(a.maxWidth,t,"clientWidth")||Me,r=Ki(a.maxHeight,t,"clientHeight")||Me,l=sa(t,e,s);let{width:c,height:p}=l;if("content-box"===a.boxSizing){const t=Ji(a,"border","width"),e=Ji(a,"padding");c-=e.width+t.width,p-=e.height+t.height}c=Math.max(0,c-o.width),p=Math.max(0,i?c/i:p-o.height),c=ia(Math.min(c,n,l.maxWidth)),p=ia(Math.min(p,r,l.maxHeight)),c&&!p&&(p=ia(c/2));const d=void 0!==e||void 0!==s;return d&&i&&l.height&&p>l.height&&(p=l.height,c=ia(Math.floor(p*i))),{width:c,height:p}}function oa(t,e,s){const i=e||1,a=Math.floor(t.height*i),o=Math.floor(t.width*i);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const n=t.canvas;return n.style&&(s||!n.style.height&&!n.style.width)&&(n.style.height=`${t.height}px`,n.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||n.height!==a||n.width!==o)&&(t.currentDevicePixelRatio=i,n.height=a,n.width=o,t.ctx.setTransform(i,0,0,i,0,0),!0)}const na=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Gi()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(e){}return t}();function ra(t,e){const s=Xi(t,e),i=s&&s.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function la(t,e,s,i){return{x:t.x+s*(e.x-t.x),y:t.y+s*(e.y-t.y)}}function ca(t,e,s,i){return{x:t.x+s*(e.x-t.x),y:"middle"===i?s<.5?t.y:e.y:"after"===i?s<1?t.y:e.y:s>0?e.y:t.y}}function pa(t,e,s,i){const a={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},n=la(t,a,s),r=la(a,o,s),l=la(o,e,s),c=la(n,r,s),p=la(r,l,s);return la(c,p,s)}const da=function(t,e){return{x(s){return t+t+e-s},setWidth(t){e=t},textAlign(t){return"center"===t?t:"right"===t?"left":"right"},xPlus(t,e){return t-e},leftForLtr(t,e){return t-e}}},ha=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function ua(t,e,s){return t?da(e,s):ha()}function ma(t,e){let s,i;"ltr"!==e&&"rtl"!==e||(s=t.canvas.style,i=[s.getPropertyValue("direction"),s.getPropertyPriority("direction")],s.setProperty("direction",e,"important"),t.prevTextDirection=i)}function fa(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function ga(t){return"angle"===t?{between:Qe,compare:Ye,normalize:Je}:{between:ss,compare:(t,e)=>t-e,normalize:t=>t}}function ba({start:t,end:e,count:s,loop:i,style:a}){return{start:t%s,end:e%s,loop:i&&(e-t+1)%s===0,style:a}}function va(t,e,s){const{property:i,start:a,end:o}=s,{between:n,normalize:r}=ga(i),l=e.length;let c,p,{start:d,end:h,loop:u}=t;if(u){for(d+=l,h+=l,c=0,p=l;cl(a,b,f)&&0!==r(a,b),w=()=>0===r(o,f)||l(o,b,f),_=()=>v||x(),S=()=>!v||w();for(let C=p,k=p;C<=d;++C)g=e[C%n],g.skip||(f=c(g[i]),f!==b&&(v=l(f,a,o),null===y&&_()&&(y=0===r(f,a)?C:k),null!==y&&S()&&(m.push(ba({start:y,end:C,loop:h,count:n,style:u})),y=null),k=C,b=f));return null!==y&&m.push(ba({start:y,end:d,loop:h,count:n,style:u})),m}function xa(t,e){const s=[],i=t.segments;for(let a=0;aa&&t[o%e].skip)o--;return o%=e,{start:a,end:o}}function _a(t,e,s,i){const a=t.length,o=[];let n,r=e,l=t[e];for(n=e+1;n<=s;++n){const s=t[n%a];s.skip||s.stop?l.skip||(i=!1,o.push({start:e%a,end:(n-1)%a,loop:i}),e=r=s.stop?n:null):(r=n,l.skip&&(e=n)),l=s}return null!==r&&o.push({start:e%a,end:r%a,loop:i}),o}function Sa(t,e){const s=t.points,i=t.options.spanGaps,a=s.length;if(!a)return[];const o=!!t._loop,{start:n,end:r}=wa(s,a,o,i);if(!0===i)return Ca(t,[{start:n,end:r,loop:o}],s,e);const l=r{let t=0;return()=>t++})();function oe(t){return null===t||"undefined"===typeof t}function ne(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function re(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function le(t){return("number"===typeof t||t instanceof Number)&&isFinite(+t)}function ce(t,e){return le(t)?t:e}function pe(t,e){return"undefined"===typeof t?e:t}const de=(t,e)=>"string"===typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function he(t,e,s){if(t&&"function"===typeof t.call)return t.apply(s,e)}function ue(t,e,s,i){let a,o,n;if(ne(t))if(o=t.length,i)for(a=o-1;a>=0;a--)e.call(s,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function _e(t){const e=t.split("."),s=[];let i="";for(const a of e)i+=a,i.endsWith("\\")?i=i.slice(0,-1)+".":(s.push(i),i="");return s}function Se(t){const e=_e(t);return t=>{for(const s of e){if(""===s)break;t=t&&t[s]}return t}}function Ce(t,e){const s=we[e]||(we[e]=Se(e));return s(t)}function ke(t){return t.charAt(0).toUpperCase()+t.slice(1)}const Ae=t=>"undefined"!==typeof t,Te=t=>"function"===typeof t,Pe=(t,e)=>{if(t.size!==e.size)return!1;for(const s of t)if(!e.has(s))return!1;return!0};function Re(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const De=Math.PI,Le=2*De,Fe=Le+De,Me=Number.POSITIVE_INFINITY,$e=De/180,Ne=De/2,Ie=De/4,Ue=2*De/3,Oe=Math.log10,Ee=Math.sign;function Be(t,e,s){return Math.abs(t-e)t-e)).pop(),e}function He(t){return!isNaN(parseFloat(t))&&isFinite(t)}function je(t,e){const s=Math.round(t);return s-e<=t&&s+e>=t}function qe(t,e,s){let i,a,o;for(i=0,a=t.length;il&&c=Math.min(e,s)-i&&t<=Math.max(e,s)+i}function is(t,e,s){s=s||(s=>t[s]1)i=o+a>>1,s(i)?o=i:a=i;return{lo:o,hi:a}}const as=(t,e,s,i)=>is(t,s,i?i=>{const a=t[i][e];return at[i][e]is(t,s,(i=>t[i][e]>=s));function ns(t,e,s){let i=0,a=t.length;while(ii&&t[a-1]>s)a--;return i>0||a{const s="_onData"+ke(e),i=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const a=i.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"===typeof t[s]&&t[s](...e)})),a}})})))}function cs(t,e){const s=t._chartjs;if(!s)return;const i=s.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(rs.forEach((e=>{delete t[e]})),delete t._chartjs)}function ps(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ds=function(){return"undefined"===typeof window?function(t){return t()}:window.requestAnimationFrame}();function hs(t,e){let s=[],i=!1;return function(...a){s=a,i||(i=!0,ds.call(window,(()=>{i=!1,t.apply(e,s)})))}}function us(t,e){let s;return function(...i){return e?(clearTimeout(s),s=setTimeout(t,e,i)):t.apply(this,i),e}}const ms=t=>"start"===t?"left":"end"===t?"right":"center",fs=(t,e,s)=>"start"===t?e:"end"===t?s:(e+s)/2,gs=(t,e,s,i)=>{const a=i?"left":"right";return t===a?s:"center"===t?(e+s)/2:e};function bs(t,e,s){const i=e.length;let a=0,o=i;if(t._sorted){const{iScale:n,_parsed:r}=t,l=n.axis,{min:c,max:p,minDefined:d,maxDefined:h}=n.getUserBounds();d&&(a=ts(Math.min(as(r,l,c).lo,s?i:as(e,l,n.getPixelForValue(c)).lo),0,i-1)),o=h?ts(Math.max(as(r,n.axis,p,!0).hi+1,s?0:as(e,l,n.getPixelForValue(p),!0).hi+1),a,i)-a:i-a}return{start:a,count:o}}function vs(t){const{xScale:e,yScale:s,_scaleRanges:i}=t,a={xmin:e.min,xmax:e.max,ymin:s.min,ymax:s.max};if(!i)return t._scaleRanges=a,!0;const o=i.xmin!==e.min||i.xmax!==e.max||i.ymin!==s.min||i.ymax!==s.max;return Object.assign(i,a),o}const ys=t=>0===t||1===t,xs=(t,e,s)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*Le/s),ws=(t,e,s)=>Math.pow(2,-10*t)*Math.sin((t-e)*Le/s)+1,_s={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Ne),easeOutSine:t=>Math.sin(t*Ne),easeInOutSine:t=>-.5*(Math.cos(De*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ys(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ys(t)?t:xs(t,.075,.3),easeOutElastic:t=>ys(t)?t:ws(t,.075,.3),easeInOutElastic(t){const e=.1125,s=.45;return ys(t)?t:t<.5?.5*xs(2*t,e,s):.5+.5*ws(2*t-1,e,s)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-_s.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,s=2.75;return t<1/s?e*t*t:t<2/s?e*(t-=1.5/s)*t+.75:t<2.5/s?e*(t-=2.25/s)*t+.9375:e*(t-=2.625/s)*t+.984375},easeInOutBounce:t=>t<.5?.5*_s.easeInBounce(2*t):.5*_s.easeOutBounce(2*t-1)+.5};function Ss(t){if(t&&"object"===typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Cs(t){return Ss(t)?t:new se(t)}function ks(t){return Ss(t)?t:new se(t).saturate(.5).darken(.1).hexString()}const As=["x","y","borderWidth","radius","tension"],Ts=["color","borderColor","backgroundColor"];function Ps(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:Ts},numbers:{type:"number",properties:As}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})}function Rs(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Ds=new Map;function Ls(t,e){e=e||{};const s=t+JSON.stringify(e);let i=Ds.get(s);return i||(i=new Intl.NumberFormat(t,e),Ds.set(s,i)),i}function Fs(t,e,s){return Ls(e,s).format(t)}const Ms={values(t){return ne(t)?t:""+t},numeric(t,e,s){if(0===t)return"0";const i=this.chart.options.locale;let a,o=t;if(s.length>1){const e=Math.max(Math.abs(s[0].value),Math.abs(s[s.length-1].value));(e<1e-4||e>1e15)&&(a="scientific"),o=$s(t,s)}const n=Oe(Math.abs(o)),r=isNaN(n)?1:Math.max(Math.min(-1*Math.floor(n),20),0),l={notation:a,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Fs(t,i,l)},logarithmic(t,e,s){if(0===t)return"0";const i=s[e].significand||t/Math.pow(10,Math.floor(Oe(t)));return[1,2,3,5,10,15].includes(i)||e>.8*s.length?Ms.numeric.call(this,t,e,s):""}};function $s(t,e){let s=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(s)>=1&&t!==Math.floor(t)&&(s=t-Math.floor(t)),s}var Ns={formatters:Ms};function Is(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ns.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}const Us=Object.create(null),Os=Object.create(null);function Es(t,e){if(!e)return t;const s=e.split(".");for(let i=0,a=s.length;it.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>ks(e.backgroundColor),this.hoverBorderColor=(t,e)=>ks(e.borderColor),this.hoverColor=(t,e)=>ks(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Bs(this,t,e)}get(t){return Es(this,t)}describe(t,e){return Bs(Os,t,e)}override(t,e){return Bs(Us,t,e)}route(t,e,s,i){const a=Es(this,t),o=Es(this,s),n="_"+e;Object.defineProperties(a,{[n]:{value:a[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[n],e=o[i];return re(t)?Object.assign({},e,t):pe(t,e)},set(t){this[n]=t}}})}apply(t){t.forEach((t=>t(this)))}}var Vs=new zs({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[Ps,Rs,Is]);function Hs(t){return!t||oe(t.size)||oe(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function js(t,e,s,i,a){let o=e[a];return o||(o=e[a]=t.measureText(a).width,s.push(a)),o>i&&(i=o),i}function qs(t,e,s){const i=t.currentDevicePixelRatio,a=0!==s?Math.max(s/2,.5):0;return Math.round((e-a)*i)/i+a}function Gs(t,e){(e||t)&&(e=e||t.getContext("2d"),e.save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Ws(t,e,s,i){Ks(t,e,s,i,null)}function Ks(t,e,s,i,a){let o,n,r,l,c,p,d,h;const u=e.pointStyle,m=e.rotation,f=e.radius;let g=(m||0)*$e;if(u&&"object"===typeof u&&(o=u.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(s,i),t.rotate(g),t.drawImage(u,-u.width/2,-u.height/2,u.width,u.height),void t.restore();if(!(isNaN(f)||f<=0)){switch(t.beginPath(),u){default:a?t.ellipse(s,i,a/2,f,0,0,Le):t.arc(s,i,f,0,Le),t.closePath();break;case"triangle":p=a?a/2:f,t.moveTo(s+Math.sin(g)*p,i-Math.cos(g)*f),g+=Ue,t.lineTo(s+Math.sin(g)*p,i-Math.cos(g)*f),g+=Ue,t.lineTo(s+Math.sin(g)*p,i-Math.cos(g)*f),t.closePath();break;case"rectRounded":c=.516*f,l=f-c,n=Math.cos(g+Ie)*l,d=Math.cos(g+Ie)*(a?a/2-c:l),r=Math.sin(g+Ie)*l,h=Math.sin(g+Ie)*(a?a/2-c:l),t.arc(s-d,i-r,c,g-De,g-Ne),t.arc(s+h,i-n,c,g-Ne,g),t.arc(s+d,i+r,c,g,g+Ne),t.arc(s-h,i+n,c,g+Ne,g+De),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*f,p=a?a/2:l,t.rect(s-p,i-l,2*p,2*l);break}g+=Ie;case"rectRot":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+h,i-n),t.lineTo(s+d,i+r),t.lineTo(s-h,i+n),t.closePath();break;case"crossRot":g+=Ie;case"cross":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n);break;case"star":d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n),g+=Ie,d=Math.cos(g)*(a?a/2:f),n=Math.cos(g)*f,r=Math.sin(g)*f,h=Math.sin(g)*(a?a/2:f),t.moveTo(s-d,i-r),t.lineTo(s+d,i+r),t.moveTo(s+h,i-n),t.lineTo(s-h,i+n);break;case"line":n=a?a/2:Math.cos(g)*f,r=Math.sin(g)*f,t.moveTo(s-n,i-r),t.lineTo(s+n,i+r);break;case"dash":t.moveTo(s,i),t.lineTo(s+Math.cos(g)*(a?a/2:f),i+Math.sin(g)*f);break;case!1:t.closePath();break}t.fill(),e.borderWidth>0&&t.stroke()}}function Zs(t,e,s){return s=s||.5,!e||t&&t.x>e.left-s&&t.xe.top-s&&t.y0&&""!==o.strokeColor;let l,c;for(t.save(),t.font=a.string,ti(t,o),l=0;l+t||0;function ci(t,e){const s={},i=re(e),a=i?Object.keys(e):e,o=re(t)?i?s=>pe(t[s],t[e[s]]):e=>t[e]:()=>t;for(const n of a)s[n]=li(o(n));return s}function pi(t){return ci(t,{top:"y",right:"x",bottom:"y",left:"x"})}function di(t){return ci(t,["topLeft","topRight","bottomLeft","bottomRight"])}function hi(t){const e=pi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function ui(t,e){t=t||{},e=e||Vs.font;let s=pe(t.size,e.size);"string"===typeof s&&(s=parseInt(s,10));let i=pe(t.style,e.style);i&&!(""+i).match(ni)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const a={family:pe(t.family,e.family),lineHeight:ri(pe(t.lineHeight,e.lineHeight),s),size:s,style:i,weight:pe(t.weight,e.weight),string:""};return a.string=Hs(a),a}function mi(t,e,s,i){let a,o,n,r=!0;for(a=0,o=t.length;as&&0===t?0:t+e;return{min:n(i,-Math.abs(o)),max:n(a,o)}}function gi(t,e){return Object.assign(Object.create(t),e)}function bi(t,e=[""],s,i,a=(()=>t[0])){const o=s||t;"undefined"===typeof i&&(i=Mi("_fallback",t));const n={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:i,_getTarget:a,override:s=>bi([s,...t],e,o,i)};return new Proxy(n,{deleteProperty(e,s){return delete e[s],delete e._keys,delete t[0][s],!0},get(s,i){return _i(s,i,(()=>Fi(i,e,t,s)))},getOwnPropertyDescriptor(t,e){return Reflect.getOwnPropertyDescriptor(t._scopes[0],e)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(t,e){return $i(t).includes(e)},ownKeys(t){return $i(t)},set(t,e,s){const i=t._storage||(t._storage=a());return t[e]=i[e]=s,delete t._keys,!0}})}function vi(t,e,s,i){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:s,_stack:new Set,_descriptors:yi(t,i),setContext:e=>vi(t,e,s,i),override:a=>vi(t.override(a),e,s,i)};return new Proxy(a,{deleteProperty(e,s){return delete e[s],delete t[s],!0},get(t,e,s){return _i(t,e,(()=>Si(t,e,s)))},getOwnPropertyDescriptor(e,s){return e._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(e,s){return Reflect.has(t,s)},ownKeys(){return Reflect.ownKeys(t)},set(e,s,i){return t[s]=i,delete e[s],!0}})}function yi(t,e={scriptable:!0,indexable:!0}){const{_scriptable:s=e.scriptable,_indexable:i=e.indexable,_allKeys:a=e.allKeys}=t;return{allKeys:a,scriptable:s,indexable:i,isScriptable:Te(s)?s:()=>s,isIndexable:Te(i)?i:()=>i}}const xi=(t,e)=>t?t+ke(e):e,wi=(t,e)=>re(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function _i(t,e,s){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const i=s();return t[e]=i,i}function Si(t,e,s){const{_proxy:i,_context:a,_subProxy:o,_descriptors:n}=t;let r=i[e];return Te(r)&&n.isScriptable(e)&&(r=Ci(e,r,t,s)),ne(r)&&r.length&&(r=ki(e,r,t,n.isIndexable)),wi(e,r)&&(r=vi(r,a,o&&o[e],n)),r}function Ci(t,e,s,i){const{_proxy:a,_context:o,_subProxy:n,_stack:r}=s;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,n||i);return r.delete(t),wi(t,l)&&(l=Ri(a._scopes,a,t,l)),l}function ki(t,e,s,i){const{_proxy:a,_context:o,_subProxy:n,_descriptors:r}=s;if("undefined"!==typeof o.index&&i(t))return e[o.index%e.length];if(re(e[0])){const s=e,i=a._scopes.filter((t=>t!==s));e=[];for(const l of s){const s=Ri(i,a,t,l);e.push(vi(s,o,n&&n[t],r))}}return e}function Ai(t,e,s){return Te(t)?t(e,s):t}const Ti=(t,e)=>!0===t?e:"string"===typeof t?Ce(e,t):void 0;function Pi(t,e,s,i,a){for(const o of e){const e=Ti(s,o);if(e){t.add(e);const o=Ai(e._fallback,s,a);if("undefined"!==typeof o&&o!==s&&o!==i)return o}else if(!1===e&&"undefined"!==typeof i&&s!==i)return null}return!1}function Ri(t,e,s,i){const a=e._rootScopes,o=Ai(e._fallback,s,i),n=[...t,...a],r=new Set;r.add(i);let l=Di(r,n,s,o||s,i);return null!==l&&(("undefined"===typeof o||o===s||(l=Di(r,n,o,l,i),null!==l))&&bi(Array.from(r),[""],a,o,(()=>Li(e,s,i))))}function Di(t,e,s,i,a){while(s)s=Pi(t,e,s,i,a);return s}function Li(t,e,s){const i=t._getTarget();e in i||(i[e]={});const a=i[e];return ne(a)&&re(s)?s:a||{}}function Fi(t,e,s,i){let a;for(const o of e)if(a=Mi(xi(o,t),s),"undefined"!==typeof a)return wi(t,a)?Ri(s,i,t,a):a}function Mi(t,e){for(const s of e){if(!s)continue;const e=s[t];if("undefined"!==typeof e)return e}}function $i(t){let e=t._keys;return e||(e=t._keys=Ni(t._scopes)),e}function Ni(t){const e=new Set;for(const s of t)for(const t of Object.keys(s).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}const Ii=Number.EPSILON||1e-14,Ui=(t,e)=>e"x"===t?"y":"x";function Ei(t,e,s,i){const a=t.skip?e:t,o=e,n=s.skip?e:s,r=Xe(o,a),l=Xe(n,o);let c=r/(r+l),p=l/(r+l);c=isNaN(c)?0:c,p=isNaN(p)?0:p;const d=i*c,h=i*p;return{previous:{x:o.x-d*(n.x-a.x),y:o.y-d*(n.y-a.y)},next:{x:o.x+h*(n.x-a.x),y:o.y+h*(n.y-a.y)}}}function Bi(t,e,s){const i=t.length;let a,o,n,r,l,c=Ui(t,0);for(let p=0;p!t.skip))),"monotone"===e.cubicInterpolationMode)Vi(t,a);else{let s=i?t[t.length-1]:t[0];for(o=0,n=t.length;ot.ownerDocument.defaultView.getComputedStyle(t,null);function Xi(t,e){return Zi(t).getPropertyValue(e)}const Yi=["top","right","bottom","left"];function Ji(t,e,s){const i={};s=s?"-"+s:"";for(let a=0;a<4;a++){const o=Yi[a];i[o]=parseFloat(t[e+"-"+o+s])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Qi=(t,e,s)=>(t>0||e>0)&&(!s||!s.shadowRoot);function ta(t,e){const s=t.touches,i=s&&s.length?s[0]:t,{offsetX:a,offsetY:o}=i;let n,r,l=!1;if(Qi(a,o,t.target))n=a,r=o;else{const t=e.getBoundingClientRect();n=i.clientX-t.left,r=i.clientY-t.top,l=!0}return{x:n,y:r,box:l}}function ea(t,e){if("native"in t)return t;const{canvas:s,currentDevicePixelRatio:i}=e,a=Zi(s),o="border-box"===a.boxSizing,n=Ji(a,"padding"),r=Ji(a,"border","width"),{x:l,y:c,box:p}=ta(t,s),d=n.left+(p&&r.left),h=n.top+(p&&r.top);let{width:u,height:m}=e;return o&&(u-=n.width+r.width,m-=n.height+r.height),{x:Math.round((l-d)/u*s.width/i),y:Math.round((c-h)/m*s.height/i)}}function sa(t,e,s){let i,a;if(void 0===e||void 0===s){const o=t&&Wi(t);if(o){const t=o.getBoundingClientRect(),n=Zi(o),r=Ji(n,"border","width"),l=Ji(n,"padding");e=t.width-l.width-r.width,s=t.height-l.height-r.height,i=Ki(n.maxWidth,o,"clientWidth"),a=Ki(n.maxHeight,o,"clientHeight")}else e=t.clientWidth,s=t.clientHeight}return{width:e,height:s,maxWidth:i||Me,maxHeight:a||Me}}const ia=t=>Math.round(10*t)/10;function aa(t,e,s,i){const a=Zi(t),o=Ji(a,"margin"),n=Ki(a.maxWidth,t,"clientWidth")||Me,r=Ki(a.maxHeight,t,"clientHeight")||Me,l=sa(t,e,s);let{width:c,height:p}=l;if("content-box"===a.boxSizing){const t=Ji(a,"border","width"),e=Ji(a,"padding");c-=e.width+t.width,p-=e.height+t.height}c=Math.max(0,c-o.width),p=Math.max(0,i?c/i:p-o.height),c=ia(Math.min(c,n,l.maxWidth)),p=ia(Math.min(p,r,l.maxHeight)),c&&!p&&(p=ia(c/2));const d=void 0!==e||void 0!==s;return d&&i&&l.height&&p>l.height&&(p=l.height,c=ia(Math.floor(p*i))),{width:c,height:p}}function oa(t,e,s){const i=e||1,a=Math.floor(t.height*i),o=Math.floor(t.width*i);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const n=t.canvas;return n.style&&(s||!n.style.height&&!n.style.width)&&(n.style.height=`${t.height}px`,n.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==i||n.height!==a||n.width!==o)&&(t.currentDevicePixelRatio=i,n.height=a,n.width=o,t.ctx.setTransform(i,0,0,i,0,0),!0)}const na=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};Gi()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(e){}return t}();function ra(t,e){const s=Xi(t,e),i=s&&s.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function la(t,e,s,i){return{x:t.x+s*(e.x-t.x),y:t.y+s*(e.y-t.y)}}function ca(t,e,s,i){return{x:t.x+s*(e.x-t.x),y:"middle"===i?s<.5?t.y:e.y:"after"===i?s<1?t.y:e.y:s>0?e.y:t.y}}function pa(t,e,s,i){const a={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},n=la(t,a,s),r=la(a,o,s),l=la(o,e,s),c=la(n,r,s),p=la(r,l,s);return la(c,p,s)}const da=function(t,e){return{x(s){return t+t+e-s},setWidth(t){e=t},textAlign(t){return"center"===t?t:"right"===t?"left":"right"},xPlus(t,e){return t-e},leftForLtr(t,e){return t-e}}},ha=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function ua(t,e,s){return t?da(e,s):ha()}function ma(t,e){let s,i;"ltr"!==e&&"rtl"!==e||(s=t.canvas.style,i=[s.getPropertyValue("direction"),s.getPropertyPriority("direction")],s.setProperty("direction",e,"important"),t.prevTextDirection=i)}function fa(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function ga(t){return"angle"===t?{between:Qe,compare:Ye,normalize:Je}:{between:ss,compare:(t,e)=>t-e,normalize:t=>t}}function ba({start:t,end:e,count:s,loop:i,style:a}){return{start:t%s,end:e%s,loop:i&&(e-t+1)%s===0,style:a}}function va(t,e,s){const{property:i,start:a,end:o}=s,{between:n,normalize:r}=ga(i),l=e.length;let c,p,{start:d,end:h,loop:u}=t;if(u){for(d+=l,h+=l,c=0,p=l;cl(a,b,f)&&0!==r(a,b),w=()=>0===r(o,f)||l(o,b,f),_=()=>v||x(),S=()=>!v||w();for(let C=p,k=p;C<=d;++C)g=e[C%n],g.skip||(f=c(g[i]),f!==b&&(v=l(f,a,o),null===y&&_()&&(y=0===r(f,a)?C:k),null!==y&&S()&&(m.push(ba({start:y,end:C,loop:h,count:n,style:u})),y=null),k=C,b=f));return null!==y&&m.push(ba({start:y,end:d,loop:h,count:n,style:u})),m}function xa(t,e){const s=[],i=t.segments;for(let a=0;aa&&t[o%e].skip)o--;return o%=e,{start:a,end:o}}function _a(t,e,s,i){const a=t.length,o=[];let n,r=e,l=t[e];for(n=e+1;n<=s;++n){const s=t[n%a];s.skip||s.stop?l.skip||(i=!1,o.push({start:e%a,end:(n-1)%a,loop:i}),e=r=s.stop?n:null):(r=n,l.skip&&(e=n)),l=s}return null!==r&&o.push({start:e%a,end:r%a,loop:i}),o}function Sa(t,e){const s=t.points,i=t.options.spanGaps,a=s.length;if(!a)return[];const o=!!t._loop,{start:n,end:r}=wa(s,a,o,i);if(!0===i)return Ca(t,[{start:n,end:r,loop:o}],s,e);const l=ri({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(s-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ds.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((s,i)=>{if(!s.running||!s.items.length)return;const a=s.items;let o,n=a.length-1,r=!1;for(;n>=0;--n)o=a[n],o._active?(o._total>s.duration&&(s.duration=o._total),o.tick(t),r=!0):(a[n]=a[a.length-1],a.pop());r&&(i.draw(),this._notify(i,s,t,"progress")),a.length||(s.running=!1,this._notify(i,s,t,"complete"),s.initial=!1),e+=a.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let s=e.get(t);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,s)),s}listen(t,e,s){this._getAnims(t).listeners[e].push(s)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const s=e.items;let i=s.length-1;for(;i>=0;--i)s[i].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var Ra=new Pa;const Da="transparent",La={boolean(t,e,s){return s>.5?e:t},color(t,e,s){const i=Cs(t||Da),a=i.valid&&Cs(e||Da);return a&&a.valid?a.mix(i,s).hexString():e},number(t,e,s){return t+(e-t)*s}};class Fa{constructor(t,e,s,i){const a=e[s];i=mi([t.to,i,a,t.from]);const o=mi([t.from,a,i]);this._active=!0,this._fn=t.fn||La[t.type||typeof o],this._easing=_s[t.easing]||_s.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=o,this._to=i,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);const i=this._target[this._prop],a=s-this._start,o=this._duration-a;this._start=s,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=a,this._loop=!!t.loop,this._to=mi([t.to,e,i,t.from]),this._from=mi([t.from,i,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,s=this._duration,i=this._prop,a=this._from,o=this._loop,n=this._to;let r;if(this._active=a!==n&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[i]=this._fn(a,n,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,s)=>{t.push({res:e,rej:s})}))}_notify(t){const e=t?"res":"rej",s=this._promises||[];for(let i=0;i{const a=t[i];if(!re(a))return;const o={};for(const t of e)o[t]=a[t];(ne(a.properties)&&a.properties||[i]).forEach((t=>{t!==i&&s.has(t)||s.set(t,o)}))}))}_animateOptions(t,e){const s=e.options,i=Ia(t,s);if(!i)return[];const a=this._createAnimations(i,s);return s.$shared&&$a(t.options.$animations,s).then((()=>{t.options=s}),(()=>{})),a}_createAnimations(t,e){const s=this._properties,i=[],a=t.$animations||(t.$animations={}),o=Object.keys(e),n=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){i.push(...this._animateOptions(t,e));continue}const c=e[l];let p=a[l];const d=s.get(l);if(p){if(d&&p.active()){p.update(d,c,n);continue}p.cancel()}d&&d.duration?(a[l]=p=new Fa(d,t,l,c),i.push(p)):t[l]=c}return i}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const s=this._createAnimations(t,e);return s.length?(Ra.add(this._chart,s),!0):void 0}}function $a(t,e){const s=[],i=Object.keys(e);for(let a=0;a0||!s&&e<0)return a.index}return null}function Wa(t,e){const{chart:s,_cachedMeta:i}=t,a=s._stacks||(s._stacks={}),{iScale:o,vScale:n,index:r}=i,l=o.axis,c=n.axis,p=Ha(o,n,i),d=e.length;let h;for(let u=0;us[t].axis===e)).shift()}function Za(t,e){return gi(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function Xa(t,e,s){return gi(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:s,index:e,mode:"default",type:"data"})}function Ya(t,e){const s=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[i]||void 0===e[i][s])return;delete e[i][s],void 0!==e[i]._visualValues&&void 0!==e[i]._visualValues[s]&&delete e[i]._visualValues[s]}}}const Ja=t=>"reset"===t||"none"===t,Qa=(t,e)=>e?t:Object.assign({},t),to=(t,e,s)=>t&&!e.hidden&&e._stacked&&{keys:Ea(s,!0),values:null};class eo{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Va(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ya(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,s=this.getDataset(),i=(t,e,s,i)=>"x"===t?e:"r"===t?i:s,a=e.xAxisID=pe(s.xAxisID,Ka(t,"x")),o=e.yAxisID=pe(s.yAxisID,Ka(t,"y")),n=e.rAxisID=pe(s.rAxisID,Ka(t,"r")),r=e.indexAxis,l=e.iAxisID=i(r,a,o,n),c=e.vAxisID=i(r,o,a,n);e.xScale=this.getScaleForId(a),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(n),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&cs(this._data,this),t._stacked&&Ya(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(re(e)){const t=this._cachedMeta;this._data=za(e,t)}else if(s!==e){if(s){cs(s,this);const t=this._cachedMeta;Ya(t),t._parsed=[]}e&&Object.isExtensible(e)&&ls(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,s=this.getDataset();let i=!1;this._dataCheck();const a=e._stacked;e._stacked=Va(e.vScale,e),e.stack!==s.stack&&(i=!0,Ya(e),e.stack=s.stack),this._resyncElements(t),(i||a!==e._stacked)&&Wa(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),s=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:s,_data:i}=this,{iScale:a,_stacked:o}=s,n=a.axis;let r,l,c,p=0===t&&e===i.length||s._sorted,d=t>0&&s._parsed[t-1];if(!1===this._parsing)s._parsed=i,s._sorted=!0,c=i;else{c=ne(i[t])?this.parseArrayData(s,i,t,e):re(i[t])?this.parseObjectData(s,i,t,e):this.parsePrimitiveData(s,i,t,e);const a=()=>null===l[n]||d&&l[n]e||p=0;--d)if(!u()){this.updateRangeFromParsed(l,t,h,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,s=[];let i,a,o;for(i=0,a=e.length;i=0&&tthis.getContext(s,i,e),m=l.resolveNamedOptions(d,h,u,p);return m.$shared&&(m.$shared=r,a[o]=Object.freeze(Qa(m,r))),m}_resolveAnimations(t,e,s){const i=this.chart,a=this._cachedDataOpts,o=`animation-${e}`,n=a[o];if(n)return n;let r;if(!1!==i.options.animation){const i=this.chart.config,a=i.datasetAnimationScopeKeys(this._type,e),o=i.getOptionScopes(this.getDataset(),a);r=i.createResolver(o,this.getContext(t,s,e))}const l=new Ma(i,r&&r.animations);return r&&r._cacheable&&(a[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ja(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const s=this.resolveDataElementOptions(t,e),i=this._sharedOptions,a=this.getSharedOptions(s),o=this.includeOptions(e,a)||a!==i;return this.updateSharedOptions(a,e,s),{sharedOptions:a,includeOptions:o}}updateElement(t,e,s,i){Ja(i)?Object.assign(t,s):this._resolveAnimations(e,i).update(t,s)}updateSharedOptions(t,e,s){t&&!Ja(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,i){t.active=i;const a=this.getStyle(e,i);this._resolveAnimations(e,s,i).update(t,{options:!i&&this.getSharedOptions(a)||a})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,s=this._cachedMeta.data;for(const[n,r,l]of this._syncList)this[n](r,l);this._syncList=[];const i=s.length,a=e.length,o=Math.min(a,i);o&&this.parse(0,o),a>i?this._insertElements(i,a-i,t):a{for(t.length+=e,n=t.length-1;n>=o;n--)t[n]=t[n-e]};for(r(a),n=t;n0&&this.getParsed(e-1);for(let x=0;x=b){u.skip=!0;continue}const v=this.getParsed(x),w=oe(v[h]),_=u[d]=o.getPixelForValue(v[d],x),S=u[h]=a||w?n.getBasePixel():n.getPixelForValue(r?this.applyStack(n,v,r):v[h],x);u.skip=isNaN(_)||isNaN(S)||w,u.stop=x>0&&Math.abs(v[d]-y[d])>f,m&&(u.parsed=v,u.raw=l.data[x]),p&&(u.options=c||this.resolveDataElementOptions(x,s.active?"active":i)),g||this.updateElement(s,x,u,i),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,s=e.options&&e.options.borderWidth||0,i=t.data||[];if(!i.length)return s;const a=i[0].size(this.resolveDataElementOptions(0)),o=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(s,a,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}function io(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ao{static override(t){Object.assign(ao.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return io()}parse(){return io()}format(){return io()}add(){return io()}diff(){return io()}startOf(){return io()}endOf(){return io()}}var oo={_date:ao};function no(t,e,s,i){const{controller:a,data:o,_sorted:n}=t,r=a._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&n&&o.length){const t=r._reversePixels?os:as;if(!i)return t(o,e,s);if(a._sharedOptions){const i=o[0],a="function"===typeof i.getRange&&i.getRange(e);if(a){const i=t(o,e,s-a),n=t(o,e,s+a);return{lo:i.lo,hi:n.hi}}}}return{lo:0,hi:o.length-1}}function ro(t,e,s,i,a){const o=t.getSortedVisibleDatasetMetas(),n=s[e];for(let r=0,l=o.length;r{t[n]&&t[n](e[s],a)&&(o.push({element:t,datasetIndex:i,index:l}),r=r||t.inRange(e.x,e.y,a))})),i&&!r?[]:o}var fo={evaluateInteractionItems:ro,modes:{index(t,e,s,i){const a=ea(e,t),o=s.axis||"x",n=s.includeInvisible||!1,r=s.intersect?co(t,a,o,i,n):uo(t,a,o,!1,i,n),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,s=t.data[e];s&&!s.skip&&l.push({element:s,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,s,i){const a=ea(e,t),o=s.axis||"xy",n=s.includeInvisible||!1;let r=s.intersect?co(t,a,o,i,n):uo(t,a,o,!1,i,n);if(r.length>0){const e=r[0].datasetIndex,s=t.getDatasetMeta(e).data;r=[];for(let t=0;tt.pos===e))}function vo(t,e){return t.filter((t=>-1===go.indexOf(t.pos)&&t.box.axis===e))}function yo(t,e){return t.sort(((t,s)=>{const i=e?s:t,a=e?t:s;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function xo(t){const e=[];let s,i,a,o,n,r;for(s=0,i=(t||[]).length;st.box.fullSize)),!0),i=yo(bo(e,"left"),!0),a=yo(bo(e,"right")),o=yo(bo(e,"top"),!0),n=yo(bo(e,"bottom")),r=vo(e,"x"),l=vo(e,"y");return{fullSize:s,leftAndTop:i.concat(o),rightAndBottom:a.concat(l).concat(n).concat(r),chartArea:bo(e,"chartArea"),vertical:i.concat(a).concat(l),horizontal:o.concat(n).concat(r)}}function Co(t,e,s,i){return Math.max(t[s],e[s])+Math.max(t[i],e[i])}function ko(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Ao(t,e,s,i){const{pos:a,box:o}=s,n=t.maxPadding;if(!re(a)){s.size&&(t[a]-=s.size);const e=i[s.stack]||{size:0,count:1};e.size=Math.max(e.size,s.horizontal?o.height:o.width),s.size=e.size/e.count,t[a]+=s.size}o.getPadding&&ko(n,o.getPadding());const r=Math.max(0,e.outerWidth-Co(n,t,"left","right")),l=Math.max(0,e.outerHeight-Co(n,t,"top","bottom")),c=r!==t.w,p=l!==t.h;return t.w=r,t.h=l,s.horizontal?{same:c,other:p}:{same:p,other:c}}function To(t){const e=t.maxPadding;function s(s){const i=Math.max(e[s]-t[s],0);return t[s]+=i,i}t.y+=s("top"),t.x+=s("left"),s("right"),s("bottom")}function Po(t,e){const s=e.maxPadding;function i(t){const i={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{i[t]=Math.max(e[t],s[t])})),i}return i(t?["left","right"]:["top","bottom"])}function Ro(t,e,s,i){const a=[];let o,n,r,l,c,p;for(o=0,n=t.length,c=0;o{"function"===typeof t.beforeLayout&&t.beforeLayout()}));const p=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:s,padding:a,availableWidth:o,availableHeight:n,vBoxMaxWidth:o/2/p,hBoxMaxHeight:n/2}),h=Object.assign({},a);ko(h,hi(i));const u=Object.assign({maxPadding:h,w:o,h:n,x:a.left,y:a.top},a),m=_o(l.concat(c),d);Ro(r.fullSize,u,d,m),Ro(l,u,d,m),Ro(c,u,d,m)&&Ro(l,u,d,m),To(u),Lo(r.leftAndTop,u,d,m),u.x+=u.w,u.y+=u.h,Lo(r.rightAndBottom,u,d,m),t.chartArea={left:u.left,top:u.top,right:u.left+u.w,bottom:u.top+u.h,height:u.h,width:u.w},ue(r.chartArea,(e=>{const s=e.box;Object.assign(s,t.chartArea),s.update(u.w,u.h,{left:0,top:0,right:0,bottom:0})}))}};class Mo{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,s){}removeEventListener(t,e,s){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,s,i){return e=Math.max(0,e||t.width),s=s||t.height,{width:e,height:Math.max(0,i?Math.floor(e/i):s)}}isAttached(t){return!0}updateConfig(t){}}class $o extends Mo{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Io="$chartjs",No={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Uo=t=>null===t||""===t;function Oo(t,e){const s=t.style,i=t.getAttribute("height"),a=t.getAttribute("width");if(t[Io]={initial:{height:i,width:a,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",Uo(a)){const e=ra(t,"width");void 0!==e&&(t.width=e)}if(Uo(i))if(""===t.style.height)t.height=t.width/(e||2);else{const e=ra(t,"height");void 0!==e&&(t.height=e)}return t}const Eo=!!na&&{passive:!0};function Bo(t,e,s){t&&t.addEventListener(e,s,Eo)}function zo(t,e,s){t&&t.canvas&&t.canvas.removeEventListener(e,s,Eo)}function Vo(t,e){const s=No[t.type]||t.type,{x:i,y:a}=ea(t,e);return{type:s,chart:e,native:t,x:void 0!==i?i:null,y:void 0!==a?a:null}}function Ho(t,e){for(const s of t)if(s===e||s.contains(e))return!0}function jo(t,e,s){const i=t.canvas,a=new MutationObserver((t=>{let e=!1;for(const s of t)e=e||Ho(s.addedNodes,i),e=e&&!Ho(s.removedNodes,i);e&&s()}));return a.observe(document,{childList:!0,subtree:!0}),a}function qo(t,e,s){const i=t.canvas,a=new MutationObserver((t=>{let e=!1;for(const s of t)e=e||Ho(s.removedNodes,i),e=e&&!Ho(s.addedNodes,i);e&&s()}));return a.observe(document,{childList:!0,subtree:!0}),a}const Go=new Map;let Wo=0;function Ko(){const t=window.devicePixelRatio;t!==Wo&&(Wo=t,Go.forEach(((e,s)=>{s.currentDevicePixelRatio!==t&&e()})))}function Zo(t,e){Go.size||window.addEventListener("resize",Ko),Go.set(t,e)}function Xo(t){Go.delete(t),Go.size||window.removeEventListener("resize",Ko)}function Yo(t,e,s){const i=t.canvas,a=i&&Wi(i);if(!a)return;const o=hs(((t,e)=>{const i=a.clientWidth;s(t,e),i{const e=t[0],s=e.contentRect.width,i=e.contentRect.height;0===s&&0===i||o(s,i)}));return n.observe(a),Zo(t,o),n}function Jo(t,e,s){s&&s.disconnect(),"resize"===e&&Xo(t)}function Qo(t,e,s){const i=t.canvas,a=hs((e=>{null!==t.ctx&&s(Vo(e,t))}),t);return Bo(i,e,a),a}class tn extends Mo{acquireContext(t,e){const s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(Oo(t,e),s):null}releaseContext(t){const e=t.canvas;if(!e[Io])return!1;const s=e[Io].initial;["height","width"].forEach((t=>{const i=s[t];oe(i)?e.removeAttribute(t):e.setAttribute(t,i)}));const i=s.style||{};return Object.keys(i).forEach((t=>{e.style[t]=i[t]})),e.width=e.width,delete e[Io],!0}addEventListener(t,e,s){this.removeEventListener(t,e);const i=t.$proxies||(t.$proxies={}),a={attach:jo,detach:qo,resize:Yo},o=a[e]||Qo;i[e]=o(t,e,s)}removeEventListener(t,e){const s=t.$proxies||(t.$proxies={}),i=s[e];if(!i)return;const a={attach:Jo,detach:Jo,resize:Jo},o=a[e]||zo;o(t,e,i),s[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,i){return aa(t,e,s,i)}isAttached(t){const e=t&&Wi(t);return!(!e||!e.isConnected)}}function en(t){return!Gi()||"undefined"!==typeof OffscreenCanvas&&t instanceof OffscreenCanvas?$o:tn}class sn{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:s}=this.getProps(["x","y"],t);return{x:e,y:s}}hasValue(){return He(this.x)&&He(this.y)}getProps(t,e){const s=this.$animations;if(!e||!s)return this;const i={};return t.forEach((t=>{i[t]=s[t]&&s[t].active()?s[t]._to:this[t]})),i}}function an(t,e){const s=t.options.ticks,i=on(t),a=Math.min(s.maxTicksLimit||i,i),o=s.major.enabled?rn(e):[],n=o.length,r=o[0],l=o[n-1],c=[];if(n>a)return ln(e,c,o,n/a),c;const p=nn(o,e,a);if(n>0){let t,s;const i=n>1?Math.round((l-r)/(n-1)):null;for(cn(e,c,p,oe(i)?0:r-i,r),t=0,s=n-1;ta)return t}return Math.max(a,1)}function rn(t){const e=[];let s,i;for(s=0,i=t.length;s"left"===t?"right":"right"===t?"left":t,hn=(t,e,s)=>"top"===e||"left"===e?t[e]+s:t[e]-s,un=(t,e)=>Math.min(e||t,t);function mn(t,e){const s=[],i=t.length/e,a=t.length;let o=0;for(;on+r)))return c}function gn(t,e){ue(t,(t=>{const s=t.gc,i=s.length/2;let a;if(i>e){for(a=0;ai?i:s,i=a&&s>i?s:i,{min:ce(s,ce(i,s)),max:ce(i,ce(s,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this._labelItems=this._computeLabelItems(t));return e}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){he(this.options.beforeUpdate,[this])}update(t,e,s){const{beginAtZero:i,grace:a,ticks:o}=this.options,n=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=fi(this,a,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=n=a||s<=1||!this.isHorizontal())return void(this.labelRotation=i);const c=this._getLabelSizes(),p=c.widest.width,d=c.highest.height,h=ts(this.chart.width-p,0,this.maxWidth);o=t.offset?this.maxWidth/s:h/(s-1),p+6>o&&(o=h/(s-(t.offset?.5:1)),n=this.maxHeight-bn(t.grid)-e.padding-vn(t.title,this.chart.options.font),r=Math.sqrt(p*p+d*d),l=We(Math.min(Math.asin(ts((c.highest.height+6)/o,-1,1)),Math.asin(ts(n/r,-1,1))-Math.asin(ts(d/r,-1,1)))),l=Math.max(i,Math.min(a,l))),this.labelRotation=l}afterCalculateLabelRotation(){he(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){he(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:s,title:i,grid:a}}=this,o=this._isVisible(),n=this.isHorizontal();if(o){const o=vn(i,e.options.font);if(n?(t.width=this.maxWidth,t.height=bn(a)+o):(t.height=this.maxHeight,t.width=bn(a)+o),s.display&&this.ticks.length){const{first:e,last:i,widest:a,highest:o}=this._getLabelSizes(),r=2*s.padding,l=Ge(this.labelRotation),c=Math.cos(l),p=Math.sin(l);if(n){const e=s.mirror?0:p*a.width+c*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=s.mirror?0:c*a.width+p*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,i,p,c)}}this._handleMargins(),n?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,i){const{ticks:{align:a,padding:o},position:n}=this.options,r=0!==this.labelRotation,l="top"!==n&&"x"===this.axis;if(this.isHorizontal()){const n=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let p=0,d=0;r?l?(p=i*t.width,d=s*e.height):(p=s*t.height,d=i*e.width):"start"===a?d=e.width:"end"===a?p=t.width:"inner"!==a&&(p=t.width/2,d=e.width/2),this.paddingLeft=Math.max((p-n+o)*this.width/(this.width-n),0),this.paddingRight=Math.max((d-c+o)*this.width/(this.width-c),0)}else{let s=e.height/2,i=t.height/2;"start"===a?(s=0,i=t.height):"end"===a&&(s=e.height,i=0),this.paddingTop=s+o,this.paddingBottom=i+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){he(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,s=t.length;e({width:o[t]||0,height:n[t]||0});return{first:S(0),last:S(e-1),widest:S(w),highest:S(_),widths:o,heights:n}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return es(this._alignToPixels?qs(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&tn*i?n/s:r/i:r*i0}_computeGridLineItems(t){const e=this.axis,s=this.chart,i=this.options,{grid:a,position:o,border:n}=i,r=a.offset,l=this.isHorizontal(),c=this.ticks,p=c.length+(r?1:0),d=bn(a),h=[],u=n.setContext(this.getContext()),m=u.display?u.width:0,f=m/2,g=function(t){return qs(s,t,m)};let b,v,y,x,w,_,S,C,k,A,T,P;if("top"===o)b=g(this.bottom),_=this.bottom-d,C=b-f,A=g(t.top)+f,P=t.bottom;else if("bottom"===o)b=g(this.top),A=t.top,P=g(t.bottom)-f,_=b+f,C=this.top+d;else if("left"===o)b=g(this.right),w=this.right-d,S=b-f,k=g(t.left)+f,T=t.right;else if("right"===o)b=g(this.left),k=t.left,T=g(t.right)-f,w=b+f,S=this.left+d;else if("x"===e){if("center"===o)b=g((t.top+t.bottom)/2+.5);else if(re(o)){const t=Object.keys(o)[0],e=o[t];b=g(this.chart.scales[t].getPixelForValue(e))}A=t.top,P=t.bottom,_=b+f,C=_+d}else if("y"===e){if("center"===o)b=g((t.left+t.right)/2);else if(re(o)){const t=Object.keys(o)[0],e=o[t];b=g(this.chart.scales[t].getPixelForValue(e))}w=b-f,S=w-d,k=t.left,T=t.right}const R=pe(i.ticks.maxTicksLimit,p),D=Math.max(1,Math.ceil(p/R));for(v=0;v0&&(o-=i/2);break}d={left:o,top:a,width:i+e.width,height:s+e.height,color:t.backdropColor}}f.push({label:y,font:C,textOffset:T,options:{rotation:m,color:s,strokeColor:r,strokeWidth:c,textAlign:h,textBaseline:P,translation:[x,w],backdrop:d}})}return f}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options,s=-Ge(this.labelRotation);if(s)return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:s,mirror:i,padding:a}}=this.options,o=this._getLabelSizes(),n=t+a,r=o.widest.width;let l,c;return"left"===e?i?(c=this.right+a,"near"===s?l="left":"center"===s?(l="center",c+=r/2):(l="right",c+=r)):(c=this.right-n,"near"===s?l="right":"center"===s?(l="center",c-=r/2):(l="left",c=this.left)):"right"===e?i?(c=this.left+a,"near"===s?l="right":"center"===s?(l="center",c-=r/2):(l="left",c-=r)):(c=this.left+n,"near"===s?l="left":"center"===s?(l="center",c+=r/2):(l="right",c=this.right)):l="right",{textAlign:l,x:c}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:s,top:i,width:a,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(s,i,a,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const s=this.ticks,i=s.findIndex((e=>e.value===t));if(i>=0){const t=e.setContext(this.getContext(i));return t.lineWidth}return 0}drawGrid(t){const e=this.options.grid,s=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let a,o;const n=(t,e,i)=>{i.width&&i.color&&(s.save(),s.lineWidth=i.width,s.strokeStyle=i.color,s.setLineDash(i.borderDash||[]),s.lineDashOffset=i.borderDashOffset,s.beginPath(),s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke(),s.restore())};if(e.display)for(a=0,o=i.length;a{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",i=[];let a,o;for(a=0,o=e.length;a{const i=s.split("."),a=i.pop(),o=[t].concat(i).join("."),n=e[s].split("."),r=n.pop(),l=n.join(".");Vs.route(o,a,l,r)}))}function Tn(t){return"id"in t&&"defaults"in t}class Pn{constructor(){this.controllers=new Cn(eo,"datasets",!0),this.elements=new Cn(sn,"elements"),this.plugins=new Cn(Object,"plugins"),this.scales=new Cn(Sn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,s){[...e].forEach((e=>{const i=s||this._getRegistryForType(e);s||i.isForType(e)||i===this.plugins&&e.id?this._exec(t,i,e):ue(e,(e=>{const i=s||this._getRegistryForType(e);this._exec(t,i,e)}))}))}_exec(t,e,s){const i=ke(t);he(s["before"+i],[],s),e[t](s),he(s["after"+i],[],s)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(i(e,s),t,"stop"),this._notify(i(s,e),t,"start")}}function Ln(t){const e={},s=[],i=Object.keys(Rn.plugins.items);for(let o=0;o1&&On(t[0].toLowerCase());if(e)return e}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function zn(t,e,s){if(s[e+"AxisID"]===t)return{axis:e}}function Vn(t,e){if(e.data&&e.data.datasets){const s=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(s.length)return zn(t,"x",s[0])||zn(t,"y",s[0])}return{}}function Hn(t,e){const s=Us[t.type]||{scales:{}},i=e.scales||{},a=In(t.type,e),o=Object.create(null);return Object.keys(i).forEach((e=>{const n=i[e];if(!re(n))return console.error(`Invalid scale configuration for scale: ${e}`);if(n._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const r=Bn(e,n,Vn(e,t),Vs.scales[n.type]),l=Un(r,a),c=s.scales||{};o[e]=ye(Object.create(null),[{axis:r},n,c[r],c[l]])})),t.data.datasets.forEach((s=>{const a=s.type||t.type,n=s.indexAxis||In(a,e),r=Us[a]||{},l=r.scales||{};Object.keys(l).forEach((t=>{const e=Nn(t,n),a=s[e+"AxisID"]||e;o[a]=o[a]||Object.create(null),ye(o[a],[{axis:e},i[a],l[t]])}))})),Object.keys(o).forEach((t=>{const e=o[t];ye(e,[Vs.scales[e.type],Vs.scale])})),o}function jn(t){const e=t.options||(t.options={});e.plugins=pe(e.plugins,{}),e.scales=Hn(t,e)}function qn(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function Gn(t){return t=t||{},t.data=qn(t.data),jn(t),t}const Wn=new Map,Kn=new Set;function Zn(t,e){let s=Wn.get(t);return s||(s=e(),Wn.set(t,s),Kn.add(s)),s}const Xn=(t,e,s)=>{const i=Ce(e,s);void 0!==i&&t.add(i)};class Yn{constructor(t){this._config=Gn(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=qn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),jn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Zn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Zn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Zn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id,s=this.type;return Zn(`${s}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const s=this._scopeCache;let i=s.get(t);return i&&!e||(i=new Map,s.set(t,i)),i}getOptionScopes(t,e,s){const{options:i,type:a}=this,o=this._cachedScopes(t,s),n=o.get(e);if(n)return n;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Xn(r,t,e)))),e.forEach((t=>Xn(r,i,t))),e.forEach((t=>Xn(r,Us[a]||{},t))),e.forEach((t=>Xn(r,Vs,t))),e.forEach((t=>Xn(r,Os,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Kn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,Us[e]||{},Vs.datasets[e]||{},{type:e},Vs,Os]}resolveNamedOptions(t,e,s,i=[""]){const a={$shared:!0},{resolver:o,subPrefixes:n}=Jn(this._resolverCache,t,i);let r=o;if(tr(o,e)){a.$shared=!1,s=Te(s)?s():s;const e=this.createResolver(t,s,n);r=vi(o,s,e)}for(const l of e)a[l]=r[l];return a}createResolver(t,e,s=[""],i){const{resolver:a}=Jn(this._resolverCache,t,s);return re(e)?vi(a,e,void 0,i):a}}function Jn(t,e,s){let i=t.get(e);i||(i=new Map,t.set(e,i));const a=s.join();let o=i.get(a);if(!o){const t=bi(e,s);o={resolver:t,subPrefixes:s.filter((t=>!t.toLowerCase().includes("hover")))},i.set(a,o)}return o}const Qn=t=>re(t)&&Object.getOwnPropertyNames(t).some((e=>Te(t[e])));function tr(t,e){const{isScriptable:s,isIndexable:i}=yi(t);for(const a of e){const e=s(a),o=i(a),n=(o||e)&&t[a];if(e&&(Te(n)||Qn(n))||o&&ne(n))return!0}return!1}var er="4.4.4";const sr=["top","bottom","left","right","chartArea"];function ir(t,e){return"top"===t||"bottom"===t||-1===sr.indexOf(t)&&"x"===e}function ar(t,e){return function(s,i){return s[t]===i[t]?s[e]-i[e]:s[t]-i[t]}}function or(t){const e=t.chart,s=e.options.animation;e.notifyPlugins("afterRender"),he(s&&s.onComplete,[t],e)}function nr(t){const e=t.chart,s=e.options.animation;he(s&&s.onProgress,[t],e)}function rr(t){return Gi()&&"string"===typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const lr={},cr=t=>{const e=rr(t);return Object.values(lr).filter((t=>t.canvas===e)).pop()};function pr(t,e,s){const i=Object.keys(t);for(const a of i){const i=+a;if(i>=e){const o=t[a];delete t[a],(s>0||i>e)&&(t[i+s]=o)}}}function dr(t,e,s,i){return s&&"mouseout"!==t.type?i?e:t:null}function hr(t,e,s){return t.options.clip?t[s]:e[s]}function ur(t,e){const{xScale:s,yScale:i}=t;return s&&i?{left:hr(s,e,"left"),right:hr(s,e,"right"),top:hr(i,e,"top"),bottom:hr(i,e,"bottom")}:e}class mr{static defaults=Vs;static instances=lr;static overrides=Us;static registry=Rn;static version=er;static getChart=cr;static register(...t){Rn.add(...t),fr()}static unregister(...t){Rn.remove(...t),fr()}constructor(t,e){const s=this.config=new Yn(e),i=rr(t),a=cr(i);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const o=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||en(i)),this.platform.updateConfig(s);const n=this.platform.acquireContext(i,o.aspectRatio),r=n&&n.canvas,l=r&&r.height,c=r&&r.width;this.id=ae(),this.ctx=n,this.canvas=r,this.width=c,this.height=l,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Dn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=us((t=>this.update(t)),o.resizeDelay||0),this._dataChanges=[],lr[this.id]=this,n&&r?(Ra.listen(this,"complete",or),Ra.listen(this,"progress",nr),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:i,_aspectRatio:a}=this;return oe(t)?e&&a?a:i?s/i:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Rn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():oa(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gs(this.canvas,this.ctx),this}stop(){return Ra.stop(this),this}resize(t,e){Ra.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const s=this.options,i=this.canvas,a=s.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(i,t,e,a),n=s.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,oa(this,n,!0)&&(this.notifyPlugins("resize",{size:o}),he(s.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){const t=this.options,e=t.scales||{};ue(e,((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,s=this.scales,i=Object.keys(s).reduce(((t,e)=>(t[e]=!1,t)),{});let a=[];e&&(a=a.concat(Object.keys(e).map((t=>{const s=e[t],i=Bn(t,s),a="r"===i,o="x"===i;return{options:s,dposition:a?"chartArea":o?"bottom":"left",dtype:a?"radialLinear":o?"category":"linear"}})))),ue(a,(e=>{const a=e.options,o=a.id,n=Bn(o,a),r=pe(a.type,e.dtype);void 0!==a.position&&ir(a.position,n)===ir(e.dposition)||(a.position=e.dposition),i[o]=!0;let l=null;if(o in s&&s[o].type===r)l=s[o];else{const t=Rn.getScale(r);l=new t({id:o,type:r,ctx:this.ctx,chart:this}),s[l.id]=l}l.init(a,t)})),ue(i,((t,e)=>{t||delete s[e]})),ue(s,(t=>{Fo.configure(this,t,t.options),Fo.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort(((t,e)=>t.index-e.index)),s>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,s)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(s)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let s,i;for(this._removeUnreferencedMetasets(),s=0,i=e.length;s{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let l=0,c=this.data.datasets.length;l{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(ar("z","_idx"));const{_active:n,_lastEvent:r}=this;r?this._eventHandler(r,!0):n.length&&this._updateHoverStyles(n,n,!0),this.render()}_updateScales(){ue(this.scales,(t=>{Fo.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);Pe(e,s)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:s,start:i,count:a}of e){const e="_removeElements"===s?-a:a;pr(t,i,e)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,s=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),i=s(0);for(let a=1;at.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Fo.update(this,this.width,this.height,t);const e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],ue(this.boxes,(t=>{s&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,s=t._clip,i=!s.disabled,a=ur(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(i&&Xs(e,{left:!1===s.left?0:a.left-s.left,right:!1===s.right?this.width:a.right+s.right,top:!1===s.top?0:a.top-s.top,bottom:!1===s.bottom?this.height:a.bottom+s.bottom}),t.controller.draw(),i&&Ys(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Zs(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,s,i){const a=fo.modes[e];return"function"===typeof a?a(this,t,s,i):[]}getDatasetMeta(t){const e=this.data.datasets[t],s=this._metasets;let i=s.filter((t=>t&&t._dataset===e)).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(i)),i}getContext(){return this.$context||(this.$context=gi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const s=this.getDatasetMeta(t);return"boolean"===typeof s.hidden?!s.hidden:!e.hidden}setDatasetVisibility(t,e){const s=this.getDatasetMeta(t);s.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){const i=s?"show":"hide",a=this.getDatasetMeta(t),o=a.controller._resolveAnimations(void 0,i);Ae(e)?(a.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),o.update(a,{visible:s}),this.update((e=>e.datasetIndex===t?i:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),Ra.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,s,i),t[s]=i},i=(t,e,s)=>{t.offsetX=e,t.offsetY=s,this._eventHandler(t)};ue(this.options.events,(t=>s(t,i)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,s=(s,i)=>{e.addEventListener(this,s,i),t[s]=i},i=(s,i)=>{t[s]&&(e.removeEventListener(this,s,i),delete t[s])},a=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const n=()=>{i("attach",n),this.attached=!0,this.resize(),s("resize",a),s("detach",o)};o=()=>{this.attached=!1,i("resize",a),this._stop(),this._resize(0,0),s("attach",n)},e.isAttached(this.canvas)?n():o()}unbindEvents(){ue(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},ue(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){const i=s?"set":"remove";let a,o,n,r;for("dataset"===e&&(a=this.getDatasetMeta(t[0].datasetIndex),a.controller["_"+i+"DatasetHoverStyle"]()),n=0,r=t.length;n{const s=this.getDatasetMeta(t);if(!s)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:s.data[e],index:e}})),i=!me(s,e);i&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,s){const i=this.options.hover,a=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=a(e,t),n=s?t:a(t,e);o.length&&this.updateHoverStyle(o,i.mode,!1),n.length&&i.mode&&this.updateHoverStyle(n,i.mode,!0)}_eventHandler(t,e){const s={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},i=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",s,i))return;const a=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,i),(a||s.changed)&&this.render(),this}_handleEvent(t,e,s){const{_active:i=[],options:a}=this,o=e,n=this._getActiveElements(t,i,s,o),r=Re(t),l=dr(t,this._lastEvent,s,r);s&&(this._lastEvent=null,he(a.onHover,[t,n,this],this),r&&he(a.onClick,[t,n,this],this));const c=!me(n,i);return(c||e)&&(this._active=n,this._updateHoverStyles(n,i,e)),this._lastEvent=l,c}_getActiveElements(t,e,s,i){if("mouseout"===t.type)return[];if(!s)return e;const a=this.options.hover;return this.getElementsAtEventForMode(t,a.mode,a,i)}}function fr(){return ue(mr.instances,(t=>t._plugins.invalidate()))}function gr(t,e,s=e){t.lineCap=pe(s.borderCapStyle,e.borderCapStyle),t.setLineDash(pe(s.borderDash,e.borderDash)),t.lineDashOffset=pe(s.borderDashOffset,e.borderDashOffset),t.lineJoin=pe(s.borderJoinStyle,e.borderJoinStyle),t.lineWidth=pe(s.borderWidth,e.borderWidth),t.strokeStyle=pe(s.borderColor,e.borderColor)}function br(t,e,s){t.lineTo(s.x,s.y)}function vr(t){return t.stepped?Js:t.tension||"monotone"===t.cubicInterpolationMode?Qs:br}function yr(t,e,s={}){const i=t.length,{start:a=0,end:o=i-1}=s,{start:n,end:r}=e,l=Math.max(a,n),c=Math.min(o,r),p=ar&&o>r;return{count:i,start:l,loop:e.loop,ilen:c(n+(c?r-t:t))%o,y=()=>{u!==m&&(t.lineTo(g,m),t.lineTo(g,u),t.lineTo(g,f))};for(l&&(d=a[v(0)],t.moveTo(d.x,d.y)),p=0;p<=r;++p){if(d=a[v(p)],d.skip)continue;const e=d.x,s=d.y,i=0|e;i===h?(sm&&(m=s),g=(b*g+e)/++b):(y(),t.lineTo(e,s),h=i,b=0,u=m=s),f=s}y()}function _r(t){const e=t.options,s=e.borderDash&&e.borderDash.length,i=!t._decimated&&!t._loop&&!e.tension&&"monotone"!==e.cubicInterpolationMode&&!e.stepped&&!s;return i?wr:xr}function Sr(t){return t.stepped?ca:t.tension||"monotone"===t.cubicInterpolationMode?pa:la}function Cr(t,e,s,i){let a=e._path;a||(a=e._path=new Path2D,e.path(a,s,i)&&a.closePath()),gr(t,e.options),t.stroke(a)}function kr(t,e,s,i){const{segments:a,options:o}=e,n=_r(e);for(const r of a)gr(t,o,r.style),t.beginPath(),n(t,e,r,{start:s,end:s+i-1})&&t.closePath(),t.stroke()}const Ar="function"===typeof Path2D;function Tr(t,e,s,i){Ar&&!e.options.segment?Cr(t,e,s,i):kr(t,e,s,i)}class Pr extends sn{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const s=this.options;if((s.tension||"monotone"===s.cubicInterpolationMode)&&!s.stepped&&!this._pointsUpdated){const i=s.spanGaps?this._loop:this._fullLoop;qi(this._points,s,t,i,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Sa(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,s=t.length;return s&&e[t[s-1].end]}interpolate(t,e){const s=this.options,i=t[e],a=this.points,o=xa(this,{property:e,start:i,end:i});if(!o.length)return;const n=[],r=Sr(s);let l,c;for(l=0,c=o.length;l{e=$r(t,e,a);const n=a[t],r=a[e];null!==i?(o.push({x:n.x,y:i}),o.push({x:r.x,y:i})):null!==s&&(o.push({x:s,y:n.y}),o.push({x:s,y:r.y}))})),o}function $r(t,e,s){for(;e>t;e--){const t=s[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Ir(t,e,s,i){return t&&e?i(t[s],e[s]):t?t[s]:e?e[s]:0}function Nr(t,e){let s=[],i=!1;return ne(t)?(i=!0,s=t):s=Mr(t,e),s.length?new Pr({points:s,options:{tension:0},_loop:i,_fullLoop:i}):null}function Ur(t){return t&&!1!==t.fill}function Or(t,e,s){const i=t[e];let a=i.fill;const o=[e];let n;if(!s)return a;while(!1!==a&&-1===o.indexOf(a)){if(!le(a))return a;if(n=t[a],!n)return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function Er(t,e,s){const i=Hr(t);if(re(i))return!isNaN(i.value)&&i;let a=parseFloat(i);return le(a)&&Math.floor(a)===a?Br(i[0],e,a,s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function Br(t,e,s,i){return"-"!==t&&"+"!==t||(s=e+s),!(s===e||s<0||s>=i)&&s}function zr(t,e){let s=null;return"start"===t?s=e.bottom:"end"===t?s=e.top:re(t)?s=e.getPixelForValue(t.value):e.getBasePixel&&(s=e.getBasePixel()),s}function Vr(t,e,s){let i;return i="start"===t?s:"end"===t?e.options.reverse?e.min:e.max:re(t)?t.value:e.getBaseValue(),i}function Hr(t){const e=t.options,s=e.fill;let i=pe(s&&s.target,s);return void 0===i&&(i=!!e.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}function jr(t){const{scale:e,index:s,line:i}=t,a=[],o=i.segments,n=i.points,r=qr(e,s);r.push(Nr({x:null,y:e.bottom},i));for(let l=0;l=0;--n){const e=a[n].$filler;e&&(e.line.updateControlPoints(o,e.axis),i&&e.fill&&tl(t.ctx,e,o))}},beforeDatasetsDraw(t,e,s){if("beforeDatasetsDraw"!==s.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let a=i.length-1;a>=0;--a){const e=i[a].$filler;Ur(e)&&tl(t.ctx,e,t.chartArea)}},beforeDatasetDraw(t,e,s){const i=e.meta.$filler;Ur(i)&&"beforeDatasetDraw"===s.drawTime&&tl(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const rl=(t,e)=>{let{boxHeight:s=e,boxWidth:i=e}=t;return t.usePointStyle&&(s=Math.min(s,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:s,itemHeight:Math.max(e,s)}},ll=(t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class cl extends sn{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=he(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,s)=>t.sort(e,s,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const s=t.labels,i=ui(s.font),a=i.size,o=this._computeTitleHeight(),{boxWidth:n,itemHeight:r}=rl(s,a);let l,c;e.font=i.string,this.isHorizontal()?(l=this.maxWidth,c=this._fitRows(o,a,n,r)+10):(c=this.maxHeight,l=this._fitCols(o,i,n,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(c,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,i){const{ctx:a,maxWidth:o,options:{labels:{padding:n}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],c=i+n;let p=t;a.textAlign="left",a.textBaseline="middle";let d=-1,h=-c;return this.legendItems.forEach(((t,u)=>{const m=s+e/2+a.measureText(t.text).width;(0===u||l[l.length-1]+m+2*n>o)&&(p+=c,l[l.length-(u>0?0:1)]=0,h+=c,d++),r[u]={left:0,top:h,row:d,width:m,height:i},l[l.length-1]+=m+n})),p}_fitCols(t,e,s,i){const{ctx:a,maxHeight:o,options:{labels:{padding:n}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],c=o-t;let p=n,d=0,h=0,u=0,m=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:f,itemHeight:g}=pl(s,e,a,t,i);o>0&&h+g+2*n>c&&(p+=d+n,l.push({width:d,height:h}),u+=d+n,m++,d=h=0),r[o]={left:u,top:h,col:m,width:f,height:g},d=Math.max(d,f),h+=g+n})),p+=d,l.push({width:d,height:h}),p}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:i},rtl:a}}=this,o=ua(a,this.left,this.width);if(this.isHorizontal()){let a=0,n=fs(s,this.left+i,this.right-this.lineWidths[a]);for(const r of e)a!==r.row&&(a=r.row,n=fs(s,this.left+i,this.right-this.lineWidths[a])),r.top+=this.top+t+i,r.left=o.leftForLtr(o.x(n),r.width),n+=r.width+i}else{let a=0,n=fs(s,this.top+t+i,this.bottom-this.columnSizes[a].height);for(const r of e)r.col!==a&&(a=r.col,n=fs(s,this.top+t+i,this.bottom-this.columnSizes[a].height)),r.top=n,r.left+=this.left+i,r.left=o.leftForLtr(o.x(r.left),r.width),n+=r.height+i}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Xs(t,this),this._draw(),Ys(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:s,ctx:i}=this,{align:a,labels:o}=t,n=Vs.color,r=ua(t.rtl,this.left,this.width),l=ui(o.font),{padding:c}=o,p=l.size,d=p/2;let h;this.drawTitle(),i.textAlign=r.textAlign("left"),i.textBaseline="middle",i.lineWidth=.5,i.font=l.string;const{boxWidth:u,boxHeight:m,itemHeight:f}=rl(o,p),g=function(t,e,s){if(isNaN(u)||u<=0||isNaN(m)||m<0)return;i.save();const a=pe(s.lineWidth,1);if(i.fillStyle=pe(s.fillStyle,n),i.lineCap=pe(s.lineCap,"butt"),i.lineDashOffset=pe(s.lineDashOffset,0),i.lineJoin=pe(s.lineJoin,"miter"),i.lineWidth=a,i.strokeStyle=pe(s.strokeStyle,n),i.setLineDash(pe(s.lineDash,[])),o.usePointStyle){const n={radius:m*Math.SQRT2/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:a},l=r.xPlus(t,u/2),c=e+d;Ks(i,n,l,c,o.pointStyleWidth&&u)}else{const o=e+Math.max((p-m)/2,0),n=r.leftForLtr(t,u),l=di(s.borderRadius);i.beginPath(),Object.values(l).some((t=>0!==t))?ai(i,{x:n,y:o,w:u,h:m,radius:l}):i.rect(n,o,u,m),i.fill(),0!==a&&i.stroke()}i.restore()},b=function(t,e,s){ii(i,s.text,t,e+f/2,l,{strikethrough:s.hidden,textAlign:r.textAlign(s.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();h=v?{x:fs(a,this.left+c,this.right-s[0]),y:this.top+c+y,line:0}:{x:this.left+c,y:fs(a,this.top+y+c,this.bottom-e[0].height),line:0},ma(this.ctx,t.textDirection);const x=f+c;this.legendItems.forEach(((n,p)=>{i.strokeStyle=n.fontColor,i.fillStyle=n.fontColor;const m=i.measureText(n.text).width,f=r.textAlign(n.textAlign||(n.textAlign=o.textAlign)),w=u+d+m;let _=h.x,S=h.y;r.setWidth(this.width),v?p>0&&_+w+c>this.right&&(S=h.y+=x,h.line++,_=h.x=fs(a,this.left+c,this.right-s[h.line])):p>0&&S+x>this.bottom&&(_=h.x=_+e[h.line].width+c,h.line++,S=h.y=fs(a,this.top+y+c,this.bottom-e[h.line].height));const C=r.x(_);if(g(C,S,n),_=gs(f,_+u+d,v?_+w:this.right,t.rtl),b(r.x(_),S,n),v)h.x+=w+c;else if("string"!==typeof n.text){const t=l.lineHeight;h.y+=ul(n,t)+c}else h.y+=x})),fa(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,s=ui(e.font),i=hi(e.padding);if(!e.display)return;const a=ua(t.rtl,this.left,this.width),o=this.ctx,n=e.position,r=s.size/2,l=i.top+r;let c,p=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),c=this.top+l,p=fs(t.align,p,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);c=l+fs(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const h=fs(n,p,p+d);o.textAlign=a.textAlign(ms(n)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=s.string,ii(o,e.text,h,c,s)}_computeTitleHeight(){const t=this.options.title,e=ui(t.font),s=hi(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,i,a;if(ss(t,this.left,this.right)&&ss(e,this.top,this.bottom))for(a=this.legendHitBoxes,s=0;st.length>e.length?t:e))),e+s.size/2+i.measureText(a).width}function hl(t,e,s){let i=t;return"string"!==typeof e.text&&(i=ul(e,s)),i}function ul(t,e){const s=t.text?t.text.length:0;return e*s}function ml(t,e){return!("mousemove"!==t&&"mouseout"!==t||!e.onHover&&!e.onLeave)||!(!e.onClick||"click"!==t&&"mouseup"!==t)}var fl={id:"legend",_element:cl,start(t,e,s){const i=t.legend=new cl({ctx:t.ctx,options:s,chart:t});Fo.configure(t,i,s),Fo.addBox(t,i)},stop(t){Fo.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,s){const i=t.legend;Fo.configure(t,i,s),i.options=s},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,s){const i=e.datasetIndex,a=s.chart;a.isDatasetVisible(i)?(a.hide(i),e.hidden=!0):(a.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:s,pointStyle:i,textAlign:a,color:o,useBorderRadius:n,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(s?0:void 0),c=hi(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(c.width+c.height)/4,strokeStyle:l.borderColor,pointStyle:i||l.pointStyle,rotation:l.rotation,textAlign:a||l.textAlign,borderRadius:n&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class gl extends sn{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const s=this.options;if(this.left=0,this.top=0,!s.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const i=ne(s.text)?s.text.length:1;this._padding=hi(s.padding);const a=i*ui(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=a:this.width=a}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:s,bottom:i,right:a,options:o}=this,n=o.align;let r,l,c,p=0;return this.isHorizontal()?(l=fs(n,s,a),c=e+t,r=a-s):("left"===o.position?(l=s+t,c=fs(n,i,e),p=-.5*De):(l=a-t,c=fs(n,e,i),p=.5*De),r=i-e),{titleX:l,titleY:c,maxWidth:r,rotation:p}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const s=ui(e.font),i=s.lineHeight,a=i/2+this._padding.top,{titleX:o,titleY:n,maxWidth:r,rotation:l}=this._drawArgs(a);ii(t,e.text,0,0,s,{color:e.color,maxWidth:r,rotation:l,textAlign:ms(e.align),textBaseline:"middle",translation:[o,n]})}}function bl(t,e){const s=new gl({ctx:t.ctx,options:e,chart:t});Fo.configure(t,s,e),Fo.addBox(t,s),t.titleBlock=s}var vl={id:"title",_element:gl,start(t,e,s){bl(t,s)},stop(t){const e=t.titleBlock;Fo.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,s){const i=t.titleBlock;Fo.configure(t,i,s),i.options=s},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};new WeakMap;const yl={average(t){if(!t.length)return!1;let e,s,i=new Set,a=0,o=0;for(e=0,s=t.length;et+e))/i.size;return{x:n,y:a/o}},nearest(t,e){if(!t.length)return!1;let s,i,a,o=e.x,n=e.y,r=Number.POSITIVE_INFINITY;for(s=0,i=t.length;s-1?t.split("\n"):t}function _l(t,e){const{element:s,datasetIndex:i,index:a}=e,o=t.getDatasetMeta(i).controller,{label:n,value:r}=o.getLabelAndValue(a);return{chart:t,label:n,parsed:o.getParsed(a),raw:t.data.datasets[i].data[a],formattedValue:r,dataset:o.getDataset(),dataIndex:a,datasetIndex:i,element:s}}function Sl(t,e){const s=t.chart.ctx,{body:i,footer:a,title:o}=t,{boxWidth:n,boxHeight:r}=e,l=ui(e.bodyFont),c=ui(e.titleFont),p=ui(e.footerFont),d=o.length,h=a.length,u=i.length,m=hi(e.padding);let f=m.height,g=0,b=i.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(f+=d*c.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){const t=e.displayColors?Math.max(r,l.lineHeight):l.lineHeight;f+=u*t+(b-u)*l.lineHeight+(b-1)*e.bodySpacing}h&&(f+=e.footerMarginTop+h*p.lineHeight+(h-1)*e.footerSpacing);let v=0;const y=function(t){g=Math.max(g,s.measureText(t).width+v)};return s.save(),s.font=c.string,ue(t.title,y),s.font=l.string,ue(t.beforeBody.concat(t.afterBody),y),v=e.displayColors?n+2+e.boxPadding:0,ue(i,(t=>{ue(t.before,y),ue(t.lines,y),ue(t.after,y)})),v=0,s.font=p.string,ue(t.footer,y),s.restore(),g+=m.width,{width:g,height:f}}function Cl(t,e){const{y:s,height:i}=e;return st.height-i/2?"bottom":"center"}function kl(t,e,s,i){const{x:a,width:o}=i,n=s.caretSize+s.caretPadding;return"left"===t&&a+o+n>e.width||("right"===t&&a-o-n<0||void 0)}function Al(t,e,s,i){const{x:a,width:o}=s,{width:n,chartArea:{left:r,right:l}}=t;let c="center";return"center"===i?c=a<=(r+l)/2?"left":"right":a<=o/2?c="left":a>=n-o/2&&(c="right"),kl(c,t,e,s)&&(c="center"),c}function Tl(t,e,s){const i=s.yAlign||e.yAlign||Cl(t,s);return{xAlign:s.xAlign||e.xAlign||Al(t,e,s,i),yAlign:i}}function Pl(t,e){let{x:s,width:i}=t;return"right"===e?s-=i:"center"===e&&(s-=i/2),s}function Rl(t,e,s){let{y:i,height:a}=t;return"top"===e?i+=s:i-="bottom"===e?a+s:a/2,i}function Dl(t,e,s,i){const{caretSize:a,caretPadding:o,cornerRadius:n}=t,{xAlign:r,yAlign:l}=s,c=a+o,{topLeft:p,topRight:d,bottomLeft:h,bottomRight:u}=di(n);let m=Pl(e,r);const f=Rl(e,l,c);return"center"===l?"left"===r?m+=c:"right"===r&&(m-=c):"left"===r?m-=Math.max(p,h)+a:"right"===r&&(m+=Math.max(d,u)+a),{x:ts(m,0,i.width-e.width),y:ts(f,0,i.height-e.height)}}function Ll(t,e,s){const i=hi(s.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-i.right:t.x+i.left}function Fl(t){return xl([],wl(t))}function Ml(t,e,s){return gi(t,{tooltip:e,tooltipItems:s,type:"tooltip"})}function $l(t,e){const s=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return s?t.override(s):t}const Il={beforeTitle:ie,title(t){if(t.length>0){const e=t[0],s=e.chart.data.labels,i=s?s.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex{const e={before:[],lines:[],after:[]},a=$l(s,t);xl(e.before,wl(Nl(a,"beforeLabel",this,t))),xl(e.lines,Nl(a,"label",this,t)),xl(e.after,wl(Nl(a,"afterLabel",this,t))),i.push(e)})),i}getAfterBody(t,e){return Fl(Nl(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:s}=e,i=Nl(s,"beforeFooter",this,t),a=Nl(s,"footer",this,t),o=Nl(s,"afterFooter",this,t);let n=[];return n=xl(n,wl(i)),n=xl(n,wl(a)),n=xl(n,wl(o)),n}_createItems(t){const e=this._active,s=this.chart.data,i=[],a=[],o=[];let n,r,l=[];for(n=0,r=e.length;nt.filter(e,i,a,s)))),t.itemSort&&(l=l.sort(((e,i)=>t.itemSort(e,i,s)))),ue(l,(e=>{const s=$l(t.callbacks,e);i.push(Nl(s,"labelColor",this,e)),a.push(Nl(s,"labelPointStyle",this,e)),o.push(Nl(s,"labelTextColor",this,e))})),this.labelColors=i,this.labelPointStyles=a,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const s=this.options.setContext(this.getContext()),i=this._active;let a,o=[];if(i.length){const t=yl[s.position].call(this,i,this._eventPosition);o=this._createItems(s),this.title=this.getTitle(o,s),this.beforeBody=this.getBeforeBody(o,s),this.body=this.getBody(o,s),this.afterBody=this.getAfterBody(o,s),this.footer=this.getFooter(o,s);const e=this._size=Sl(this,s),n=Object.assign({},t,e),r=Tl(this.chart,s,n),l=Dl(s,n,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,a={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(a={opacity:0});this._tooltipItems=o,this.$context=void 0,a&&this._resolveAnimations().update(this,a),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,i){const a=this.getCaretPosition(t,s,i);e.lineTo(a.x1,a.y1),e.lineTo(a.x2,a.y2),e.lineTo(a.x3,a.y3)}getCaretPosition(t,e,s){const{xAlign:i,yAlign:a}=this,{caretSize:o,cornerRadius:n}=s,{topLeft:r,topRight:l,bottomLeft:c,bottomRight:p}=di(n),{x:d,y:h}=t,{width:u,height:m}=e;let f,g,b,v,y,x;return"center"===a?(y=h+m/2,"left"===i?(f=d,g=f-o,v=y+o,x=y-o):(f=d+u,g=f+o,v=y-o,x=y+o),b=f):(g="left"===i?d+Math.max(r,c)+o:"right"===i?d+u-Math.max(l,p)-o:this.caretX,"top"===a?(v=h,y=v-o,f=g-o,b=g+o):(v=h+m,y=v+o,f=g+o,b=g-o),x=v),{x1:f,x2:g,x3:b,y1:v,y2:y,y3:x}}drawTitle(t,e,s){const i=this.title,a=i.length;let o,n,r;if(a){const l=ua(s.rtl,this.x,this.width);for(t.x=Ll(this,s.titleAlign,s),e.textAlign=l.textAlign(s.titleAlign),e.textBaseline="middle",o=ui(s.titleFont),n=s.titleSpacing,e.fillStyle=s.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=a.multiKeyBackground,ai(t,{x:e,y:u,w:l,h:r,radius:n}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),ai(t,{x:s,y:u+1,w:l-2,h:r-2,radius:n}),t.fill()):(t.fillStyle=a.multiKeyBackground,t.fillRect(e,u,l,r),t.strokeRect(e,u,l,r),t.fillStyle=o.backgroundColor,t.fillRect(s,u+1,l-2,r-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){const{body:i}=this,{bodySpacing:a,bodyAlign:o,displayColors:n,boxHeight:r,boxWidth:l,boxPadding:c}=s,p=ui(s.bodyFont);let d=p.lineHeight,h=0;const u=ua(s.rtl,this.x,this.width),m=function(s){e.fillText(s,u.x(t.x+h),t.y+d/2),t.y+=d+a},f=u.textAlign(o);let g,b,v,y,x,w,_;for(e.textAlign=o,e.textBaseline="middle",e.font=p.string,t.x=Ll(this,f,s),e.fillStyle=s.bodyColor,ue(this.beforeBody,m),h=n&&"right"!==f?"center"===o?l/2+c:l+2+c:0,y=0,w=i.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,s=this.$animations,i=s&&s.x,a=s&&s.y;if(i||a){const s=yl[t.position].call(this,this._active,this._eventPosition);if(!s)return;const o=this._size=Sl(this,t),n=Object.assign({},s,this._size),r=Tl(e,t,n),l=Dl(t,n,r,e);i._to===l.x&&a._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(e);const i={width:this.width,height:this.height},a={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const o=hi(e.padding),n=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&n&&(t.save(),t.globalAlpha=s,this.drawBackground(a,t,i,e),ma(t,e.textDirection),a.y+=o.top,this.drawTitle(a,t,e),this.drawBody(a,t,e),this.drawFooter(a,t,e),fa(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const s=this._active,i=t.map((({datasetIndex:t,index:e})=>{const s=this.chart.getDatasetMeta(t);if(!s)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:s.data[e],index:e}})),a=!me(s,i),o=this._positionChanged(i,e);(a||o)&&(this._active=i,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,a=this._active||[],o=this._getActiveElements(t,a,e,s),n=this._positionChanged(o,t),r=e||!me(o,a)||n;return r&&(this._active=o,(i.enabled||i.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,s,i){const a=this.options;if("mouseout"===t.type)return[];if(!i)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,a.mode,a,s);return a.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:s,caretY:i,options:a}=this,o=yl[a.position].call(this,t,e);return!1!==o&&(s!==o.x||i!==o.y)}}var Ol={id:"tooltip",_element:Ul,positioners:yl,afterInit(t,e,s){s&&(t.tooltip=new Ul({chart:t,options:s}))},beforeUpdate(t,e,s){t.tooltip&&t.tooltip.initialize(s)},reset(t,e,s){t.tooltip&&t.tooltip.initialize(s)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const s={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",s)}},afterEvent(t,e){if(t.tooltip){const s=e.replay;t.tooltip.handleEvent(e.event,s,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Il},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const El=(t,e,s,i)=>("string"===typeof e?(s=t.push(e)-1,i.unshift({index:s,label:e})):isNaN(e)&&(s=null),s);function Bl(t,e,s,i){const a=t.indexOf(e);if(-1===a)return El(t,e,s,i);const o=t.lastIndexOf(e);return a!==o?s:a}const zl=(t,e)=>null===t?null:ts(Math.round(t),0,e);function Vl(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function jl(t,e){const s=[],i=1e-14,{bounds:a,step:o,min:n,max:r,precision:l,count:c,maxTicks:p,maxDigits:d,includeBounds:h}=t,u=o||1,m=p-1,{min:f,max:g}=e,b=!oe(n),v=!oe(r),y=!oe(c),x=(g-f)/(d+1);let w,_,S,C,k=ze((g-f)/m/u)*u;if(km&&(k=ze(C*k/m/u)*u),oe(l)||(w=Math.pow(10,l),k=Math.ceil(k*w)/w),"ticks"===a?(_=Math.floor(f/k)*k,S=Math.ceil(g/k)*k):(_=f,S=g),b&&v&&o&&je((r-n)/o,k/1e3)?(C=Math.round(Math.min((r-n)/k,p)),k=(r-n)/C,_=n,S=r):y?(_=b?n:_,S=v?r:S,C=c-1,k=(S-_)/C):(C=(S-_)/k,C=Be(C,Math.round(C),k/1e3)?Math.round(C):Math.ceil(C));const A=Math.max(Ke(k),Ke(_));w=Math.pow(10,oe(l)?A:l),_=Math.round(_*w)/w,S=Math.round(S*w)/w;let T=0;for(b&&(h&&_!==n?(s.push({value:n}),_r)break;s.push({value:t})}return v&&h&&S!==r?s.length&&Be(s[s.length-1].value,r,ql(r,x,t))?s[s.length-1].value=r:s.push({value:r}):v&&S!==r||s.push({value:S}),s}function ql(t,e,{horizontal:s,minRotation:i}){const a=Ge(i),o=(s?Math.sin(a):Math.cos(a))||.001,n=.75*e*(""+t).length;return Math.min(e/o,n)}class Gl extends Sn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return oe(t)||("number"===typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:s}=this.getUserBounds();let{min:i,max:a}=this;const o=t=>i=e?i:t,n=t=>a=s?a:t;if(t){const t=Ee(i),e=Ee(a);t<0&&e<0?n(0):t>0&&e>0&&o(0)}if(i===a){let e=0===a?1:Math.abs(.05*a);n(a+e),t||o(i-e)}this.min=i,this.max=a}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:s,stepSize:i}=t;return i?(e=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),s=s||11),s&&(e=Math.min(s,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const i={maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},a=this._range||this,o=jl(i,a);return"ticks"===t.bounds&&qe(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,s=this.max;if(super.configure(),this.options.offset&&t.length){const i=(s-e)/Math.max(t.length-1,1)/2;e-=i,s+=i}this._startValue=e,this._endValue=s,this._valueRange=s-e}getLabelForValue(t){return Fs(t,this.chart.options.locale,this.options.ticks.format)}}class Wl extends Gl{static id="linear";static defaults={ticks:{callback:Is.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=le(t)?t:0,this.max=le(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,s=Ge(this.options.ticks.minRotation),i=(t?Math.sin(s):Math.cos(s))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,a.lineHeight/i))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}Is.formatters.logarithmic;Is.formatters.numeric;const Kl={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Zl=Object.keys(Kl);function Xl(t,e){return t-e}function Yl(t,e){if(oe(e))return null;const s=t._adapter,{parser:i,round:a,isoWeekday:o}=t._parseOpts;let n=e;return"function"===typeof i&&(n=i(n)),le(n)||(n="string"===typeof i?s.parse(n,i):s.parse(n)),null===n?null:(a&&(n="week"!==a||!He(o)&&!0!==o?s.startOf(n,a):s.startOf(n,"isoWeek",o)),+n)}function Jl(t,e,s,i){const a=Zl.length;for(let o=Zl.indexOf(t);o=Zl.indexOf(s);o--){const s=Zl[o];if(Kl[s].common&&t._adapter.diff(a,i,s)>=e-1)return s}return Zl[s?Zl.indexOf(s):0]}function tc(t){for(let e=Zl.indexOf(t)+1,s=Zl.length;e=e?s[i]:s[a];t[o]=!0}}else t[e]=!0}function sc(t,e,s,i){const a=t._adapter,o=+a.startOf(e[0].value,i),n=e[e.length-1].value;let r,l;for(r=o;r<=n;r=+a.add(r,1,i))l=s[r],l>=0&&(e[l].major=!0);return e}function ic(t,e,s){const i=[],a={},o=e.length;let n,r;for(n=0;n+t.value)))}initOffsets(t=[]){let e,s,i=0,a=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),i=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,s=this.getDecimalForValue(t[t.length-1]),a=1===t.length?s:(s-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;i=ts(i,0,o),a=ts(a,0,o),this._offsets={start:i,end:a,factor:1/(i+1+a)}}_generate(){const t=this._adapter,e=this.min,s=this.max,i=this.options,a=i.time,o=a.unit||Jl(a.minUnit,e,s,this._getLabelCapacity(e)),n=pe(i.ticks.stepSize,1),r="week"===o&&a.isoWeekday,l=He(r)||!0===r,c={};let p,d,h=e;if(l&&(h=+t.startOf(h,"isoWeek",r)),h=+t.startOf(h,l?"day":o),t.diff(s,e,o)>1e5*n)throw new Error(e+" and "+s+" are too far apart with stepSize of "+n+" "+o);const u="data"===i.ticks.source&&this.getDataTimestamps();for(p=h,d=0;p+t))}getLabelForValue(t){const e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}format(t,e){const s=this.options,i=s.time.displayFormats,a=this._unit,o=e||i[a];return this._adapter.format(t,o)}_tickFormatFunction(t,e,s,i){const a=this.options,o=a.ticks.callback;if(o)return he(o,[t,e,s],this);const n=a.time.displayFormats,r=this._unit,l=this._majorUnit,c=r&&n[r],p=l&&n[l],d=s[e],h=l&&p&&d&&d.major;return this._adapter.format(t,i||(h?p:c))}generateTickLabels(t){let e,s,i;for(e=0,s=t.length;e0?n:1}getDataTimestamps(){let t,e,s=this._cache.data||[];if(s.length)return s;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(t=0,e=i.length;t\n \n Used: ${t} GB\n \n \n Total: ${e} GB\n \n \n `},usagePercentage(){return this.storage.used/this.storage.total*100},overviewTitle(){return this.enableHistoryStatistics?"History Stats Overview":"Stats & Processes Overview"},filteredProcesses(){return this.search?this.processes.filter((t=>Object.values(t).some((t=>String(t).toLowerCase().includes(this.search.toLowerCase()))))):this.processes},paginatedProcesses(){const t=(this.currentPage-1)*this.perPage,e=t+this.perPage;return this.filteredProcesses.slice(t,e)},isDisabled(){return!!this.pollingEnabled||this.manualInProgress||this.backendLoading},filteredLogs(){const t=this.filterKeyword.toLowerCase();return this.logs.filter((e=>e.toLowerCase().includes(t)))},formattedLogs(){return this.filteredLogs.map((t=>this.formatLog(t)))},mapLocations(){return this.instances.data.map((t=>t.ip))},appRunningTill(){const t=12e4,e=this.callBResponse.data.expire||22e3,s=this.callBResponse.data.height+e-this.daemonBlockCount;let i=s;this.extendSubscription&&(i=this.expireOptions[this.expirePosition].value);const a=this.timestamp||Date.now(),o=s*t+a,n=i*t+a,r={current:o,new:n};return r},skin(){return(0,lt.Z)().skin.value},zelidHeader(){const t=localStorage.getItem("zelidauth"),e={zelidauth:t};return e},ipAddress(){const t=uc.get("backendURL");if(t)return`${uc.get("backendURL").split(":")[0]}:${uc.get("backendURL").split(":")[1]}`;const{hostname:e}=window.location;return`${e}`},filesToUpload(){return this.files.length>0&&this.files.some((t=>!t.uploading&&!t.uploaded&&0===t.progress))},computedFileProgress(){return this.fileProgress},computedFileProgressFD(){return this.fileProgressFD},computedFileProgressVolume(){return this.fileProgressVolume},folderContentFilter(){const t=this.folderView.filter((t=>JSON.stringify(t.name).toLowerCase().includes(this.filterFolder.toLowerCase()))),e=this.currentFolder?{name:"..",symLink:!0,isUpButton:!0}:null,s=[e,...t.filter((t=>".gitkeep"!==t.name))].filter(Boolean);return s},downloadLabel(){this.totalMB=this.backupList.reduce(((t,e)=>t+parseFloat(e.file_size)),2);const t=(this.downloadedSize/1048576).toFixed(2);return t===this.totalMB&&setTimeout((()=>{this.showProgressBar=!1}),5e3),`${t} / ${this.totalMB} MB`},isValidUrl(){const t=/^(http|https):\/\/[^\s]+$/,e=this.restoreRemoteUrl.split("?"),s=e[0];return""===this.restoreRemoteUrl||s.endsWith(".tar.gz")&&t.test(s)},urlValidationState(){return!!this.isValidUrl&&null},urlValidationMessage(){return this.isValidUrl?null:"Please enter a valid URL ending with .tar.gz"},computedRestoreRemoteURLFields(){return this.RestoreTableBuilder("URL")},computedRestoreUploadFileFields(){return this.RestoreTableBuilder("File_name")},checkpointsTable(){return[{key:"name",label:"Name",thStyle:{width:"70%"}},{key:"date",label:"Date",thStyle:{width:"20%"}},{key:"action",label:"Action",thStyle:{width:"5%"}}]},componentsTable1(){return[{key:"component",label:"Component Name",thStyle:{width:"200px"}},{key:"file_url",label:"URL"},{key:"file_size",label:"Size",thStyle:{width:"100px"}},{key:"actions",label:"Actions",thStyle:{width:"117px"},class:"text-center"}]},componentAvailableOptions(){return 1===this.components.length&&(this.selectedBackupComponents=this.components),this.components.filter((t=>-1===this.selectedBackupComponents.indexOf(t)))},remoteFileComponents(){return 1===this.components.length&&(this.restoreRemoteFile=this.components[0],!0)},remoteUrlComponents(){return 1===this.components.length&&(this.restoreRemoteUrlComponent=this.components[0],!0)},isComposeSingle(){return this.appSpecification.version<=3||1===this.appSpecification.compose?.length},selectedOptionText(){const t=this.options.flatMap((t=>t.options)).find((t=>t===this.selectedCmd));return t||""},selectedOptionTextStyle(){return{color:"red",backgroundColor:"rgba(128, 128, 128, 0.1)",fontWeight:"bold",padding:"4px 8px",borderRadius:"4px",marginRight:"10px",marginLeft:"10px"}},...(0,z.rn)("flux",["config","privilege"]),instancesLocked(){try{if(this.appUpdateSpecification.name&&this.marketPlaceApps.length){const t=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));if(t&&t.lockedValues&&t.lockedValues.includes("instances"))return!0}return!1}catch(t){return console.log(t),!1}},priceMultiplier(){try{if(this.appUpdateSpecification.name&&this.marketPlaceApps.length){const t=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));if(t&&t.multiplier>1)return t.multiplier*this.generalMultiplier}return this.generalMultiplier}catch(t){return console.log(t),this.generalMultiplier}},callbackValue(){const{protocol:t,hostname:e,port:s}=window.location;let i="";i+=t,i+="//";const a=/[A-Za-z]/g;if(e.split("-")[4]){const t=e.split("-"),s=t[4].split("."),a=+s[0]+1;s[0]=a.toString(),s[2]="api",t[4]="",i+=t.join("-"),i+=s.join(".")}else if(e.match(a)){const t=e.split(".");t[0]="api",i+=t.join(".")}else{if("string"===typeof e&&this.$store.commit("flux/setUserIp",e),+s>16100){const t=+s+1;this.$store.commit("flux/setFluxPort",t)}i+=e,i+=":",i+=this.config.apiPort}const o=uc.get("backendURL")||i,n=`${o}/id/providesign`;return encodeURI(n)},isAppOwner(){const t=localStorage.getItem("zelidauth"),e=hc.parse(t);return!!(t&&e&&e.zelid&&this.selectedAppOwner===e.zelid)},validTill(){const t=this.timestamp+36e5;return t},subscribedTill(){if(this.appUpdateSpecification.expire){const t=this.expireOptions.find((t=>t.value===this.appUpdateSpecification.expire));if(t){const e=1e6*Math.floor((this.timestamp+t.time)/1e6);return e}const e=this.appUpdateSpecification.expire,s=12e4,i=e*s,a=1e6*Math.floor((this.timestamp+i)/1e6);return a}const t=1e6*Math.floor((this.timestamp+2592e6)/1e6);return t},isApplicationInstalledLocally(){if(this.installedApps){const t=this.installedApps.find((t=>t.name===this.appName));return!!t}return!1},constructAutomaticDomainsGlobal(){if(!this.callBResponse.data)return"loading...";if(console.log(this.callBResponse.data),!this.callBResponse.data.name)return"loading...";const t=this.callBResponse.data.name,e=t.toLowerCase();if(!this.callBResponse.data.compose){const t=JSON.parse(JSON.stringify(this.callBResponse.data.ports)),s=[`${e}.app.runonflux.io`];for(let i=0;i{for(let i=0;i=2&&s.push(` ${a} ${i}s`),t%=e[i]}return s},getNewExpireLabel(){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;if(e<1)return"Application Expired";this.minutesRemaining=2*e;const s=this.minutesToString;return s.length>2?`${s[0]}, ${s[1]}, ${s[2]}`:s.length>1?`${s[0]}, ${s[1]}`:`${s[0]}`}},watch:{skin(){null!==this.memoryChart&&this.updateCharts()},noData(){null!==this.memoryChart&&this.updateCharts()},filterKeyword(){this.logs?.length>0&&this.$nextTick((()=>{this.scrollToBottom()}))},isLineByLineMode(){this.isLineByLineMode||(this.selectedLog=[]),this.logs?.length>0&&this.$nextTick((()=>{this.scrollToBottom()}))},fetchAllLogs(){this.restartPolling()},lineCount(){this.debounce((()=>this.restartPolling()),1e3)()},sinceTimestamp(){this.restartPolling()},selectedApp(t,e){e&&e!==t&&(this.filterKeyword="",this.sinceTimestamp="",this.stopPolling(),this.clearLogs()),t&&(this.handleContainerChange(),this.pollingEnabled&&this.startPolling())},selectedContainerMonitoring(t){t&&(this.buttonStats=!1,this.enableHistoryStatistics?(this.stopPollingStats(),this.fetchStats()):(this.timerStats&&this.stopPollingStats(),null!==this.selectedContainerMonitoring&&this.startPollingStats(),this.clearCharts()))},refreshRateMonitoring(){this.enableHistoryStatistics?this.stopPollingStats():(this.timerStats&&this.stopPollingStats(),this.startPollingStats())},isComposeSingle(t){t&&this.appSpecification.version>=4&&(this.selectedApp=this.appSpecification.compose[0].name,this.selectedAppVolume=this.appSpecification.compose[0].name,this.selectedContainerMonitoring=this.appSpecification.compose[0].name)},appUpdateSpecification:{handler(){this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)},deep:!0},expirePosition:{handler(){this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)}},isPrivateApp(t){this.appUpdateSpecification.version>=7&&!1===t&&(this.appUpdateSpecification.nodes=[],this.appUpdateSpecification.compose.forEach((t=>{t.secrets="",t.repoauth=""})),this.selectedEnterpriseNodes=[]),this.allowedGeolocations={},this.forbiddenGeolocations={},this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)}},created(){this.fluxDriveUploadTask=[],this.fluxDriveEndPoint="https://mws.fluxdrive.runonflux.io"},mounted(){const{hostname:t}=window.location,e=/[A-Za-z]/g;t.match(e)?this.ipAccess=!1:this.ipAccess=!0;const s=this;this.$nextTick((()=>{window.addEventListener("resize",s.onResize)})),this.getZelidAuthority(),this.initMMSDK(),this.callBResponse.data="",this.callBResponse.status="",this.appSpecification={},this.callResponse.data="",this.callResponse.status="",this.monitoringStream={},this.appExec.cmd="",this.appExec.env="",this.checkFluxCommunication(),this.getAppOwner(),this.getGlobalApplicationSpecifics(),this.appsDeploymentInformation(),this.getGeolocationData(),this.getMarketPlace(),this.getMultiplier(),this.getEnterpriseNodes(),this.getDaemonBlockCount()},beforeDestroy(){this.stopPolling(),this.stopPollingStats(),window.removeEventListener("resize",this.onResize)},methods:{getProgressVariant(){const t=this.usagePercentage;return t>=95?"danger":t>=75?"warning":"success"},async logout(){if(!this.logoutTigger){this.logoutTigger=!0;const e=localStorage.getItem("zelidauth"),s=hc.parse(e);localStorage.removeItem("zelidauth"),this.$store.commit("flux/setPrivilege","none"),this.$store.commit("flux/setZelid",""),console.log(s),dt.Z.logoutCurrentSession(e).then((t=>{console.log(t),"error"===t.data.status?console.log(t.data.data.message):(this.showToast("success",t.data.data.message),"/"===this.$route.path?window.location.reload():this.$router.push({name:"home"}))})).catch((t=>{console.log(t),this.showToast("danger",t.toString())}));try{await X.ZP.auth().signOut()}catch(t){console.log(t)}}},enableHistoryStatisticsChange(){this.buttonStats=!1,this.noData=!1,this.enableHistoryStatistics?(this.stopPollingStats(),this.clearCharts(),this.fetchStats()):(this.clearCharts(),this.startPollingStats())},LimitChartItems(t){const e=t.data.datasets[0].data.length;if(e>this.selectedPoints){const s=e-this.selectedPoints;t.data.labels=t.data.labels.slice(s),t.data.datasets.forEach((t=>{t.data=t.data.slice(s)})),t.update({duration:800,lazy:!1,easing:"easeOutBounce"})}},async scrollToPagination(){await this.$nextTick(),window.scrollTo(0,document.body.scrollHeight)},getHddByName(t,e){if(t?.compose){const s=t.compose.find((t=>t.name===e));return s.hdd}return t.hdd},getCpuByName(t,e){if(t?.compose){const s=t.compose.find((t=>t.name===e));return s.cpu}return t.cpu},processStatsData(t,e=null){console.log(t);const s=t.memory_stats.limit;this.memoryLimit=s;const i=t.memory_stats?.usage??null,a=i,o=(i/s*100).toFixed(1),n=t.cpu_stats.cpu_usage.total_usage-t.precpu_stats.cpu_usage.total_usage;console.log(n);const r=t.cpu_stats.system_cpu_usage-t.precpu_stats.system_cpu_usage;console.log(r);const l=t.cpu_stats.online_cpus,{nanoCpus:c}=t;let p;p=this.appSpecification.version>=4?this.getCpuByName(this.appSpecification,this.selectedContainerMonitoring):this.appSpecification.cpu;const d=(n/r*l).toFixed(2)||0,h=(d/(c/p/1e9)*100/100).toFixed(2),u=(d/(c/p/1e9)*100/p).toFixed(2);this.cpuSet=p;const m=t.blkio_stats.io_service_bytes_recursive?t.blkio_stats.io_service_bytes_recursive.find((t=>"read"===t.op.toLowerCase()))?.value||0:null,f=t.blkio_stats.io_service_bytes_recursive?t.blkio_stats.io_service_bytes_recursive.find((t=>"write"===t.op.toLowerCase()))?.value||0:null,g=t.networks?.eth0?.rx_bytes??null,b=t.networks?.eth0?.tx_bytes??null,v=t.disk_stats?.bind??null;let y;y=this.appSpecification.version>=4?this.getHddByName(this.appSpecification,this.selectedContainerMonitoring):this.appSpecification.hdd,this.diskBindLimit=1024*Number(y)*1024*1024,this.diskUsagePercentage=v/this.diskBindLimit*100;const x=t.disk_stats?.volume??null,w=t.disk_stats?.rootfs??null;console.log("CPU Size:",h),console.log("CPU Percent:",u),console.log("Memory Usage:",a),console.log("Memory Usage (%):",o),console.log("Network RX Bytes:",g),console.log("Network TX Bytes:",b),console.log("I/O Read Bytes:",m),console.log("I/O Write Bytes:",f),console.log("Disk Usage Mounts:",v),console.log("Disk Usage Volume:",x),console.log("Disk Usage RootFS:",w),this.insertChartData(u,a,o,g,b,m,f,v,x,w,h,e)},async fetchStats(){try{if(this.appSpecification.version>=4&&!this.selectedContainerMonitoring)return console.error("No container selected"),void(this.timerStats&&this.stopPollingStats());if(3!==this.$refs.managementTabs?.currentTab)return;this.enableHistoryStatistics&&this.clearCharts();const t=this.selectedContainerMonitoring,e=this.selectedContainerMonitoring?`${this.selectedContainerMonitoring}_${this.appSpecification.name}`:this.appSpecification.name;let s;this.additionalMessage="",s=this.enableHistoryStatistics?await this.executeLocalCommand(`/apps/appmonitor/${e}`):await this.executeLocalCommand(`/apps/appstats/${e}`);const i=await this.executeLocalCommand(`/apps/appinspect/${e}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else if("error"===i.data.status)this.showToast("danger",i.data.data.message||i.data.data);else{this.enableHistoryStatistics||this.fetchProcesses(e,t);const a=i.data,o=a.data?.State?.Status;if("running"!==o&&!this.enableHistoryStatistics)return this.noData=!0,this.additionalMessage="exited"===o?"(Container marked as stand by)":"(Container not running)",void this.stopPollingStats(!0);let n;if(n=s.data?.data?.lastDay?s.data.data.lastDay.reverse():s.data.data,Array.isArray(n)){const t=(new Date).getTime(),e=t-this.selectedTimeRange,s=n.filter((t=>{const s=new Date(t.timestamp).getTime();return s>=e}));s.forEach((t=>{this.processStatsData(t.data,t.timestamp)}))}else this.processStatsData(n);t===this.selectedContainerMonitoring?this.updateCharts():this.clearCharts()}}catch(t){console.error("Error fetching container data:",t),this.stopPollingStats(!0)}},updateAxes(){1===this.memoryChart.data.labels.length&&(this.memoryChart.options.scales.y.max=1.2*this.memoryLimit,this.memoryChart.options.scales.y1.max=120),1===this.cpuChart.data.labels.length&&(this.cpuChart.options.scales.y.max=(1.35*this.cpuSet).toFixed(1),this.cpuChart.options.scales.y1.max=135)},insertChartData(t,e,s,i,a,o,n,r,l,c,p,d=null){const h=null===d?(new Date).toLocaleTimeString():new Date(d).toLocaleTimeString();if(null!==e&&(this.LimitChartItems(this.memoryChart),this.memoryChart.data.labels.push(h),this.memoryChart.data.datasets[0].data.push(e),this.memoryChart.data.datasets[1].data.push(s)),Number.isNaN(Number(p))||Number.isNaN(Number(t))||(this.LimitChartItems(this.cpuChart),this.cpuChart.data.labels.push(h),this.cpuChart.data.datasets[0].data.push(p),this.cpuChart.data.datasets[1].data.push(t)),null!==i&&null!==a&&(this.LimitChartItems(this.networkChart),this.networkChart.data.labels.push(h),this.networkChart.data.datasets[0].data.push(i),this.networkChart.data.datasets[1].data.push(a)),null!==o&&null!==n&&(this.LimitChartItems(this.ioChart),this.ioChart.data.labels.push(h),this.ioChart.data.datasets[0].data.push(o),this.ioChart.data.datasets[1].data.push(n)),null!==r&&(this.LimitChartItems(this.diskPersistentChart),this.diskPersistentChart.data.labels.push(h),this.diskPersistentChart.data.datasets[0].data.push(r)),null!==l&&this.diskPersistentChart.data.datasets[1].data.push(l),this.diskPersistentChart.data?.datasets[1]?.data){const t=Array.isArray(this.diskPersistentChart.data.datasets[1].data)&&this.diskPersistentChart.data.datasets[1].data.some((t=>t>0));this.diskPersistentChart.data.datasets[1].hidden=!t}null!==c&&(this.LimitChartItems(this.diskFileSystemChart),this.diskFileSystemChart.data.labels.push(h),this.diskFileSystemChart.data.datasets[0].data.push(c)),this.noData=!0,this.updateAxes()},updateCharts(){this.memoryChart.update(),this.cpuChart.update(),this.networkChart.update(),this.ioChart.update(),this.diskPersistentChart.update(),this.diskFileSystemChart.update()},formatDataSize(t,e={base:10,round:1}){if(t<=5)return`${t} B`;const s=10===e.base?1e3:1024,i=10===e.base?["B","KB","MB","GB"]:["B","KiB","MiB","GiB"];if(0===t)return"0 B";let a=t,o=0;while(a>=s&&o({uid:t[0],pid:t[1],ppid:t[2],c:t[3],stime:t[4],tty:t[5],time:t[6],cmd:t[7]}))):(this.processes=[],console.error("Selected container has changed. Proccess list discarded."))}catch(s){console.error("Error fetching processes:",s)}},initCharts(){this.memoryChart&&(this.memoryChart.destroy(),this.cpuChart.destroy(),this.networkChart.destroy(),this.ioChart.destroy(),this.diskPersistentChart.destroy(),this.diskFileSystemChart.destroy());const t=document.getElementById("memoryChart").getContext("2d"),e=document.getElementById("cpuChart").getContext("2d"),s=document.getElementById("networkChart").getContext("2d"),i=document.getElementById("ioChart").getContext("2d"),a=document.getElementById("diskPersistentChart").getContext("2d"),o=document.getElementById("diskFileSystemChart").getContext("2d"),n={id:"noDataPlugin",beforeDraw:t=>{if(t.data.datasets.every((t=>0===t.data.length))&&!0===this.noData){const{ctx:e,width:s,height:i}=t;e.save();const a=Math.min(s,i)/14;e.font=`400 ${a}px Arial`,"dark"===this.skin?e.fillStyle="rgba(255, 255, 255, 0.6)":e.fillStyle="rgba(0, 0, 0, 0.6)",e.textAlign="center",e.textBaseline="middle",e.translate(s/2,i/2),e.fillText("No Data Available",0,0);const o=this.additionalMessage||"",n=.7*a;e.font=`400 ${n}px Arial`,e.fillText(o,0,a),e.restore()}}};this.diskPersistentChart=new mr(a,{type:"line",data:{labels:[],datasets:[{label:"Bind",data:[],fill:!0,backgroundColor:"rgba(119,255,132,0.3)",borderColor:"rgba(119,255,132,0.6)",tension:.4},{label:"Volume",data:[],borderColor:"rgba(155,99,132,1)",borderDash:[5,5],pointRadius:2,borderWidth:2,tension:.5,fill:!1}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s,{base:2,round:1})}`},footer:()=>[`Available Bind Size: ${this.formatDataSize(this.diskBindLimit,{base:2,round:1})}`,`Bind Usage (%): ${this.diskUsagePercentage.toFixed(2)}%`]}},legend:{display:!0,labels:{filter:t=>{if(!this.diskPersistentChart)return!0;if(1===t.datasetIndex){const e=this.diskPersistentChart.data.datasets[t.datasetIndex]?.data,s=Array.isArray(e)&&e.some((t=>t>0));return s}return!0}}}}},plugins:[n]}),this.diskFileSystemChart=new mr(o,{type:"line",data:{labels:[],datasets:[{label:"File System (RootFS)",data:[],fill:!0,backgroundColor:"rgba(159,155,132,0.3)",borderColor:"rgba(159,155,132,0.6)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s,{base:2,round:1})}`}}}}},plugins:[n]}),this.memoryChart=new mr(t,{type:"line",data:{labels:[],datasets:[{label:"Memory Allocated",data:[],fill:!0,backgroundColor:"rgba(151,187,205,0.4)",borderColor:"rgba(151,187,205,0.6)",yAxisID:"y",pointRadius:2,borderWidth:2,tension:.4},{label:"Memory Utilization (%)",data:[],fill:!1,borderColor:"rgba(255,99,132,1)",borderDash:[5,5],yAxisID:"y1",pointRadius:2,borderWidth:2,tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{id:"y",title:{display:!0},beginAtZero:!0,precision:0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:1})}},y1:{id:"y1",title:{display:!0},beginAtZero:!0,position:"right",grid:{display:!1},ticks:{callback:t=>`${t}%`}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return e.includes("%")?`Memory Utilization: ${s}%`:`${e}: ${this.formatDataSize(s,{base:2,round:1})}`},footer:()=>`Available Memory: ${this.formatDataSize(this.memoryLimit,{base:2,round:1})}`}}}},plugins:[n]}),this.cpuChart=new mr(e,{type:"line",data:{labels:[],datasets:[{label:"CPU Allocated",data:[],fill:!0,backgroundColor:"rgba(255,99,132,0.4)",borderColor:"rgba(255,99,132,0.6)",tension:.4},{label:"CPU Utilization (%)",fill:!1,borderColor:"rgba(255,99,132,1)",borderDash:[5,5],yAxisID:"y1",pointRadius:2,borderWidth:2,tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{id:"y",title:{display:!0},beginAtZero:!0,ticks:{callback:t=>`${t} CPU`}},y1:{id:"y1",title:{display:!0},beginAtZero:!0,position:"right",grid:{display:!1},ticks:{callback:t=>`${t}%`}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return e.includes("%")?`CPU Utilization: ${s}%`:`CPU Allocated: ${s} CPU`},footer:()=>`Available CPU Core(s): ${this.cpuSet}`}}}},plugins:[n]}),this.networkChart=new mr(s,{type:"line",data:{labels:[],datasets:[{label:"RX on eth0",data:[],fill:!0,backgroundColor:"rgba(99,255,132,0.4)",borderColor:"rgba(99,255,132,0.6)",tension:.4},{label:"TX on eth0",data:[],fill:!1,borderColor:"rgba(132,99,255,1)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:10,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s)}`}}}}},plugins:[n]}),this.ioChart=new mr(i,{type:"line",data:{labels:[],datasets:[{label:"Read",data:[],fill:!1,borderColor:"rgba(99,132,255,0.6)",tension:.4},{label:"Write",data:[],fill:!0,backgroundColor:"rgba(255,132,99,0.4)",borderColor:"rgba(255,132,99,0.6)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{title:{display:!0},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:10,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s)}`}}}}},plugins:[n]}),this.updateAxes()},startPollingStats(t=!1){this.timerStats||(this.timerStats=setInterval((()=>{this.fetchStats()}),this.refreshRateMonitoring)),!0===t&&(this.buttonStats=!1)},stopPollingStats(t=!1){clearInterval(this.timerStats),this.timerStats=null,!0===t?this.buttonStats=!0:this.noData=!1},clearCharts(){this.memoryChart&&(this.noData=!1,this.memoryChart.data.labels=[],this.memoryChart.data.datasets.forEach((t=>{t.data=[]})),this.memoryChart.options.scales.y.max=1.2,this.memoryChart.options.scales.y1.max=120,this.memoryChart.update(),this.memoryChart.update(),this.cpuChart.data.labels=[],this.cpuChart.data.datasets.forEach((t=>{t.data=[]})),this.cpuChart.options.scales.y.max=1.2,this.cpuChart.options.scales.y1.max=120,this.cpuChart.update(),this.networkChart.data.labels=[],this.networkChart.data.datasets.forEach((t=>{t.data=[]})),this.networkChart.update(),this.ioChart.data.labels=[],this.ioChart.data.datasets.forEach((t=>{t.data=[]})),this.ioChart.update(),this.diskPersistentChart.data.labels=[],this.diskPersistentChart.data.datasets.forEach((t=>{t.data=[]})),this.diskPersistentChart.update(),this.diskFileSystemChart.data.labels=[],this.diskFileSystemChart.data.datasets.forEach((t=>{t.data=[]})),this.diskFileSystemChart.update(),this.processes=[])},extractTimestamp(t){return t.split(" ")[0]},toggleLogSelection(t){const e=this.extractTimestamp(t);this.selectedLog.includes(e)?this.selectedLog=this.selectedLog.filter((t=>t!==e)):this.selectedLog.push(e)},unselectText(){this.selectedLog=[]},async copyCode(){try{let t="";t=this.isLineByLineMode&&this.selectedLog.length>0?this.filteredLogs.filter((t=>this.selectedLog.includes(this.extractTimestamp(t)))).map((t=>t)).join("\n"):this.logs.join("\n");const e=/\u001b\[[0-9;]*[a-zA-Z]/g;if(t=t.replace(e,""),!this.displayTimestamps){const e=/^[^\s]+\s*/;t=t.split(/\r?\n/).map((t=>t.replace(e,""))).join("\n")}if(navigator.clipboard)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}this.copied=!0,setTimeout((()=>{this.copied=!1}),2e3)}catch(t){console.error("Failed to copy code:",t)}},debounce(t,e){return(...s)=>{this.debounceTimeout&&clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((()=>t(...s)),e)}},async manualFetchLogs(){this.manualInProgress=!0,await this.fetchLogsForSelectedContainer(),this.manualInProgress=!1},async fetchLogsForSelectedContainer(){if(5!==this.$refs.managementTabs?.currentTab)return;if(console.log("fetchLogsForSelectedContainer in progress..."),this.appSpecification.version>=4&&!this.selectedApp)return void console.error("No container selected");if(this.requestInProgress)return void console.log("Request in progress, skipping this call.");const t=this.selectedApp?`${this.selectedApp}_${this.appSpecification.name}`:this.appSpecification.name;this.requestInProgress=!0,this.noLogs=!1;try{const e=this.selectedApp,s=this.fetchAllLogs?"all":this.lineCount||100,i=await this.executeLocalCommand(`/apps/applogpolling/${t}/${s}/${this.sinceTimestamp}`);this.selectedApp===e?(this.logs=i.data?.logs,"success"===i.data?.status&&0===this.logs?.length&&(this.noLogs=!0),this.logs.length>0&&this.$nextTick((()=>{this.autoScroll&&this.scrollToBottom()}))):console.error("Selected container has changed. Logs discarded.")}catch(e){console.error("Error fetching logs:",e.message),this.clearLogs(),!0===this.pollingEnabled&&(this.pollingEnabled=!1,this.stopPolling())}finally{console.log("fetchLogsForSelectedContainer completed..."),this.requestInProgress=!1}},startPolling(){this.pollingInterval&&clearInterval(this.pollingInterval),this.pollingInterval=setInterval((async()=>{await this.fetchLogsForSelectedContainer()}),this.refreshRate)},stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null)},restartPolling(){this.stopPolling(),this.fetchLogsForSelectedContainer(),this.pollingEnabled&&this.startPolling()},togglePolling(){this.pollingEnabled?this.startPolling():this.stopPolling()},formatLog(t){const e=new(pt());if(this.displayTimestamps){const[s,...i]=t.split(" "),a=i.join(" ");return`${s} - ${e.toHtml(a)}`}{const s=/^[^\s]+\s*/;return e.toHtml(t.replace(s,""))}},scrollToBottom(){const t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},clearLogs(){this.logs=[]},clearDateFilter(){this.sinceTimestamp=""},handleContainerChange(){const t=this.debounce(this.fetchLogsForSelectedContainer,300);t()},async refreshInfo(){this.backendLoading=!0,await this.getInstancesForDropDown(),this.selectedIpChanged(),this.getApplicationLocations().catch((()=>{this.isBusy=!1,this.showToast("danger","Error loading application locations")})),setTimeout((()=>{this.backendLoading=!1}),1e3)},copyMessageToSign(){const{copy:t}=(0,Z.VPI)({source:this.dataToSign,legacy:!0});t(),this.tooltipText="Copied!",setTimeout((()=>{this.$refs.copyButtonRef&&(this.$refs.copyButtonRef.blur(),this.tooltipText="")}),1e3),setTimeout((()=>{this.tooltipText="Copy to clipboard"}),1500)},sortNameFolder(t,e){return(t.isDirectory?`..${t.name}`:t.name).localeCompare(e.isDirectory?`..${e.name}`:e.name)},sortTypeFolder(t,e){return t.isDirectory&&e.isFile?-1:t.isFile&&e.isDirectory?1:0},sort(t,e,s,i){return"name"===s?this.sortNameFolder(t,e,i):"type"===s?this.sortTypeFolder(t,e,i):"modifiedAt"===s?t.modifiedAt>e.modifiedAt?-1:t.modifiedAte.size?-1:t.size""!==t)),s=e.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${s}`,this.loadFolder(this.currentFolder)},async loadFolder(t,e=!1){try{this.filterFolder="",e||(this.folderView=[]),this.loadingFolder=!0;const s=await this.executeLocalCommand(`/apps/getfolderinfo/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(t)}`);this.loadingFolder=!1,"success"===s.data.status?(this.folderView=s.data.data,console.log(this.folderView)):this.showToast("danger",s.data.data.message||s.data.data)}catch(s){this.loadingFolder=!1,console.log(s.message),this.showToast("danger",s.message||s)}},async createFolder(t){try{let e=t;""!==this.currentFolder&&(e=`${this.currentFolder}/${t}`);const s=await this.executeLocalCommand(`/apps/createfolder/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(e)}`);"error"===s.data.status?"EEXIST"===s.data.data.code?this.showToast("danger",`Folder ${t} already exists`):this.showToast("danger",s.data.data.message||s.data.data):(this.loadFolder(this.currentFolder,!0),this.createDirectoryDialogVisible=!1)}catch(e){this.loadingFolder=!1,console.log(e.message),this.showToast("danger",e.message||e)}this.newDirName=""},cancelDownload(t){this.abortToken[t].cancel(`Download of ${t} cancelled`),this.downloaded[t]="",this.total[t]=""},async download(t,e=!1){try{const s=this,i=this.currentFolder,a=i?`${i}/${t}`:t,o={headers:this.zelidHeader,responseType:"blob",onDownloadProgress(i){const{loaded:a,total:o,lengthComputable:n}=i;if(n){const i=a/o*100;e?s.updateFileProgressVolume(`${t}.zip`,i):s.updateFileProgressVolume(t,i)}else console.log("Total file size is unknown. Cannot compute progress percentage."),e?s.updateFileProgressVolume(`${t}.zip`,"Downloading..."):s.updateFileProgressVolume(t,"Downloading...")}};let n;if(e?(this.showToast("info","Directory download initiated. Please wait..."),n=await this.executeLocalCommand(`/apps/downloadfolder/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(a)}`,null,o)):n=await this.executeLocalCommand(`/apps/downloadfile/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(a)}`,null,o),console.log(n),!e&&n.data&&200===n.status&&s.updateFileProgressVolume(t,100),"error"===n.data.status)this.showToast("danger",n.data.data.message||n.data.data);else{const s=window.URL.createObjectURL(new Blob([n.data])),i=document.createElement("a");i.href=s,e?i.setAttribute("download",`${t}.zip`):i.setAttribute("download",t),document.body.appendChild(i),i.click()}}catch(s){console.log(s.message),s.message?s.message.startsWith("Download")||this.showToast("danger",s.message):this.showToast("danger",s)}},beautifyValue(t){const e=t.split(".");return e[0].length>=4&&(e[0]=e[0].replace(/(\d)(?=(\d{3})+$)/g,"$1,")),e.join(".")},refreshFolder(){const t=this.currentFolder.split("/").filter((t=>""!==t)),e=t.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${e}`,this.loadFolder(this.currentFolder,!0),this.storageStats()},refreshFolderSwitch(){this.currentFolder="";const t=this.currentFolder.split("/").filter((t=>""!==t)),e=t.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${e}`,this.loadFolder(this.currentFolder,!0),this.storageStats()},async deleteFile(t){try{const e=this.currentFolder,s=e?`${e}/${t}`:t,i=await this.executeLocalCommand(`/apps/removeobject/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(s)}`);"error"===i.data.status?this.showToast("danger",i.data.data.message||i.data.data):(this.refreshFolder(),this.showToast("success",`${t} deleted`))}catch(e){this.showToast("danger",e.message||e)}},rename(t){this.renameDialogVisible=!0;let e=t;""!==this.currentFolder&&(e=`${this.currentFolder}/${t}`),this.fileRenaming=e,this.newName=t},async confirmRename(){this.renameDialogVisible=!1;try{const t=this.fileRenaming,e=this.newName,s=await this.executeLocalCommand(`/apps/renameobject/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(t)}/${e}`);console.log(s),"error"===s.data.status?this.showToast("danger",s.data.data.message||s.data.data):(t.includes("/")?this.showToast("success",`${t.split("/").pop()} renamed to ${e}`):this.showToast("success",`${t} renamed to ${e}`),this.loadFolder(this.currentFolder,!0))}catch(t){this.showToast("danger",t.message||t)}},upFolder(){this.changeFolder("..")},onResize(){this.windowWidth=window.innerWidth},handleRadioClick(){"Upload File"===this.selectedRestoreOption&&this.loadBackupList(this.appName,"upload","files"),"FluxDrive"===this.selectedRestoreOption&&this.getFluxDriveBackupList(),console.log("Radio button clicked. Selected option:",this.selectedOption)},getUploadFolder(){if(this.selectedIp){const t=this.selectedIp.split(":")[0],e=this.selectedIp.split(":")[1]||16127;if(this.currentFolder){const s=encodeURIComponent(this.currentFolder);return this.ipAccess?`http://${t}:${e}/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}/${s}`:`https://${t.replace(/\./g,"-")}-${e}.node.api.runonflux.io/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}/${s}`}return this.ipAccess?`http://${t}:${e}/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}`:`https://${t.replace(/\./g,"-")}-${e}.node.api.runonflux.io/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}`}},getUploadFolderBackup(t){const e=this.selectedIp.split(":")[0],s=this.selectedIp.split(":")[1]||16127,i=encodeURIComponent(t);return this.ipAccess?`http://${e}:${s}/ioutils/fileupload/backup/${this.appName}/${this.restoreRemoteFile}/null/${i}`:`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/ioutils/fileupload/backup/${this.appName}/${this.restoreRemoteFile}/null/${i}`},convertVolumeSize(t,e="auto",s=0,i=!0){const a={B:1,KB:1024,MB:1048576,GB:1073741824},o=(t,e)=>t/a[e.toUpperCase()],n=(t,e)=>{const a="B"===e?t.toFixed(0):t.toFixed(s);return i?a:`${a} ${e}`},r=+t;if(Number.isNaN(r))return console.error("Invalid size parameter"),"N/A";if("auto"===e){let t,e=r;return Object.keys(a).forEach((s=>{const i=o(r,s);i>=1&&(void 0===e||it/i[e.toUpperCase()],o=(t,e)=>{const i="B"===e?t.toFixed(0):t.toFixed(s);return`${i} ${e}`};let n;if(Array.isArray(t)&&t.length>0)n=+t.reduce(((t,e)=>t+(e.file_size||0)),0);else{if("number"!==typeof+t)return console.error("Invalid sizes parameter"),"N/A";n=+t}if(isNaN(n))return console.error("Total size is not a valid number"),"N/A";if("auto"===e){let t,e=n;return Object.keys(i).forEach((s=>{const i=a(n,s);i>=1&&(void 0===e||ie.file_name===t[0].name&&e.component!==this.restoreRemoteFile));if(-1!==s)return this.showToast("warning",`'${e.name}' is already in the upload queue for other component.`),!1;const i=this.files.findIndex((t=>t.component===this.restoreRemoteFile));-1!==i?this.$set(this.files,i,{selected_file:e,uploading:!1,uploaded:!1,progress:0,path:`${this.volumePath}/backup/upload`,component:this.restoreRemoteFile,file_name:`backup_${this.restoreRemoteFile.toLowerCase()}.tar.gz`,file_size:e.size}):this.files.push({selected_file:e,uploading:!1,uploaded:!1,progress:0,path:`${this.volumePath}/backup/upload`,component:this.restoreRemoteFile,file_name:`backup_${this.restoreRemoteFile.toLowerCase()}.tar.gz`,file_size:e.size})}return!0},removeFile(t){this.files=this.files.filter((e=>e.selected_file.name!==t.selected_file.name))},async processChunks(t,e){const s={restore_upload:"restoreFromUploadStatus",restore_remote:"restoreFromRemoteURLStatus",backup:"tarProgress",restore_fluxdrive:"restoreFromFluxDriveStatus"};for(const i of t)if(""!==i){const t=s[e];t&&(this[t]=i,"restore_upload"===e&&i.includes("Error:")?(console.log(i),this.changeAlert("danger",i,"showTopUpload",!0)):"restore_upload"===e&&i.includes("Finalizing")?setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopUpload",!0)}),5e3):"restore_remote"===e&&i.includes("Error:")?this.changeAlert("danger",i,"showTopRemote",!0):"restore_remote"===e&&i.includes("Finalizing")?setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopRemote",!0),this.restoreRemoteUrlItems=[]}),5e3):"restore_fluxdrive"===e&&i.includes("Error:")?this.changeAlert("danger",i,"showTopFluxDrive",!0):"restore_fluxdrive"===e&&i.includes("Finalizing")&&setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopFluxDrive",!0),this.restoreRemoteUrlItems=[]}),5e3))}},changeAlert(t,e,s,i){this.alertVariant=t,this.alertMessage=e,this[s]=i},startUpload(){this.showTopUpload=!1;const t=this;return new Promise((async(e,s)=>{try{this.restoreFromUpload=!0,this.restoreFromUploadStatus="Uploading...";const s=this.files.map((t=>new Promise((async(e,s)=>{if(t.uploaded||t.uploading||!t.selected_file)e();else try{await this.upload(t),e()}catch(i){s(i)}}))));await Promise.all(s),this.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),this.restoreFromUploadStatus="Initializing restore jobs...";const i=this.buildPostBody(this.appSpecification,"restore","upload");let a;for(const t of this.files)a=this.updateJobStatus(i,t.component,"restore");const o=localStorage.getItem("zelidauth"),n={zelidauth:o,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},r=this.selectedIp.split(":")[0],l=this.selectedIp.split(":")[1]||16127;let c=`https://${r.replace(/\./g,"-")}-${l}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(c=`http://${r}:${l}/apps/appendrestoretask`);const p=await fetch(c,{method:"POST",body:JSON.stringify(a),headers:n}),d=p.body.getReader();await new Promise(((e,s)=>{function i(){d.read().then((async({done:s,value:a})=>{if(s)return void e();const o=new TextDecoder("utf-8").decode(a),n=o.split("\n");await t.processChunks(n,"restore_upload"),i()}))}i()})),this.restoreFromUpload=!1,this.restoreFromUploadStatus="",this.loadBackupList(this.appName,"upload","files"),e()}catch(i){s(i)}}))},async upload(t){return new Promise(((e,s)=>{const i=this;if("undefined"===typeof XMLHttpRequest)return void s("XMLHttpRequest is not supported.");const a=new XMLHttpRequest,o=this.getUploadFolderBackup(t.file_name);a.upload&&(a.upload.onprogress=function(e){e.total>0&&(e.percent=e.loaded/e.total*100),t.progress=e.percent});const n=new FormData;n.append(t.selected_file.name,t.selected_file),t.uploading=!0,a.onerror=function(e){i.restoreFromUpload=!1,i.restoreFromUploadStatus="",i.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),i.showToast("danger",`An error occurred while uploading ${t.selected_file.name}, try to relogin`),s(e)},a.onload=function(){if(a.status<200||a.status>=300)return console.error(a.status),i.restoreFromUpload=!1,i.restoreFromUploadStatus="",i.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),i.showToast("danger",`An error occurred while uploading '${t.selected_file.name}' - Status code: ${a.status}`),void s(a.status);t.uploaded=!0,t.uploading=!1,i.$emit("complete"),e()},a.open("post",o,!0);const r=this.zelidHeader||{},l=Object.keys(r);for(let t=0;tt+parseFloat(e.file_size)),0)},RestoreTableBuilder(t){const e=t.toString(),s=e.split("_")[0];return[{key:"component",label:"Component Name",thStyle:{width:"25%"}},{key:t.toString().toLowerCase(),label:s,thStyle:{width:"70%"}},{key:"file_size",label:"Size",thStyle:{width:"10%"}},{key:"actions",label:"Action",thStyle:{width:"5%"}}]},addAllTags(){this.selectedBackupComponents=[...this.selectedBackupComponents,...this.components]},clearSelected(){this.$refs.selectableTable.clearSelected()},selectAllRows(){this.$refs.selectableTable.selectAllRows()},selectStorageOption(t){this.selectedStorageMethod=t},buildPostBody(t,e,s=""){const i={appname:t.name,..."restore"===e?{type:s}:{},[e]:t.compose.map((t=>({component:t.name,[e]:!1,..."restore"===e&&"remote"===s?{url:""}:{}})))};return i},updateJobStatus(t,e,s,i=[]){const a=t[s].find((t=>t.component===e));if(a){if(a[s]=!0,"restore"===s&&"remote"===t?.type){const t=i.find((t=>t.component===e));t?(a.url=t.url||"",console.log(`${t.url}`)):console.log(`URL info not found for component ${e}.`)}console.log(`Status for ${e} set to true for ${s}.`)}else console.log(`Component ${e} not found in the ${s} array.`);return t},async createBackup(t,e){if(0===this.selectedBackupComponents?.length)return;this.backupProgress=!0,this.tarProgress="Initializing backup jobs...";const s=localStorage.getItem("zelidauth"),i={zelidauth:s,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},a=this.buildPostBody(this.appSpecification,"backup");let o;for(const h of e)o=this.updateJobStatus(a,h,"backup");const n=this.selectedIp.split(":")[0],r=this.selectedIp.split(":")[1]||16127;let l=`https://${n.replace(/\./g,"-")}-${r}.node.api.runonflux.io/apps/appendbackuptask`;this.ipAccess&&(l=`http://${n}:${r}/apps/appendbackuptask`);const c=await fetch(l,{method:"POST",body:JSON.stringify(o),headers:i}),p=this,d=c.body.getReader();await new Promise(((t,e)=>{function s(){d.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await p.processChunks(o,"backup"),s()}))}s()})),setTimeout((()=>{this.backupProgress=!1}),5e3),this.loadBackupList()},onRowSelected(t){this.backupToUpload=t.map((t=>{const e=t.component,s=this.backupList.find((t=>t.component===e));return{component:e,file:s?s.file:null,file_size:s?s.file_size:null,file_name:s?s.file_name:null,create:s?s.create:null}})).filter((t=>null!==t.file))},applyFilter(){this.$nextTick((()=>{this.checkpoints.forEach((t=>{t._showDetails=!0}))})),console.log(this.appSpecification.compose),this.components=this.appSpecification.compose.map((t=>t.name))},onFilteredBackup(t){this.totalRows=t.length,this.currentPage=1},addAllBackupComponents(t){const e=this.checkpoints.find((e=>e.timestamp===t)),s=e.components.map((t=>({component:t.component,file_url:t.file_url,timestamp:e.timestamp,file_size:t.file_size})));this.newComponents=s},addComponent(t,e){const s=this.newComponents.findIndex((e=>e.component===t.component));-1!==s?this.$set(this.newComponents,s,{timestamp:e,component:t.component,file_url:t.file_url,file_size:t.file_size}):this.newComponents.push({component:t.component,timestamp:e,file_url:t.file_url,file_size:t.file_size})},formatName(t){return`backup_${t.timestamp}`},formatDateTime(t,e=!1){const s=t>1e12,i=s?new Date(t):new Date(1e3*t);return e&&i.setHours(i.getHours()+24),i.toLocaleString()},addRemoteFile(){this.selectFiles()},async restoreFromRemoteFile(){const t=localStorage.getItem("zelidauth");this.showTopRemote=!1,this.downloadingFromUrl=!0,this.restoreFromRemoteURLStatus="Initializing restore jobs...";const e={zelidauth:t,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},s=this.buildPostBody(this.appSpecification,"restore","remote");let i;for(const p of this.restoreRemoteUrlItems)i=this.updateJobStatus(s,p.component,"restore",this.restoreRemoteUrlItems);const a=this.selectedIp.split(":")[0],o=this.selectedIp.split(":")[1]||16127;let n=`https://${a.replace(/\./g,"-")}-${o}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(n=`http://${a}:${o}/apps/appendrestoretask`);const r=await fetch(n,{method:"POST",body:JSON.stringify(i),headers:e}),l=this,c=r.body.getReader();await new Promise(((t,e)=>{function s(){c.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await l.processChunks(o,"restore_remote"),s()}))}s()})),this.downloadingFromUrl=!1,this.restoreFromRemoteURLStatus=""},async addRemoteUrlItem(t,e,s=!1){if((s||this.isValidUrl)&&""!==this.restoreRemoteUrl.trim()&&null!==this.restoreRemoteUrlComponent){if(this.remoteFileSizeResponse=await this.executeLocalCommand(`/backup/getremotefilesize/${encodeURIComponent(this.restoreRemoteUrl.trim())}/B/0/true/${this.appName}`),"success"!==this.remoteFileSizeResponse.data?.status)return void this.showToast("danger",this.remoteFileSizeResponse.data?.data.message||this.remoteFileSizeResponse.data?.massage);if(this.volumeInfoResponse=await this.executeLocalCommand(`/backup/getvolumedataofcomponent/${t}/${e}/B/0/size,available,mount`),"success"!==this.volumeInfoResponse.data?.status)return void this.showToast("danger",this.volumeInfoResponse.data?.data.message||this.volumeInfoResponse.data?.data);if(this.remoteFileSizeResponse.data.data>this.volumeInfoResponse.data.data.available)return void this.showToast("danger",`File is too large (${this.addAndConvertFileSizes(this.remoteFileSizeResponse.data.data)})...`);const s=this.restoreRemoteUrlItems.findIndex((t=>t.url===this.restoreRemoteUrl));if(-1!==s)return void this.showToast("warning",`'${this.restoreRemoteUrl}' is already in the download queue for other component.`);const i=this.restoreRemoteUrlItems.findIndex((t=>t.component===this.restoreRemoteUrlComponent));if(0===this.remoteFileSizeResponse.data.data||null===this.remoteFileSizeResponse.data.data)return;-1!==i?(this.restoreRemoteUrlItems[i].url=this.restoreRemoteUrl,this.restoreRemoteUrlItems[i].file_size=this.remoteFileSizeResponse.data.data):this.restoreRemoteUrlItems.push({url:this.restoreRemoteUrl,component:this.restoreRemoteUrlComponent,file_size:this.remoteFileSizeResponse.data.data})}},async deleteItem(t,e,s="",i=""){const a=e.findIndex((t=>t.file===s));-1!==a&&(e[a]?.selected_file||"upload"!==i||(console.log(e[a].file),await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(e[a].file)}/${this.appName}`))),e.splice(t,1)},async loadBackupList(t=this.appName,e="local",s="backupList"){const i=[];for(const a of this.components)this.volumeInfo=await this.executeLocalCommand(`/backup/getvolumedataofcomponent/${t}/${a}/B/0/mount`),this.volumePath=this.volumeInfo.data?.data,this.backupFile=await this.executeLocalCommand(`/backup/getlocalbackuplist/${encodeURIComponent(`${this.volumePath.mount}/backup/${e}`)}/B/0/true/${t}`),this.backupItem=this.backupFile.data?.data,Array.isArray(this.backupItem)&&(this.BackupItem={isActive:!1,component:a,create:+this.backupItem[0].create,file_size:this.backupItem[0].size,file:`${this.volumePath.mount}/backup/${e}/${this.backupItem[0].name}`,file_name:`${this.backupItem[0].name}`},i.push(this.BackupItem));console.log(JSON.stringify(s)),this[s]=i},allDownloadsCompleted(){return this.computedFileProgress.every((t=>100===t.progress))},allDownloadsCompletedVolume(){return this.computedFileProgressVolume.every((t=>100===t.progress))&&setTimeout((()=>{this.fileProgressVolume=this.fileProgressVolume.filter((t=>100!==t.progress))}),5e3),this.computedFileProgressVolume.every((t=>100===t.progress))},updateFileProgress(t,e,s,i,a){this.$nextTick((()=>{const t=this.fileProgress.findIndex((t=>t.fileName===a));-1!==t?this.$set(this.fileProgress,t,{fileName:a,progress:e}):this.fileProgress.push({fileName:a,progress:e})}))},updateFileProgressFD(t,e,s,i,a){this.$nextTick((()=>{const t=this.fileProgressFD.findIndex((t=>t.fileName===a));-1!==t?this.$set(this.fileProgressFD,t,{fileName:a,progress:e}):this.fileProgressFD.push({fileName:a,progress:e})}))},updateFileProgressVolume(t,e){this.$nextTick((()=>{const s=this.fileProgressVolume.findIndex((e=>e.fileName===t));-1!==s?this.$set(this.fileProgressVolume,s,{fileName:t,progress:e}):this.fileProgressVolume.push({fileName:t,progress:e})}))},rowClassFluxDriveBackups(t,e){return t&&"row"===e?"":"table-no-padding"},async deleteRestoreBackup(t,e,s=0){if(0!==s){this.newComponents=this.newComponents.filter((t=>t.timestamp!==s));try{const t=localStorage.getItem("zelidauth"),i={headers:{zelidauth:t}},a={appname:this.appName,timestamp:s},o=await dc.post(`${this.fluxDriveEndPoint}/removeCheckpoint`,a,i);if(console.error(o.data),o&&o.data&&"success"===o.data.status){const t=e.findIndex((t=>t.timestamp===s));return e.splice(t,1),this.showToast("success","Checkpoint backup removed successfully."),!0}return this.showToast("danger",o.data.data.message),!1}catch(i){console.error("Error removing checkpoint",i),this.showToast("Error removing checkpoint")}}return!1},async deleteLocalBackup(t,e,s=0){if(0===s){for(const t of e){const e=t.file;await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(e)}/${this.appName}`)}this.backupList=[],this.backupToUpload=[]}else{this.status=await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(s)}/${this.appName}`);const i=e.findIndex((e=>e.component===t));e.splice(i,1)}},async downloadAllBackupFiles(t){try{this.showProgressBar=!0;const e=localStorage.getItem("zelidauth"),s=this,i={headers:{zelidauth:e},responseType:"blob",onDownloadProgress(t){const{loaded:e,total:i,target:a}=t,o=decodeURIComponent(a.responseURL),n=o.lastIndexOf("/"),r=-1!==n?o.slice(0,n):o,l=r.split("/").pop(),c=e/i*100,p=s.backupList.find((t=>t.file.endsWith(l)));s.updateFileProgress(l,c,e,i,p.component)}},a=t.map((async t=>{try{const{file:e}=t,a=e.split("/"),o=a[a.length-1],n=await this.executeLocalCommand(`/backup/downloadlocalfile/${encodeURIComponent(e)}/${s.appName}`,null,i),r=new Blob([n.data]),l=window.URL.createObjectURL(r),c=document.createElement("a");return c.href=l,c.setAttribute("download",o),document.body.appendChild(c),c.click(),document.body.removeChild(c),window.URL.revokeObjectURL(l),!0}catch(e){return console.error("Error downloading file:",e),!1}})),o=await Promise.all(a);o.every((t=>t))?console.log("All downloads completed successfully"):console.error("Some downloads failed. Check the console for details.")}catch(e){console.error("Error downloading files:",e)}finally{setTimeout((()=>{this.showProgressBar=!1,this.fileProgress=[]}),5e3)}},async checkFluxDriveUploadProgress(){const t=localStorage.getItem("zelidauth"),e={headers:{zelidauth:t}},s=[];let i=!1;for(const o of this.fluxDriveUploadTask)try{const t=await dc.get(`${this.fluxDriveEndPoint}/gettaskstatus?taskId=${o.taskId}`,e);t&&t.data&&"success"===t.data.status?(o.status=t.data.data.status.state,"downloading"===o.status?o.progress=t.data.data.status.progress/2:"uploading"===o.status?o.progress=50+t.data.data.status.progress/2:o.progress=t.data.data.status.progress,o.message=t.data.data.status.message,this.updateFileProgressFD(o.filename,o.progress,0,0,o.component),this.fluxDriveUploadStatus=t.data.data.status.message,"finished"===o.status?this.showToast("success",`${o.component} backup uploaded to FluxDrive successfully.`):"failed"===o.status?this.showToast("danger",`failed to upload ${o.component} backup to FluxDrive.${this.fluxDriveUploadStatus}`):s.push(o)):i=!0}catch(a){i=!0,console.log("error fetching upload status")}i||(this.fluxDriveUploadTask=s),this.fluxDriveUploadTask.length>0?setTimeout((()=>{this.checkFluxDriveUploadProgress()}),2e3):(this.uploadProgress=!1,this.showFluxDriveProgressBar=!1,this.fluxDriveUploadStatus="",this.fileProgressFD=[])},async uploadToFluxDrive(){try{this.uploadProgress=!0;const t=localStorage.getItem("zelidauth"),e=this,s={headers:{zelidauth:t}};let i=0;const a=this.backupToUpload.map((async t=>{try{const{file:a}=t,{component:o}=t,{file_size:n}=t,{file_name:r}=t,{create:l}=t;let c=l;Math.abs(c-i)>36e5?i=c:c=i;const p=this.selectedIp.split(":")[0],d=this.selectedIp.split(":")[1]||16127,h=`https://${p.replace(/\./g,"-")}-${d}.node.api.runonflux.io/backup/downloadlocalfile/${encodeURIComponent(a)}/${e.appName}`,u={appname:e.appName,component:o,filename:r,timestamp:c,host:h,filesize:n},m=await dc.post(`${this.fluxDriveEndPoint}/registerbackupfile`,u,s);return m&&m.data&&"success"===m.data.status?(this.fluxDriveUploadTask.push({taskId:m.data.data.taskId,filename:r,component:o,status:"in queue",progress:0}),!0):(console.error(m.data),this.showToast("danger",m.data.data.message),!1)}catch(a){return console.error("Error registering file:",a),this.showToast("danger","Error registering file(s) for upload."),!1}})),o=await Promise.all(a);o.every((t=>t))?(console.log("All uploads registered successfully"),this.showFluxDriveProgressBar=!0):console.error("Some uploads failed. Check the console for details.")}catch(t){console.error("Error registering files:",t),this.showToast("danger","Error registering file(s) for upload.")}finally{setTimeout((()=>{this.checkFluxDriveUploadProgress()}),2e3)}},async restoreFromFluxDrive(t){const e=[];for(const h of t)e.push({component:h.component,file_size:h.file_size,url:h.file_url});const s=localStorage.getItem("zelidauth");this.showTopFluxDrive=!1,this.restoringFromFluxDrive=!0,this.restoreFromFluxDriveStatus="Initializing restore jobs...";const i={zelidauth:s,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},a=this.buildPostBody(this.appSpecification,"restore","remote");let o;for(const h of e)o=this.updateJobStatus(a,h.component,"restore",e);const n=this.selectedIp.split(":")[0],r=this.selectedIp.split(":")[1]||16127;let l=`https://${n.replace(/\./g,"-")}-${r}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(l=`http://${n}:${r}/apps/appendrestoretask`);const c=await fetch(l,{method:"POST",body:JSON.stringify(o),headers:i}),p=this,d=c.body.getReader();await new Promise(((t,e)=>{function s(){d.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await p.processChunks(o,"restore_fluxdrive"),s()}))}s()})),this.restoringFromFluxDrive=!1,this.restoreFromFluxDriveStatus=""},async getFluxDriveBackupList(){try{const t=localStorage.getItem("zelidauth"),e={headers:{zelidauth:t}},s=await dc.get(`${this.fluxDriveEndPoint}/getbackuplist?appname=${this.appName}`,e);if(s.data&&"success"===s.data.status){console.log(JSON.stringify(s.data.checkpoints)),this.tableBackup+=1;const t=s.data.checkpoints.reduce(((t,{components:e})=>(e.forEach((e=>t.add(e.component))),t)),new Set),e=[{value:"",text:"all"}];for(const s of t)e.push({value:s,text:s});this.restoreComponents=e,this.applyFilter(),this.checkpoints=s.data.checkpoints}else s.data&&"error"===s.data.status&&this.showToast("danger",s.data.data.message)}catch(t){console.error("Error receiving FluxDrive backup list",t),this.showToast("danger","Error receiving FluxDrive backup list")}},async initMMSDK(){try{await cc.init(),pc=cc.getProvider()}catch(t){console.log(t)}},connectTerminal(t){if(this.appSpecification.version>=4){const t=Object.values(this.appSpecification.compose),e=t.some((t=>t.name===this.selectedApp));if(!e)return void this.showToast("danger","Please select an container app before connecting.")}let e=0;if(!(this.selectedApp||this.appSpecification.version<=3))return void this.showToast("danger","Please select an container app before connecting.");if(null===this.selectedCmd)return void this.showToast("danger","No command selected.");if("Custom"===this.selectedCmd){if(!this.customValue)return void this.showToast("danger","Please enter a custom command.");console.log(`Custom command: ${this.customValue}`),console.log(`App name: ${t}`)}else console.log(`Selected command: ${this.selectedCmd}`),console.log(`App name: ${t}`);this.isConnecting=!0,this.terminal=new st.Terminal({allowProposedApi:!0,cursorBlink:!0,theme:{foreground:"white",background:"black"}});const s=this.selectedIp.split(":")[0],i=this.selectedIp.split(":")[1]||16127,a=localStorage.getItem("zelidauth");let o=`https://${s.replace(/\./g,"-")}-${i}.node.api.runonflux.io/terminal`;this.ipAccess&&(o=`http://${s}:${i}/terminal`),this.socket=rt.ZP.connect(o);let n="";this.enableUser&&(n=this.userInputValue),this.customValue?this.socket.emit("exec",a,t,this.customValue,this.envInputValue,n):this.socket.emit("exec",a,t,this.selectedCmd,this.envInputValue,n),this.terminal.open(this.$refs.terminalElement);const r=new it.FitAddon;this.terminal.loadAddon(r);const l=new at.WebLinksAddon;this.terminal.loadAddon(l);const c=new ot.Unicode11Addon;this.terminal.loadAddon(c);const p=new nt.SerializeAddon;this.terminal.loadAddon(p),this.terminal._initialized=!0,this.terminal.onResize((t=>{const{cols:e,rows:s}=t;console.log("Resizing to",{cols:e,rows:s}),this.socket.emit("resize",{cols:e,rows:s})})),this.terminal.onTitleChange((t=>{console.log(t)})),window.onresize=()=>{r.fit()},this.terminal.onData((t=>{this.socket.emit("cmd",t)})),this.socket.on("error",(t=>{this.showToast("danger",t),this.disconnectTerminal()})),this.socket.on("show",(t=>{0===e&&(e=1,this.customValue||(this.socket.emit("cmd","export TERM=xterm\n"),"/bin/bash"===this.selectedCmd&&this.socket.emit("cmd",'PS1="\\[\\033[01;31m\\]\\u\\[\\033[01;33m\\]@\\[\\033[01;36m\\]\\h \\[\\033[01;33m\\]\\w \\[\\033[01;35m\\]\\$ \\[\\033[00m\\]"\n'),this.socket.emit("cmd","alias ls='ls --color'\n"),this.socket.emit("cmd","alias ll='ls -alF'\n"),this.socket.emit("cmd","clear\n")),setTimeout((()=>{this.isConnecting=!1,this.isVisible=!0,this.$nextTick((()=>{setTimeout((()=>{this.terminal.focus(),r.fit()}),500)}))}),1400)),this.terminal.write(t)})),this.socket.on("end",(()=>{this.disconnectTerminal()}))},disconnectTerminal(){this.socket&&this.socket.disconnect(),this.terminal&&this.terminal.dispose(),this.isVisible=!1,this.isConnecting=!1},onSelectChangeCmd(){"Custom"!==this.selectedCmd&&(this.customValue="")},onSelectChangeEnv(){this.enableEnvironment||(this.envInputValue="")},onSelectChangeUser(){this.enableUser||(this.userInputValue="")},onFilteredSelection(t){this.entNodesSelectTable.totalRows=t.length,this.entNodesSelectTable.currentPage=1},async getMarketPlace(){try{const t=await dc.get("https://stats.runonflux.io/marketplace/listapps");"success"===t.data.status&&(this.marketPlaceApps=t.data.data)}catch(t){console.log(t)}},async getMultiplier(){try{const t=await dc.get("https://stats.runonflux.io/apps/multiplier");"success"===t.data.status&&"number"===typeof t.data.data&&t.data.data>=1&&(this.generalMultiplier=t.data.data)}catch(t){this.generalMultiplier=10,console.log(t)}},async appsDeploymentInformation(){const t=await J.Z.appsDeploymentInformation(),{data:e}=t.data;"success"===t.data.status?this.deploymentAddress=e.address:this.showToast("danger",t.data.data.message||t.data.data)},async updateManagementTab(t){if(await this.getZelidAuthority(),!this.globalZelidAuthorized)return;this.noData=!1,this.processes=[],this.enableHistoryStatistics=!1,this.callResponse.data="",this.callResponse.status="",this.appExec.cmd="",this.appExec.env="",this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.backupToUpload=[];const e=this.$refs.managementTabs.$children,s=e[t]?.title;switch("Interactive Terminal"!==s&&this.disconnectTerminal(),"Logs"!==s&&(this.stopPolling(),this.pollingEnabled=!1),"Monitoring"!==s&&this.stopPollingStats(),this.selectedIp||(await this.getInstancesForDropDown(),await this.getInstalledApplicationSpecifics(),this.getApplicationLocations().catch((()=>{this.isBusy=!1,this.showToast("danger","Error loading application locations")}))),this.getApplicationManagementAndStatus(),t){case 1:this.getInstalledApplicationSpecifics(),this.getGlobalApplicationSpecifics();break;case 2:this.callResponseInspect.data="",this.getApplicationInspect();break;case 3:this.$nextTick((()=>{this.initCharts(),setTimeout(this.startPollingStats(),2e3)}));break;case 4:this.callResponseChanges.data="",this.getApplicationChanges();break;case 5:this.logs=[],this.selectedLog=[],this.fetchLogsForSelectedContainer();break;case 8:this.applyFilter(),this.loadBackupList();break;case 9:this.appSpecification?.compose&&1!==this.appSpecification?.compose?.length||this.refreshFolder();break;case 13:this.getZelidAuthority(),this.cleanData();break;case 14:this.getZelidAuthority(),this.cleanData();break;default:break}},async appsGetListAllApps(){const t=await this.executeLocalCommand("/apps/listallapps");console.log(t),this.getAllAppsResponse.status=t.data.status,this.getAllAppsResponse.data=t.data.data},goBackToApps(){this.$emit("back")},async initSignFluxSSO(){try{const t=this.dataToSign,e=(0,X.PR)();if(!e)return void this.showToast("warning","Not logged in as SSO. Login with SSO or use different signing method.");const s=e.auth.currentUser.accessToken,i={"Content-Type":"application/json",Authorization:`Bearer ${s}`},a=await dc.post("https://service.fluxcore.ai/api/signMessage",{message:t},{headers:i});if("success"!==a.data?.status&&a.data?.signature)return void this.showToast("warning","Failed to sign message, please try again.");this.signature=a.data.signature}catch(t){this.showToast("warning","Failed to sign message, please try again.")}},async initiateSignWSUpdate(){if(this.dataToSign.length>1800){const t=this.dataToSign,e={publicid:Math.floor(999999999999999*Math.random()).toString(),public:t};await dc.post("https://storage.runonflux.io/v1/public",e);const s=`zel:?action=sign&message=FLUX_URL=https://storage.runonflux.io/v1/public/${e.publicid}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`;window.location.href=s}else window.location.href=`zel:?action=sign&message=${this.dataToSign}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`;const t=this,{protocol:e,hostname:s,port:i}=window.location;let a="";a+=e,a+="//";const o=/[A-Za-z]/g;if(s.split("-")[4]){const t=s.split("-"),e=t[4].split("."),i=+e[0]+1;e[0]=i.toString(),e[2]="api",t[4]="",a+=t.join("-"),a+=e.join(".")}else if(s.match(o)){const t=s.split(".");t[0]="api",a+=t.join(".")}else{if("string"===typeof s&&this.$store.commit("flux/setUserIp",s),+i>16100){const t=+i+1;this.$store.commit("flux/setFluxPort",t)}a+=s,a+=":",a+=this.config.apiPort}let n=uc.get("backendURL")||a;n=n.replace("https://","wss://"),n=n.replace("http://","ws://");const r=this.appUpdateSpecification.owner+this.timestamp,l=`${n}/ws/sign/${r}`,c=new WebSocket(l);this.websocket=c,c.onopen=e=>{t.onOpen(e)},c.onclose=e=>{t.onClose(e)},c.onmessage=e=>{t.onMessage(e)},c.onerror=e=>{t.onError(e)}},onError(t){console.log(t)},onMessage(t){const e=hc.parse(t.data);"success"===e.status&&e.data&&(this.signature=e.data.signature),console.log(e),console.log(t)},onClose(t){console.log(t)},onOpen(t){console.log(t)},async getInstalledApplicationSpecifics(){const t=await this.executeLocalCommand(`/apps/installedapps/${this.appName}`);console.log(t),t&&("error"!==t.data.status&&t.data.data[0]?(this.callResponse.status=t.data.status,this.callResponse.data=t.data.data[0],this.appSpecification=t.data.data[0]):this.showToast("danger",t.data.data.message||t.data.data))},getExpireOptions(){this.expireOptions=[];const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;e+5e3<264e3&&this.expireOptions.push({value:5e3+e,label:"1 week",time:6048e5}),this.expirePosition=0,e+11e3<264e3&&(this.expireOptions.push({value:11e3+e,label:"2 weeks",time:12096e5}),this.expirePosition=1),e+22e3<264e3&&(this.expireOptions.push({value:22e3+e,label:"1 month",time:2592e6}),this.expirePosition=2),e+66e3<264e3&&this.expireOptions.push({value:66e3+e,label:"3 months",time:7776e6}),e+132e3<264e3&&this.expireOptions.push({value:132e3+e,label:"6 months",time:15552e6}),this.expireOptions.push({value:264e3,label:"Up to one year",time:31536e6})},async getGlobalApplicationSpecifics(){const t=await J.Z.getAppSpecifics(this.appName);if(console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data),this.callBResponse.status=t.data.status;else{this.callBResponse.status=t.data.status,this.callBResponse.data=t.data.data;const s=t.data.data;if(console.log(s),this.appUpdateSpecification=JSON.parse(JSON.stringify(s)),this.appUpdateSpecification.instances=s.instances||3,this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances),this.appUpdateSpecification.version<=3)this.appUpdateSpecification.version=3,this.appUpdateSpecification.ports=s.port||this.ensureString(s.ports),this.appUpdateSpecification.domains=this.ensureString(s.domains),this.appUpdateSpecification.enviromentParameters=this.ensureString(s.enviromentParameters),this.appUpdateSpecification.commands=this.ensureString(s.commands),this.appUpdateSpecification.containerPorts=s.containerPort||this.ensureString(s.containerPorts);else{if(this.appUpdateSpecification.version>3&&this.appUpdateSpecification.compose.find((t=>t.containerData.includes("g:")))&&(this.masterSlaveApp=!0),this.appUpdateSpecification.version<=7&&(this.appUpdateSpecification.version=7),this.appUpdateSpecification.contacts=this.ensureString([]),this.appUpdateSpecification.geolocation=this.ensureString([]),this.appUpdateSpecification.version>=5){this.appUpdateSpecification.contacts=this.ensureString(s.contacts||[]),this.appUpdateSpecification.geolocation=this.ensureString(s.geolocation||[]);try{this.decodeGeolocation(s.geolocation||[])}catch(e){console.log(e),this.appUpdateSpecification.geolocation=this.ensureString([])}}this.appUpdateSpecification.compose.forEach((t=>{t.ports=this.ensureString(t.ports),t.domains=this.ensureString(t.domains),t.environmentParameters=this.ensureString(t.environmentParameters),t.commands=this.ensureString(t.commands),t.containerPorts=this.ensureString(t.containerPorts),t.secrets=this.ensureString(t.secrets||""),t.repoauth=this.ensureString(t.repoauth||"")})),this.appUpdateSpecification.version>=6&&(this.getExpireOptions(),this.appUpdateSpecification.expire=this.ensureNumber(this.expireOptions[this.expirePosition].value)),this.appUpdateSpecification.version>=7&&(this.appUpdateSpecification.staticip=this.appUpdateSpecification.staticip??!1,this.appUpdateSpecification.nodes=this.appUpdateSpecification.nodes||[],this.appUpdateSpecification.nodes&&this.appUpdateSpecification.nodes.length&&(this.isPrivateApp=!0),this.appUpdateSpecification.nodes.forEach((async t=>{const e=this.enterprisePublicKeys.find((e=>e.nodeip===t));if(!e){const e=await this.fetchEnterpriseKey(t);if(e){const s={nodeip:t.ip,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t));i||this.enterprisePublicKeys.push(s)}}})),this.enterpriseNodes||await this.getEnterpriseNodes(),this.selectedEnterpriseNodes=[],this.appUpdateSpecification.nodes.forEach((t=>{if(this.enterpriseNodes){const e=this.enterpriseNodes.find((e=>e.ip===t||t===`${e.txhash}:${e.outidx}`));e&&this.selectedEnterpriseNodes.push(e)}else this.showToast("danger","Failed to load Enterprise Node List")})))}}},async testAppInstall(t){if(this.downloading)return void this.showToast("danger","Test install/launch was already initiated");const e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.downloading=!0,this.testError=!1,this.showToast("warning",`Testing ${t} installation, please wait`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}};let a;try{if(this.appUpdateSpecification.nodes.length>0){const e=this.appUpdateSpecification.nodes[Math.floor(Math.random()*this.appUpdateSpecification.nodes.length)],s=e.split(":")[0],o=Number(e.split(":")[1]||16127),n=`https://${s.replace(/\./g,"-")}-${o}.node.api.runonflux.io/apps/testappinstall/${t}`;a=await dc.get(n,i)}else a=await J.Z.justAPI().get(`/apps/testappinstall/${t}`,i);if("error"===a.data.status)this.testError=!0,this.showToast("danger",a.data.data.message||a.data.data);else{console.log(a),this.output=JSON.parse(`[${a.data.replace(/}{/g,"},{")}]`),console.log(this.output);for(let t=0;t{this.showToast("danger",t.message||t)}));console.log(s),"success"===s.data.status?(this.updateHash=s.data.data,console.log(this.updateHash),this.showToast("success",s.data.data.message||s.data.data)):this.showToast("danger",s.data.data.message||s.data.data);const i=await(0,Y.Z)();i&&(this.stripeEnabled=i.stripe,this.paypalEnabled=i.paypal),this.progressVisable=!1},async checkFluxCommunication(){const t=await J.Z.checkCommunication();"success"===t.data.status?this.fluxCommunication=!0:this.showToast("danger",t.data.data.message||t.data.data)},convertExpire(){if(!this.extendSubscription){const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;if(e<5e3)throw new Error("Your application will expire in less than one week, you need to extend subscription to be able to update specifications");return e}return this.expireOptions[this.expirePosition]?this.expireOptions[this.expirePosition].value:22e3},async checkFluxUpdateSpecificationsAndFormatMessage(){try{if(this.appRunningTill.new=7&&(this.constructNodes(),this.appUpdateSpecification.compose.forEach((t=>{if((t.repoauth||t.secrets)&&(e=!0,!this.appUpdateSpecification.nodes.length))throw new Error("Private repositories and secrets can only run on Enterprise Nodes")}))),e){this.showToast("info","Encrypting specifications, this will take a while...");const t=[];for(const e of this.appUpdateSpecification.nodes){const s=this.enterprisePublicKeys.find((t=>t.nodeip===e));if(s)t.push(s.nodekey);else{const s=await this.fetchEnterpriseKey(e);if(s){const i={nodeip:e.ip,nodekey:s},a=this.enterprisePublicKeys.find((t=>t.nodeip===e.ip));a||this.enterprisePublicKeys.push(i),t.push(s)}}}for(const e of this.appUpdateSpecification.compose){if(e.environmentParameters=e.environmentParameters.replace("\\“",'\\"'),e.commands=e.commands.replace("\\“",'\\"'),e.domains=e.domains.replace("\\“",'\\"'),e.secrets&&!e.secrets.startsWith("-----BEGIN PGP MESSAGE")){e.secrets=e.secrets.replace("\\“",'\\"');const s=await this.encryptMessage(e.secrets,t);if(!s)return;e.secrets=s}if(e.repoauth&&!e.repoauth.startsWith("-----BEGIN PGP MESSAGE")){const s=await this.encryptMessage(e.repoauth,t);if(!s)return;e.repoauth=s}}}e&&this.appUpdateSpecification.compose.forEach((t=>{if(t.secrets&&!t.secrets.startsWith("-----BEGIN PGP MESSAGE"))throw new Error("Encryption failed");if(t.repoauth&&!t.repoauth.startsWith("-----BEGIN PGP MESSAGE"))throw new Error("Encryption failed")})),t.version>=5&&(t.geolocation=this.generateGeolocations()),t.version>=6&&(await this.getDaemonBlockCount(),t.expire=this.convertExpire());const s=await J.Z.appUpdateVerification(t);if("error"===s.data.status)throw new Error(s.data.data.message||s.data.data);const i=s.data.data;this.appPricePerSpecs=0,this.appPricePerSpecsUSD=0,this.applicationPriceFluxDiscount="",this.applicationPriceFluxError=!1,this.freeUpdate=!1;const a=await J.Z.appPriceUSDandFlux(i);if("error"===a.data.status)throw new Error(a.data.data.message||a.data.data);this.appPricePerSpecsUSD=+a.data.data.usd,console.log(a.data.data),0===this.appPricePerSpecsUSD?this.freeUpdate=!0:Number.isNaN(+a.data.data.fluxDiscount)?(this.applicationPriceFluxError=!0,this.showToast("danger","Not possible to complete payment with Flux crypto currency")):(this.appPricePerSpecs=+a.data.data.flux,this.applicationPriceFluxDiscount=+a.data.data.fluxDiscount);const o=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));o&&(this.isMarketplaceApp=!0),this.timestamp=Date.now(),this.dataForAppUpdate=i,this.dataToSign=this.updatetype+this.version+JSON.stringify(i)+this.timestamp,this.progressVisable=!1}catch(t){this.progressVisable=!1,console.log(t.message),console.error(t),this.showToast("danger",t.message||t)}},async checkFluxCancelSubscriptionAndFormatMessage(){try{this.progressVisable=!0,this.operationTitle="Cancelling subscription...";const t=this.appUpdateSpecification;t.geolocation=this.generateGeolocations(),t.expire=100;const e=await J.Z.appUpdateVerification(t);if(this.progressVisable=!1,"error"===e.data.status)throw new Error(e.data.data.message||e.data.data);const s=e.data.data;this.timestamp=Date.now(),this.dataForAppUpdate=s,this.dataToSign=this.updatetype+this.version+JSON.stringify(s)+this.timestamp}catch(t){this.progressVisable=!1,console.log(t.message),console.error(t),this.showToast("danger",t.message||t)}},async appExecute(t=this.appSpecification.name){try{if(!this.appExec.cmd)return void this.showToast("danger","No commands specified");const e=this.appExec.env?this.appExec.env:"[]",{cmd:s}=this.appExec;this.commandExecuting=!0,console.log("here");const i={appname:t,cmd:fc(s),env:JSON.parse(e)},a=await this.executeLocalCommand("/apps/appexec/",i);console.log(a),"error"===a.data.status?this.showToast("danger",a.data.data.message||a.data.data):(this.commandExecuting=!1,this.callResponse.status=a.status,t.includes("_")?(this.callResponse.data&&Array.isArray(this.callResponse.data)||(this.callResponse.data=[]),this.callResponse.data.unshift({name:t,data:a.data})):this.callResponse.data=a.data)}catch(e){this.commandExecuting=!1,console.log(e),this.showToast("danger",e.message||e)}},async downloadApplicationLog(t){const e=this;this.downloaded="",this.total="";const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},responseType:"blob",onDownloadProgress(t){e.downloaded=t.loaded,e.total=t.total,e.downloaded===e.total&&setTimeout((()=>{e.downloaded="",e.total=""}),5e3)}};try{this.downloadingLog=!0;const e=await this.executeLocalCommand(`/apps/applogpolling/${t}/all`,null,i),s=await e.data.text(),a=JSON.parse(s);let o=a.logs;if(!Array.isArray(o))throw new Error("Log data is missing or is not in the expected format.");if(0===o.length)throw new Error("No logs available to download.");const n=/\u001b\[[0-9;]*[a-zA-Z]/g;if(o=o.map((t=>t.replace(n,""))),!this.displayTimestamps){const t=/^[^\s]+\s*/;o=o.map((e=>e.replace(t,"")))}const r=o.join("\n"),l=new Blob([r],{type:"text/plain"}),c=window.URL.createObjectURL(l),p=document.createElement("a");p.href=c,p.setAttribute("download","app.log"),document.body.appendChild(p),p.click(),this.downloadingLog=!1,window.URL.revokeObjectURL(c)}catch(a){this.downloadingLog=!1,console.error("Error occurred while handling logs:",a),this.showToast("danger",a)}},getAppIdentifier(t=this.appName){return t&&t.startsWith("zel")||t&&t.startsWith("flux")?t:"KadenaChainWebNode"===t||"FoldingAtHomeB"===t?`zel${t}`:`flux${t}`},getAppDockerNameIdentifier(t){const e=this.getAppIdentifier(t);return e&&e.startsWith("/")?e:`/${e}`},async getApplicationInspect(){const t=[];if(this.commandExecutingInspect=!0,this.appSpecification.version>=4)for(const e of this.appSpecification.compose){const s=await this.executeLocalCommand(`/apps/appinspect/${e.name}_${this.appSpecification.name}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else{const i={name:e.name,callData:s.data.data};t.push(i)}}else{const e=await this.executeLocalCommand(`/apps/appinspect/${this.appName}`);if("error"===e.data.status)this.showToast("danger",e.data.data.message||e.data.data);else{const s={name:this.appSpecification.name,callData:e.data.data};t.push(s)}console.log(e)}this.commandExecutingInspect=!1,this.callResponseInspect.status="success",this.callResponseInspect.data=t},async stopMonitoring(t,e=!1){let s;this.output=[],this.showToast("warning",`Stopping Monitoring of ${t}`),s=e?await this.executeLocalCommand(`/apps/stopmonitoring/${t}/true`):await this.executeLocalCommand(`/apps/stopmonitoring/${t}`),"success"===s.data.status?this.showToast("success",s.data.data.message||s.data.data):this.showToast("danger",s.data.data.message||s.data.data),console.log(s)},async startMonitoring(t){this.output=[],this.showToast("warning",`Starting Monitoring of ${t}`);const e=await this.executeLocalCommand(`/apps/startmonitoring/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),console.log(e)},async getApplicationChanges(){const t=[];if(this.commandExecutingChanges=!0,this.appSpecification.version>=4)for(const e of this.appSpecification.compose){const s=await this.executeLocalCommand(`/apps/appchanges/${e.name}_${this.appSpecification.name}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else{const i={name:e.name,callData:s.data.data};t.push(i)}}else{const e=await this.executeLocalCommand(`/apps/appchanges/${this.appName}`);if("error"===e.data.status)this.showToast("danger",e.data.data.message||e.data.data);else{const s={name:this.appSpecification.name,callData:e.data.data};t.push(s)}console.log(e)}this.commandExecutingChanges=!1,this.callResponseChanges.status="success",this.callResponseChanges.data=t},async getInstancesForDropDown(){const t=await J.Z.getAppLocation(this.appName);if(this.selectedIp=null,console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data);else{if(this.masterIP=null,this.instances.data=[],this.instances.data=t.data.data,this.masterSlaveApp){const t=`https://${this.appName}.app.runonflux.io/fluxstatistics?scope=${this.appName}apprunonfluxio;json;norefresh`;let e=!1,s=await dc.get(t).catch((t=>{e=!0,console.log(`UImasterSlave: Failed to reach FDM with error: ${t}`),this.masterIP="Failed to Check"}));if(!e){if(s=s.data,s&&s.length>0){console.log("FDM_Data_Received");for(const t of s){const e=t.find((t=>1===t.id&&"Server"===t.objType&&"pxname"===t.field.name&&t.value.value.toLowerCase().startsWith(`${this.appName.toLowerCase()}apprunonfluxio`)));if(e){console.log("FDM_Data_Service_Found");const e=t.find((t=>1===t.id&&"Server"===t.objType&&"svname"===t.field.name));if(e)return console.log("FDM_Data_IP_Found"),this.masterIP=e.value.value.split(":")[0],console.log(this.masterIP),void(this.selectedIp||("16127"===e.value.value.split(":")[1]?this.selectedIp=e.value.value.split(":")[0]:this.selectedIp=e.value.value));break}}}this.masterIP||(this.masterIP="Defining New Primary In Progress"),this.selectedIp||(this.selectedIp=this.instances.data[0].ip)}}else this.selectedIp||(this.selectedIp=this.instances.data[0].ip);if(console.log(this.ipAccess),this.ipAccess){const t=this.ipAddress.replace("http://",""),e=16127===this.config.apiPort?t:`${t}:${this.config.apiPort}`,s=this.instances.data.filter((t=>t.ip===e));s.length>0&&(this.selectedIp=e)}else{const t=/https:\/\/(\d+-\d+-\d+-\d+)-(\d+)/,e=this.ipAddress.match(t);if(e){const t=e[1].replace(/-/g,"."),s=16127===this.config.apiPort?t:`${t}:${this.config.apiPort}`,i=this.instances.data.filter((t=>t.ip===s));i.length>0&&(this.selectedIp=s)}}this.instances.totalRows=this.instances.data.length}},async getApplicationLocations(){this.isBusy=!0;const t=await J.Z.getAppLocation(this.appName);if(console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data);else{if(this.masterSlaveApp){const t=`https://${this.appName}.app.runonflux.io/fluxstatistics?scope=${this.appName};json;norefresh`;let e=!1;this.masterIP=null;let s=await dc.get(t).catch((t=>{e=!0,console.log(`UImasterSlave: Failed to reach FDM with error: ${t}`),this.masterIP="Failed to Check"}));if(!e){if(s=s.data,s&&s.length>0){console.log("FDM_Data_Received");for(const t of s){const e=t.find((t=>1===t.id&&"Server"===t.objType&&"pxname"===t.field.name&&t.value.value.toLowerCase().startsWith(`${this.appName.toLowerCase()}apprunonfluxio`)));if(e){console.log("FDM_Data_Service_Found");const e=t.find((t=>1===t.id&&"Server"===t.objType&&"svname"===t.field.name));e?(console.log("FDM_Data_IP_Found"),this.masterIP=e.value.value.split(":")[0],console.log(this.masterIP)):this.masterIP="Defining New Primary In Progress";break}}}this.masterIP||(this.masterIP="Defining New Primary In Progress")}}this.instances.data=[],this.instances.data=t.data.data;const e=this.instances.data;setTimeout((async()=>{for(const t of e){const e=t.ip.split(":")[0],s=t.ip.split(":")[1]||16127;let i=`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/flux/geolocation`;this.ipAccess&&(i=`http://${e}:${s}/flux/geolocation`);let a=!1;const o=await dc.get(i).catch((i=>{a=!0,console.log(`Error geting geolocation from ${e}:${s} : ${i}`),t.continent="N/A",t.country="N/A",t.region="N/A"}));!a&&"success"===o.data?.status&&o.data.data?.continent?(t.continent=o.data.data.continent,t.country=o.data.data.country,t.region=o.data.data.regionName):(t.continent="N/A",t.country="N/A",t.region="N/A")}}),5),this.instances.totalRows=this.instances.data.length,this.tableKey+=1,this.isBusy=!1}},async getAppOwner(){const t=await J.Z.getAppOwner(this.appName);console.log(t),"error"===t.data.status&&this.showToast("danger",t.data.data.message||t.data.data),this.selectedAppOwner=t.data.data},async stopApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Stopping ${t}...`;const e=await this.executeLocalCommand(`/apps/appstop/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1},async startApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Starting ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/appstart/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),3e3)},async restartApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Restarting ${t}...`;const e=await this.executeLocalCommand(`/apps/apprestart/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1},async pauseApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Pausing ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/apppause/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),2e3)},async unpauseApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Unpausing ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/appunpause/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),2e3)},redeployAppSoft(t){this.redeployApp(t,!1)},redeployAppHard(t){this.redeployApp(t,!0)},async redeployApp(t,e){const s=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.progressVisable=!0,this.operationTitle=`Redeploying ${t}...`;const i=localStorage.getItem("zelidauth"),a={headers:{zelidauth:i},onDownloadProgress(t){console.log(t.event.target.response),s.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},o=await this.executeLocalCommand(`/apps/redeploy/${t}/${e}`,null,a);this.progressVisable=!1,"error"===o.data.status?this.showToast("danger",o.data.data.message||o.data.data):(this.output=JSON.parse(`[${o.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data))},async removeApp(t){const e=this;this.output=[],this.progressVisable=!0,this.operationTitle=`Removing ${t}...`;const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},a=await this.executeLocalCommand(`/apps/appremove/${t}`,null,i);this.progressVisable=!1,"error"===a.data.status?this.showToast("danger",a.data.data.message||a.data.data):(this.output=JSON.parse(`[${a.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data),setTimeout((()=>{e.managedApplication=""}),5e3))},async getZelidAuthority(){const t=localStorage.getItem("zelidauth"),e=hc.parse(t),s=Date.now(),i=54e5,a=e?.loginPhrase?.substring(0,13)||0,o=+a+i,n=new Date(o).toLocaleString();console.log(`Current time: ${new Date(s).toLocaleString()}`),console.log(`Authorization will expire at: ${n}`),+a>0&&s{setTimeout(e,t)}))},async executeLocalCommand(t,e,s){try{const i=localStorage.getItem("zelidauth");let a=s;if(a||(a={headers:{zelidauth:i}}),this.getZelidAuthority(),!this.globalZelidAuthorized)throw new Error("Session expired. Please log into FluxOS again");const o=this.selectedIp.split(":")[0],n=this.selectedIp.split(":")[1]||16127;let r=null,l=`https://${o.replace(/\./g,"-")}-${n}.node.api.runonflux.io${t}`;return this.ipAccess&&(l=`http://${o}:${n}${t}`),r=e?await dc.post(l,e,a):await dc.get(l,a),r}catch(i){return this.showToast("danger",i.message||i),null}},async executeCommand(t,e,s,i){try{const a=localStorage.getItem("zelidauth"),o={headers:{zelidauth:a}};if(this.getZelidAuthority(),!this.globalZelidAuthorized)throw new Error("Session expired. Please log into FluxOS again");this.showToast("warning",s);let n=`/apps/${e}/${t}`;i&&(n+=`/${i}`),n+="/true";const r=await J.Z.justAPI().get(n,o);await this.delay(500),"success"===r.data.status?this.showToast("success",r.data.data.message||r.data.data):this.showToast("danger",r.data.data.message||r.data.data)}catch(a){this.showToast("danger",a.message||a)}},async stopAppGlobally(t){this.executeCommand(t,"appstop",`Stopping ${t} globally. This will take a while...`)},async startAppGlobally(t){this.executeCommand(t,"appstart",`Starting ${t} globally. This will take a while...`)},async restartAppGlobally(t){this.executeCommand(t,"apprestart",`Restarting ${t} globally. This will take a while...`)},async pauseAppGlobally(t){this.executeCommand(t,"apppause",`Pausing ${t} globally. This will take a while...`)},async unpauseAppGlobally(t){this.executeCommand(t,"appunpause",`Unpausing ${t} globally. This will take a while...`)},async redeployAppSoftGlobally(t){this.executeCommand(t,"redeploy",`Soft redeploying ${t} globally. This will take a while...`,"false")},async redeployAppHardGlobally(t){this.executeCommand(t,"redeploy",`Hard redeploying ${t} globally. This will take a while...`,"true")},async removeAppGlobally(t){this.executeCommand(t,"appremove",`Reinstalling ${t} globally. This will take a while...`,"true")},openApp(t,e,s){if(console.log(t,e,s),s&&e){const t=e,i=s,a=`http://${t}:${i}`;this.openSite(a)}else this.showToast("danger","Unable to open App :(, App does not have a port.")},getProperPort(t=this.appUpdateSpecification){if(t.port)return t.port;if(t.ports){const e="string"===typeof t.ports?JSON.parse(t.ports):t.ports;return e[0]}for(let e=0;e{console.log(e),"success"===e.status?t+=`${e.data.message||e.data}\r\n`:"Downloading"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:e.progressDetail,variant:"danger"}):"Verifying Checksum"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"warning"}):"Download complete"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"info"}):"Extracting"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:e.progressDetail,variant:"primary"}):"Pull complete"===e.status?this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"success"}:"error"===e.status?t+=`Error: ${JSON.stringify(e.data)}\r\n`:t+=`${e.status}\r\n`})),t},showToast(t,e,s="InfoIcon"){this.$toast({component:V.Z,props:{title:e,icon:s,variant:t}})},decodeAsciiResponse(t){return"string"===typeof t?t.replace(/[^\x20-\x7E\t\r\n\v\f]/g,""):""},getContinent(t){const e=this.ensureObject(t),s=e.find((t=>t.startsWith("a")));if(s){const t=this.continentsOptions.find((t=>t.value===s.slice(1)));return t?t.text:"All"}return"All"},getCountry(t){const e=this.ensureObject(t),s=e.find((t=>t.startsWith("b")));if(s){const t=this.countriesOptions.find((t=>t.value===s.slice(1)));return t?t.text:"All"}return"All"},continentChanged(){if(this.selectedCountry=null,this.selectedContinent){const t=this.continentsOptions.find((t=>t.value===this.selectedContinent));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}else this.maxInstances=this.appUpdateSpecificationv5template.maxInstances,this.showToast("info","No geolocation set you can define up to maximum of 100 instances and up to the maximum hardware specs available on Flux network to your app.");this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},countryChanged(){if(this.selectedCountry){const t=this.countriesOptions.find((t=>t.value===this.selectedCountry));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}else{const t=this.continentsOptions.find((t=>t.value===this.selectedContinent));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},getTimestamps(t){const e=[];return t.forEach((t=>{e.push(t.timestamp)})),e},chartOptions(t){const e={chart:{height:350,type:"area"},dataLabels:{enabled:!1},stroke:{curve:"smooth"},xaxis:{type:"timestamp",categories:t},tooltip:{x:{format:"dd/MM/yy HH:mm"}}};return e},decodeGeolocation(t){let e=!1;t.forEach((t=>{t.startsWith("b")&&(e=!0),t.startsWith("a")&&t.startsWith("ac")&&t.startsWith("a!c")&&(e=!0)}));let s=t;if(e){const e=t.find((t=>t.startsWith("a")&&t.startsWith("ac")&&t.startsWith("a!c"))),i=t.find((t=>t.startsWith("b")));let a=`ac${e.slice(1)}`;i&&(a+=`_${i.slice(1)}`),s=[a]}const i=s.filter((t=>t.startsWith("ac"))),a=s.filter((t=>t.startsWith("a!c")));for(let o=1;o{t.push({value:e.code,instances:e.available?100:0})})),gc.countries.forEach((e=>{t.push({value:`${e.continent}_${e.code}`,instances:e.available?100:0})}));const e=await dc.get("https://stats.runonflux.io/fluxinfo?projection=geo");if("success"===e.data.status){const s=e.data.data;s.length>5e3&&(t=[],s.forEach((e=>{if(e.geolocation&&e.geolocation.continentCode&&e.geolocation.regionName&&e.geolocation.countryCode){const s=e.geolocation.continentCode,i=`${s}_${e.geolocation.countryCode}`,a=`${i}_${e.geolocation.regionName}`,o=t.find((t=>t.value===s));o?o.instances+=1:t.push({value:s,instances:1});const n=t.find((t=>t.value===i));n?n.instances+=1:t.push({value:i,instances:1});const r=t.find((t=>t.value===a));r?r.instances+=1:t.push({value:a,instances:1})}})))}else this.showToast("info","Failed to get geolocation data from FluxStats, Using stored locations")}catch(e){console.log(e),this.showToast("info","Failed to get geolocation data from FluxStats, Using stored locations")}this.possibleLocations=t},continentsOptions(t){const e=[{value:t?"NONE":"ALL",text:t?"NONE":"ALL"}];return this.possibleLocations.filter((e=>e.instances>(t?-1:3))).forEach((t=>{if(!t.value.includes("_")){const s=gc.continents.find((e=>e.code===t.value));e.push({value:t.value,text:s?s.name:t.value})}})),e},countriesOptions(t,e){const s=[{value:"ALL",text:"ALL"}];return this.possibleLocations.filter((t=>t.instances>(e?-1:3))).forEach((e=>{if(!e.value.split("_")[2]&&e.value.startsWith(`${t}_`)){const t=gc.countries.find((t=>t.code===e.value.split("_")[1]));s.push({value:e.value.split("_")[1],text:t?t.name:e.value.split("_")[1]})}})),s},regionsOptions(t,e,s){const i=[{value:"ALL",text:"ALL"}];return this.possibleLocations.filter((t=>t.instances>(s?-1:3))).forEach((s=>{s.value.startsWith(`${t}_${e}_`)&&i.push({value:s.value.split("_")[2],text:s.value.split("_")[2]})})),i},generateGeolocations(){const t=[];for(let e=1;et.code===e))||{name:"ALL"};return`Continent: ${s.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),s=gc.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${s.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),s=e.split("_"),i=s[0],a=s[1],o=s[2],n=gc.continents.find((t=>t.code===i))||{name:"ALL"},r=gc.countries.find((t=>t.code===a))||{name:"ALL"};let l=`Allowed location: Continent: ${n.name}`;return a&&(l+=`, Country: ${r.name}`),o&&(l+=`, Region: ${o}`),l}if(t.startsWith("a!c")){const e=t.slice(3),s=e.split("_"),i=s[0],a=s[1],o=s[2],n=gc.continents.find((t=>t.code===i))||{name:"ALL"},r=gc.countries.find((t=>t.code===a))||{name:"ALL"};let l=`Forbidden location: Continent: ${n.name}`;return a&&(l+=`, Country: ${r.name}`),o&&(l+=`, Region: ${o}`),l}return"All locations allowed"},adjustMaxInstancesPossible(){const t=this.generateGeolocations(),e=t.filter((t=>t.startsWith("ac")));console.log(t);let s=0;e.forEach((t=>{const e=this.possibleLocations.find((e=>e.value===t.slice(2)));e&&(s+=e.instances),"ALL"===t&&(s+=100)})),e.length||(s+=100),console.log(s),s=s>3?s:3;const i=s>100?100:s;this.maxInstances=i,this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},constructAutomaticDomains(t,e,s=0){const i=JSON.parse(JSON.stringify(t)),a=e.toLowerCase();if(0===s){const t=[`${a}.app.runonflux.io`];for(let e=0;ee.ip===t));e>-1&&this.selectedEnterpriseNodes.splice(e,1)},async addFluxNode(t){try{const e=this.selectedEnterpriseNodes.find((e=>e.ip===t));if(console.log(t),!e){const e=this.enterpriseNodes.find((e=>e.ip===t));this.selectedEnterpriseNodes.push(e),console.log(this.selectedEnterpriseNodes);const s=this.enterprisePublicKeys.find((e=>e.nodeip===t));if(!s){const e=await this.fetchEnterpriseKey(t);if(e){const s={nodeip:t,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t));i||this.enterprisePublicKeys.push(s)}}}}catch(e){console.log(e)}},async autoSelectNodes(){const{instances:t}=this.appUpdateSpecification,e=+t+3,s=+t+Math.ceil(Math.max(7,.15*+t)),i=this.enterpriseNodes.filter((t=>!this.selectedEnterpriseNodes.includes(t))),a=[],o=i.filter((t=>t.enterprisePoints>0&&t.score>1e3));for(let n=0;nt.pubkey===o[n].pubkey)).length,i=a.filter((t=>t.pubkey===o[n].pubkey)).length;if(t+i=s)break}if(a.length{const e=this.selectedEnterpriseNodes.find((e=>e.ip===t.ip));if(!e){this.selectedEnterpriseNodes.push(t);const e=this.enterprisePublicKeys.find((e=>e.nodeip===t.ip));if(!e){const e=await this.fetchEnterpriseKey(t.ip);if(e){const s={nodeip:t.ip,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t.ip));i||this.enterprisePublicKeys.push(s)}}}}))},constructNodes(){if(this.appUpdateSpecification.nodes=[],this.selectedEnterpriseNodes.forEach((t=>{this.appUpdateSpecification.nodes.push(t.ip)})),this.appUpdateSpecification.nodes.length>this.maximumEnterpriseNodes)throw new Error("Maximum of 120 Enterprise Nodes allowed")},async getEnterpriseNodes(){const t=sessionStorage.getItem("flux_enterprise_nodes");t&&(this.enterpriseNodes=JSON.parse(t),this.entNodesSelectTable.totalRows=this.enterpriseNodes.length);try{const t=await J.Z.getEnterpriseNodes();"error"===t.data.status?this.showToast("danger",t.data.data.message||t.data.data):(this.enterpriseNodes=t.data.data,this.entNodesSelectTable.totalRows=this.enterpriseNodes.length,sessionStorage.setItem("flux_enterprise_nodes",JSON.stringify(this.enterpriseNodes)))}catch(e){console.log(e)}},async getDaemonBlockCount(){const t=await Q.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},async fetchEnterpriseKey(t){try{const e=t.split(":")[0],s=Number(t.split(":")[1]||16127);let i=`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/flux/pgp`;this.ipAccess&&(i=`http://${e}:${s}/flux/pgp`);const a=await dc.get(i);if("error"!==a.data.status){const t=a.data.data;return t}return this.showToast("danger",a.data.data.message||a.data.data),null}catch(e){return console.log(e),null}},async encryptMessage(t,e){try{const s=await Promise.all(e.map((t=>mc.readKey({armoredKey:t}))));console.log(e),console.log(t);const i=await mc.createMessage({text:t}),a=await mc.encrypt({message:i,encryptionKeys:s});return a}catch(s){return this.showToast("danger","Data encryption failed"),null}},async onSessionConnect(t){console.log(t);const e=await this.signClient.request({topic:t.topic,chainId:"eip155:1",request:{method:"personal_sign",params:[this.dataToSign,t.namespaces.eip155.accounts[0].split(":")[2]]}});console.log(e),this.signature=e},async initWalletConnect(){try{const t=await tt.ZP.init(rc);this.signClient=t;const e=t.session.getAll().length-1,s=t.session.getAll()[e];if(!s)throw new Error("WalletConnect session expired. Please log into FluxOS again");this.onSessionConnect(s)}catch(t){console.error(t),this.showToast("danger",t.message)}},async siwe(t,e){try{const s=`0x${oc.from(t,"utf8").toString("hex")}`,i=await pc.request({method:"personal_sign",params:[s,e]});console.log(i),this.signature=i}catch(s){console.error(s),this.showToast("danger",s.message)}},async initMetamask(){try{if(!pc)return void this.showToast("danger","Metamask not detected");let t;if(pc&&!pc.selectedAddress){const e=await pc.request({method:"eth_requestAccounts",params:[]});console.log(e),t=e[0]}else t=pc.selectedAddress;this.siwe(this.dataToSign,t)}catch(t){this.showToast("danger",t.message)}},async initSSP(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t=await window.ssp.request("sspwid_sign_message",{message:this.dataToSign});if("ERROR"===t.status)throw new Error(t.data||t.result);this.signature=t.signature}catch(t){this.showToast("danger",t.message)}},async initSSPpay(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t={message:this.updateHash,amount:(+this.appPricePerSpecs||0).toString(),address:this.deploymentAddress,chain:"flux"},e=await window.ssp.request("pay",t);if("ERROR"===e.status)throw new Error(e.data||e.result);this.showToast("success",`${e.data}: ${e.txid}`)}catch(t){this.showToast("danger",t.message)}},async initStripePay(t,e,s,i){try{this.fiatCheckoutURL="",this.checkoutLoading=!0;const o=localStorage.getItem("zelidauth"),n=hc.parse(o),r={zelid:n.zelid,signature:n.signature,loginPhrase:n.loginPhrase,details:{name:e,description:i,hash:t,price:s,productName:e,success_url:"https://home.runonflux.io/successcheckout",cancel_url:"https://home.runonflux.io",kpi:{origin:"FluxOS",marketplace:this.isMarketplaceApp,registration:!1}}},l=await dc.post(`${Y.M}/api/v1/stripe/checkout/create`,r);if("error"===l.data.status)return this.showToast("error","Failed to create stripe checkout"),void(this.checkoutLoading=!1);this.fiatCheckoutURL=l.data.data,this.checkoutLoading=!1;try{this.openSite(l.data.data)}catch(a){console.log(a),this.showToast("error","Failed to open Stripe checkout, pop-up blocked?")}}catch(a){console.log(a),this.showToast("error","Failed to create stripe checkout"),this.checkoutLoading=!1}},async initPaypalPay(t,e,s,i){try{this.fiatCheckoutURL="",this.checkoutLoading=!0;let o=null,n=await dc.get("https://api.ipify.org?format=json").catch((()=>{console.log("Error geting clientIp from api.ipify.org from")}));n&&n.data&&n.data.ip?o=n.data.ip:(n=await dc.get("https://ipinfo.io").catch((()=>{console.log("Error geting clientIp from ipinfo.io from")})),n&&n.data&&n.data.ip?o=n.data.ip:(n=await dc.get("https://api.ip2location.io").catch((()=>{console.log("Error geting clientIp from api.ip2location.io from")})),n&&n.data&&n.data.ip&&(o=n.data.ip)));const r=localStorage.getItem("zelidauth"),l=hc.parse(r),c={zelid:l.zelid,signature:l.signature,loginPhrase:l.loginPhrase,details:{clientIP:o,name:e,description:i,hash:t,price:s,productName:e,return_url:"home.runonflux.io/successcheckout",cancel_url:"home.runonflux.io",kpi:{origin:"FluxOS",marketplace:this.isMarketplaceApp,registration:!1}}},p=await dc.post(`${Y.M}/api/v1/paypal/checkout/create`,c);if("error"===p.data.status)return this.showToast("error","Failed to create PayPal checkout"),void(this.checkoutLoading=!1);this.fiatCheckoutURL=p.data.data,this.checkoutLoading=!1;try{this.openSite(p.data.data)}catch(a){console.log(a),this.showToast("error","Failed to open Paypal checkout, pop-up blocked?")}}catch(a){console.log(a),this.showToast("error","Failed to create PayPal checkout"),this.checkoutLoading=!1}},async getApplicationManagementAndStatus(){if(this.globalZelidAuthorized&&this.selectedIp){await this.appsGetListAllApps(),console.log(this.getAllAppsResponse);const t=this.getAllAppsResponse.data.find((t=>t.Names[0]===this.getAppDockerNameIdentifier()))||{},e={name:this.appName,state:t.State||"Unknown state",status:t.Status||"Unknown status"};this.appInfoObject.push(e),e.state=e.state.charAt(0).toUpperCase()+e.state.slice(1),e.status=e.status.charAt(0).toUpperCase()+e.status.slice(1);let s=`${e.name} - ${e.state} - ${e.status}`;if(this.appSpecification&&this.appSpecification.version>=4){s=`${this.appSpecification.name}:`;for(const t of this.appSpecification.compose){const e=this.getAllAppsResponse.data.find((e=>e.Names[0]===this.getAppDockerNameIdentifier(`${t.name}_${this.appSpecification.name}`)))||{},i={name:t.name,state:e.State||"Unknown state",status:e.Status||"Unknown status"};this.appInfoObject.push(i),i.state=i.state.charAt(0).toUpperCase()+i.state.slice(1),i.status=i.status.charAt(0).toUpperCase()+i.status.slice(1);const a=` ${i.name} - ${i.state} - ${i.status},`;s+=a}s=s.substring(0,s.length-1),s+=` - ${this.selectedIp}`}this.applicationManagementAndStatus=s}},selectedIpChanged(){this.getApplicationManagementAndStatus(),this.getInstalledApplicationSpecifics()},cleanData(){this.dataToSign="",this.timestamp="",this.signature="",this.updateHash="",this.output=[]}}},vc=bc;var yc=s(1001),xc=(0,yc.Z)(vc,i,a,!1,null,null,null);const wc=xc.exports},2272:(t,e,s)=>{"use strict";s.d(e,{Z:()=>f});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"flux-share-upload",style:t.cssProps},[e("b-row",[e("div",{staticClass:"flux-share-upload-drop text-center",attrs:{id:"dropTarget"},on:{drop:function(e){return e.preventDefault(),t.addFile.apply(null,arguments)},dragover:function(t){t.preventDefault()},click:t.selectFiles}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}}),e("p",[t._v("Drop files here or "),e("em",[t._v("click to upload")])]),e("p",{staticClass:"upload-footer"},[t._v(" (File size is limited to 5GB) ")])],1),e("input",{ref:"fileselector",staticClass:"flux-share-upload-input",attrs:{id:"file-selector",type:"file",multiple:""},on:{change:t.handleFiles}}),e("b-col",{staticClass:"upload-column"},t._l(t.files,(function(s){return e("div",{key:s.file.name,staticClass:"upload-item",staticStyle:{"margin-bottom":"3px"}},[t._v(" "+t._s(s.file.name)+" ("+t._s(t.addAndConvertFileSizes(s.file.size))+") "),e("span",{staticClass:"delete text-white",attrs:{"aria-hidden":"true"}},[s.uploading?t._e():e("v-icon",{style:{color:t.determineColor(s.file.name)},attrs:{name:"trash-alt",disabled:s.uploading},on:{mouseenter:function(e){return t.handleHover(s.file.name,!0)},mouseleave:function(e){return t.handleHover(s.file.name,!1)},focusin:function(e){return t.handleHover(s.file.name,!0)},focusout:function(e){return t.handleHover(s.file.name,!1)},click:function(e){return t.removeFile(s)}}})],1),e("b-progress",{class:s.uploading||s.uploaded?"":"hidden",attrs:{value:s.progress,max:"100",striped:"",height:"5px"}})],1)})),0)],1),e("b-row",[e("b-col",{staticClass:"text-center",attrs:{xs:"12"}},[e("b-button",{staticClass:"delete mt-1",attrs:{variant:"primary",disabled:!t.filesToUpload,size:"sm","aria-label":"Close"},on:{click:function(e){return t.startUpload()}}},[t._v(" Upload Files ")])],1)],1)],1)},a=[],o=(s(70560),s(26253)),n=s(50725),r=s(45752),l=s(15193),c=s(68934),p=s(34547);const d={components:{BRow:o.T,BCol:n.l,BProgress:r.D,BButton:l.T,ToastificationContent:p.Z},props:{uploadFolder:{type:String,required:!0},headers:{type:Object,required:!0}},data(){return{isHovered:!1,hoverStates:{},files:[],primaryColor:c.j.primary,secondaryColor:c.j.secondary}},computed:{cssProps(){return{"--primary-color":this.primaryColor,"--secondary-color":this.secondaryColor}},filesToUpload(){return this.files.length>0&&this.files.some((t=>!t.uploading&&!t.uploaded&&0===t.progress))}},methods:{addAndConvertFileSizes(t,e="auto",s=2){const i={B:1,KB:1024,MB:1048576,GB:1073741824},a=(t,e)=>t/i[e.toUpperCase()],o=(t,e)=>{const i="B"===e?t.toFixed(0):t.toFixed(s);return`${i} ${e}`};let n;if(Array.isArray(t)&&t.length>0)n=+t.reduce(((t,e)=>t+(e.file_size||0)),0);else{if("number"!==typeof+t)return console.error("Invalid sizes parameter"),"N/A";n=+t}if(isNaN(n))return console.error("Total size is not a valid number"),"N/A";if("auto"===e){let t,e=n;return Object.keys(i).forEach((s=>{const i=a(n,s);i>=1&&(void 0===e||i{const e=this.files.some((e=>e.file.name===t.name));console.log(e),e?this.showToast("warning",`'${t.name}' is already in the upload queue`):this.files.push({file:t,uploading:!1,uploaded:!1,progress:0})}))},removeFile(t){this.files=this.files.filter((e=>e.file.name!==t.file.name))},startUpload(){console.log(this.uploadFolder),console.log(this.files),this.files.forEach((t=>{console.log(t),t.uploaded||t.uploading||this.upload(t)}))},upload(t){const e=this;if("undefined"===typeof XMLHttpRequest)return;const s=new XMLHttpRequest,i=this.uploadFolder;s.upload&&(s.upload.onprogress=function(e){console.log(e),e.total>0&&(e.percent=e.loaded/e.total*100),t.progress=e.percent});const a=new FormData;a.append(t.file.name,t.file),t.uploading=!0,s.onerror=function(s){console.log(s),e.showToast("danger",`An error occurred while uploading '${t.file.name}' - ${s}`),e.removeFile(t)},s.onload=function(){if(s.status<200||s.status>=300)return console.log("error"),console.log(s.status),e.showToast("danger",`An error occurred while uploading '${t.file.name}' - Status code: ${s.status}`),void e.removeFile(t);t.uploaded=!0,t.uploading=!1,e.$emit("complete"),e.removeFile(t),e.showToast("success",`'${t.file.name}' has been uploaded`)},s.open("post",i,!0);const o=this.headers||{},n=Object.keys(o);for(let r=0;r{"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var s=0;s=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,n=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return n=t.done,t},e:function(t){l=!0,o=t},f:function(){try{n||null==s["return"]||s["return"]()}finally{if(l)throw o}}}}function r(t,e){if(t){if("string"===typeof t)return l(t,e);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var s=0,i=new Array(e);s0?40*t+55:0,n=e>0?40*e+55:0,r=s>0?40*s+55:0;i[a]=m([o,n,r])}function u(t){var e=t.toString(16);while(e.length<2)e="0"+e;return e}function m(t){var e,s=[],i=n(t);try{for(i.s();!(e=i.n()).done;){var a=e.value;s.push(u(a))}}catch(o){i.e(o)}finally{i.f()}return"#"+s.join("")}function f(t,e,s,i){var a;return"text"===e?a=_(s,i):"display"===e?a=b(t,s,i):"xterm256Foreground"===e?a=k(t,i.colors[s]):"xterm256Background"===e?a=A(t,i.colors[s]):"rgb"===e&&(a=g(t,s)),a}function g(t,e){e=e.substring(2).slice(0,-1);var s=+e.substr(0,2),i=e.substring(5).split(";"),a=i.map((function(t){return("0"+Number(t).toString(16)).substr(-2)})).join("");return C(t,(38===s?"color:#":"background-color:#")+a)}function b(t,e,s){e=parseInt(e,10);var i,a={"-1":function(){return"
"},0:function(){return t.length&&v(t)},1:function(){return S(t,"b")},3:function(){return S(t,"i")},4:function(){return S(t,"u")},8:function(){return C(t,"display:none")},9:function(){return S(t,"strike")},22:function(){return C(t,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return T(t,"i")},24:function(){return T(t,"u")},39:function(){return k(t,s.fg)},49:function(){return A(t,s.bg)},53:function(){return C(t,"text-decoration:overline")}};return a[e]?i=a[e]():4"})).join("")}function y(t,e){for(var s=[],i=t;i<=e;i++)s.push(i);return s}function x(t){return function(e){return(null===t||e.category!==t)&&"all"!==t}}function w(t){t=parseInt(t,10);var e=null;return 0===t?e="all":1===t?e="bold":2")}function C(t,e){return S(t,"span",e)}function k(t,e){return S(t,"span","color:"+e)}function A(t,e){return S(t,"span","background-color:"+e)}function T(t,e){var s;if(t.slice(-1)[0]===e&&(s=t.pop()),s)return""}function P(t,e,s){var i=!1,a=3;function o(){return""}function r(t,e){return s("xterm256Foreground",e),""}function l(t,e){return s("xterm256Background",e),""}function c(t){return e.newline?s("display",-1):s("text",t),""}function p(t,e){i=!0,0===e.trim().length&&(e="0"),e=e.trimRight(";").split(";");var a,o=n(e);try{for(o.s();!(a=o.n()).done;){var r=a.value;s("display",r)}}catch(l){o.e(l)}finally{o.f()}return""}function d(t){return s("text",t),""}function h(t){return s("rgb",t),""}var u=[{pattern:/^\x08+/,sub:o},{pattern:/^\x1b\[[012]?K/,sub:o},{pattern:/^\x1b\[\(B/,sub:o},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:h},{pattern:/^\x1b\[38;5;(\d+)m/,sub:r},{pattern:/^\x1b\[48;5;(\d+)m/,sub:l},{pattern:/^\n/,sub:c},{pattern:/^\r+\n/,sub:c},{pattern:/^\r/,sub:c},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:p},{pattern:/^\x1b\[\d?J/,sub:o},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:o},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:o},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:d}];function m(e,s){s>a&&i||(i=!1,t=t.replace(e.pattern,e.sub))}var f=[],g=t,b=g.length;t:while(b>0){for(var v=0,y=0,x=u.length;y65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};function n(t){return t>=55296&&t<=57343||t>1114111?"�":(t in a.default&&(t=a.default[t]),o(t))}e["default"]=n},65746:function(t,e,s){"use strict";var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=void 0;var a=i(s(70663)),o=p(a.default),n=d(o);e.encodeXML=y(o);var r=i(s(60291)),l=p(r.default),c=d(l);function p(t){return Object.keys(t).sort().reduce((function(e,s){return e[t[s]]="&"+s+";",e}),{})}function d(t){for(var e=[],s=[],i=0,a=Object.keys(t);i1?u(t):t.charCodeAt(0)).toString(16).toUpperCase()+";"}function f(t,e){return function(s){return s.replace(e,(function(e){return t[e]})).replace(h,m)}}var g=new RegExp(n.source+"|"+h.source,"g");function b(t){return t.replace(g,m)}function v(t){return t.replace(n,m)}function y(t){return function(e){return e.replace(g,(function(e){return t[e]||m(e)}))}}e.escape=b,e.escapeUTF8=v},68320:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXMLStrict=e.decodeHTML5Strict=e.decodeHTML4Strict=e.decodeHTML5=e.decodeHTML4=e.decodeHTMLStrict=e.decodeHTML=e.decodeXML=e.encodeHTML5=e.encodeHTML4=e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=e.encode=e.decodeStrict=e.decode=void 0;var i=s(89995),a=s(65746);function o(t,e){return(!e||e<=0?i.decodeXML:i.decodeHTML)(t)}function n(t,e){return(!e||e<=0?i.decodeXML:i.decodeHTMLStrict)(t)}function r(t,e){return(!e||e<=0?a.encodeXML:a.encodeHTML)(t)}e.decode=o,e.decodeStrict=n,e.encode=r;var l=s(65746);Object.defineProperty(e,"encodeXML",{enumerable:!0,get:function(){return l.encodeXML}}),Object.defineProperty(e,"encodeHTML",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(e,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return l.encodeNonAsciiHTML}}),Object.defineProperty(e,"escape",{enumerable:!0,get:function(){return l.escape}}),Object.defineProperty(e,"escapeUTF8",{enumerable:!0,get:function(){return l.escapeUTF8}}),Object.defineProperty(e,"encodeHTML4",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(e,"encodeHTML5",{enumerable:!0,get:function(){return l.encodeHTML}});var c=s(89995);Object.defineProperty(e,"decodeXML",{enumerable:!0,get:function(){return c.decodeXML}}),Object.defineProperty(e,"decodeHTML",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTMLStrict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML4",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTML5",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTML4Strict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML5Strict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeXMLStrict",{enumerable:!0,get:function(){return c.decodeXML}})},56761:t=>{(function(){"use strict";t.exports=function(t,e,s){for(var i=e||/\s/g,a=!1,o=!1,n=[],r=[],l=t.split(""),c=0;c0?(r.push(n.join("")),n=[]):e&&r.push(p):(!0===s&&n.push(p),o=!o):(!0===s&&n.push(p),a=!a)}return n.length>0?r.push(n.join("")):e&&r.push(""),r}})()},12617:t=>{!function(e,s){t.exports=s()}(self,(()=>(()=>{"use strict";var t={};return(()=>{var e=t;Object.defineProperty(e,"__esModule",{value:!0}),e.FitAddon=void 0,e.FitAddon=class{activate(t){this._terminal=t}dispose(){}fit(){const t=this.proposeDimensions();if(!t||!this._terminal||isNaN(t.cols)||isNaN(t.rows))return;const e=this._terminal._core;this._terminal.rows===t.rows&&this._terminal.cols===t.cols||(e._renderService.clear(),this._terminal.resize(t.cols,t.rows))}proposeDimensions(){if(!this._terminal)return;if(!this._terminal.element||!this._terminal.element.parentElement)return;const t=this._terminal._core,e=t._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;const s=0===this._terminal.options.scrollback?0:t.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),a=parseInt(i.getPropertyValue("height")),o=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),r=a-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),l=o-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-s;return{cols:Math.max(2,Math.floor(l/e.css.cell.width)),rows:Math.max(1,Math.floor(r/e.css.cell.height))}}}})(),t})()))},12286:function(t){!function(e,s){t.exports=s()}(0,(()=>(()=>{"use strict";var t={930:(t,e,s)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ColorContrastCache=void 0;const i=s(485);e.ColorContrastCache=class{constructor(){this._color=new i.TwoKeyMap,this._css=new i.TwoKeyMap}setCss(t,e,s){this._css.set(t,e,s)}getCss(t,e){return this._css.get(t,e)}setColor(t,e,s){this._color.set(t,e,s)}getColor(t,e){return this._color.get(t,e)}clear(){this._color.clear(),this._css.clear()}}},997:function(t,e,s){var i=this&&this.__decorate||function(t,e,s,i){var a,o=arguments.length,n=o<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,s,i);else for(var r=t.length-1;r>=0;r--)(a=t[r])&&(n=(o<3?a(n):o>3?a(e,s,n):a(e,s))||n);return o>3&&n&&Object.defineProperty(e,s,n),n},a=this&&this.__param||function(t,e){return function(s,i){e(s,i,t)}};Object.defineProperty(e,"__esModule",{value:!0}),e.ThemeService=e.DEFAULT_ANSI_COLORS=void 0;const o=s(930),n=s(160),r=s(345),l=s(859),c=s(97),p=n.css.toColor("#ffffff"),d=n.css.toColor("#000000"),h=n.css.toColor("#ffffff"),u=n.css.toColor("#000000"),m={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};e.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const t=[n.css.toColor("#2e3436"),n.css.toColor("#cc0000"),n.css.toColor("#4e9a06"),n.css.toColor("#c4a000"),n.css.toColor("#3465a4"),n.css.toColor("#75507b"),n.css.toColor("#06989a"),n.css.toColor("#d3d7cf"),n.css.toColor("#555753"),n.css.toColor("#ef2929"),n.css.toColor("#8ae234"),n.css.toColor("#fce94f"),n.css.toColor("#729fcf"),n.css.toColor("#ad7fa8"),n.css.toColor("#34e2e2"),n.css.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let s=0;s<216;s++){const i=e[s/36%6|0],a=e[s/6%6|0],o=e[s%6];t.push({css:n.channels.toCss(i,a,o),rgba:n.channels.toRgba(i,a,o)})}for(let s=0;s<24;s++){const e=8+10*s;t.push({css:n.channels.toCss(e,e,e),rgba:n.channels.toRgba(e,e,e)})}return t})());let f=e.ThemeService=class extends l.Disposable{get colors(){return this._colors}constructor(t){super(),this._optionsService=t,this._contrastCache=new o.ColorContrastCache,this._halfContrastCache=new o.ColorContrastCache,this._onChangeColors=this.register(new r.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:p,background:d,cursor:h,cursorAccent:u,selectionForeground:void 0,selectionBackgroundTransparent:m,selectionBackgroundOpaque:n.color.blend(d,m),selectionInactiveBackgroundTransparent:m,selectionInactiveBackgroundOpaque:n.color.blend(d,m),ansi:e.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",(()=>this._contrastCache.clear()))),this.register(this._optionsService.onSpecificOptionChange("theme",(()=>this._setTheme(this._optionsService.rawOptions.theme))))}_setTheme(t={}){const s=this._colors;if(s.foreground=g(t.foreground,p),s.background=g(t.background,d),s.cursor=g(t.cursor,h),s.cursorAccent=g(t.cursorAccent,u),s.selectionBackgroundTransparent=g(t.selectionBackground,m),s.selectionBackgroundOpaque=n.color.blend(s.background,s.selectionBackgroundTransparent),s.selectionInactiveBackgroundTransparent=g(t.selectionInactiveBackground,s.selectionBackgroundTransparent),s.selectionInactiveBackgroundOpaque=n.color.blend(s.background,s.selectionInactiveBackgroundTransparent),s.selectionForeground=t.selectionForeground?g(t.selectionForeground,n.NULL_COLOR):void 0,s.selectionForeground===n.NULL_COLOR&&(s.selectionForeground=void 0),n.color.isOpaque(s.selectionBackgroundTransparent)){const t=.3;s.selectionBackgroundTransparent=n.color.opacity(s.selectionBackgroundTransparent,t)}if(n.color.isOpaque(s.selectionInactiveBackgroundTransparent)){const t=.3;s.selectionInactiveBackgroundTransparent=n.color.opacity(s.selectionInactiveBackgroundTransparent,t)}if(s.ansi=e.DEFAULT_ANSI_COLORS.slice(),s.ansi[0]=g(t.black,e.DEFAULT_ANSI_COLORS[0]),s.ansi[1]=g(t.red,e.DEFAULT_ANSI_COLORS[1]),s.ansi[2]=g(t.green,e.DEFAULT_ANSI_COLORS[2]),s.ansi[3]=g(t.yellow,e.DEFAULT_ANSI_COLORS[3]),s.ansi[4]=g(t.blue,e.DEFAULT_ANSI_COLORS[4]),s.ansi[5]=g(t.magenta,e.DEFAULT_ANSI_COLORS[5]),s.ansi[6]=g(t.cyan,e.DEFAULT_ANSI_COLORS[6]),s.ansi[7]=g(t.white,e.DEFAULT_ANSI_COLORS[7]),s.ansi[8]=g(t.brightBlack,e.DEFAULT_ANSI_COLORS[8]),s.ansi[9]=g(t.brightRed,e.DEFAULT_ANSI_COLORS[9]),s.ansi[10]=g(t.brightGreen,e.DEFAULT_ANSI_COLORS[10]),s.ansi[11]=g(t.brightYellow,e.DEFAULT_ANSI_COLORS[11]),s.ansi[12]=g(t.brightBlue,e.DEFAULT_ANSI_COLORS[12]),s.ansi[13]=g(t.brightMagenta,e.DEFAULT_ANSI_COLORS[13]),s.ansi[14]=g(t.brightCyan,e.DEFAULT_ANSI_COLORS[14]),s.ansi[15]=g(t.brightWhite,e.DEFAULT_ANSI_COLORS[15]),t.extendedAnsi){const i=Math.min(s.ansi.length-16,t.extendedAnsi.length);for(let a=0;a{Object.defineProperty(e,"__esModule",{value:!0}),e.contrastRatio=e.toPaddedHex=e.rgba=e.rgb=e.css=e.color=e.channels=e.NULL_COLOR=void 0;const i=s(399);let a=0,o=0,n=0,r=0;var l,c,p,d,h;function u(t){const e=t.toString(16);return e.length<2?"0"+e:e}function m(t,e){return t>>0}}(l||(e.channels=l={})),function(t){function e(t,e){return r=Math.round(255*e),[a,o,n]=h.toChannels(t.rgba),{css:l.toCss(a,o,n,r),rgba:l.toRgba(a,o,n,r)}}t.blend=function(t,e){if(r=(255&e.rgba)/255,1===r)return{css:e.css,rgba:e.rgba};const s=e.rgba>>24&255,i=e.rgba>>16&255,c=e.rgba>>8&255,p=t.rgba>>24&255,d=t.rgba>>16&255,h=t.rgba>>8&255;return a=p+Math.round((s-p)*r),o=d+Math.round((i-d)*r),n=h+Math.round((c-h)*r),{css:l.toCss(a,o,n),rgba:l.toRgba(a,o,n)}},t.isOpaque=function(t){return 255==(255&t.rgba)},t.ensureContrastRatio=function(t,e,s){const i=h.ensureContrastRatio(t.rgba,e.rgba,s);if(i)return h.toColor(i>>24&255,i>>16&255,i>>8&255)},t.opaque=function(t){const e=(255|t.rgba)>>>0;return[a,o,n]=h.toChannels(e),{css:l.toCss(a,o,n),rgba:e}},t.opacity=e,t.multiplyOpacity=function(t,s){return r=255&t.rgba,e(t,r*s/255)},t.toColorRGB=function(t){return[t.rgba>>24&255,t.rgba>>16&255,t.rgba>>8&255]}}(c||(e.color=c={})),function(t){let e,s;if(!i.isNode){const t=document.createElement("canvas");t.width=1,t.height=1;const i=t.getContext("2d",{willReadFrequently:!0});i&&(e=i,e.globalCompositeOperation="copy",s=e.createLinearGradient(0,0,1,1))}t.toColor=function(t){if(t.match(/#[\da-f]{3,8}/i))switch(t.length){case 4:return a=parseInt(t.slice(1,2).repeat(2),16),o=parseInt(t.slice(2,3).repeat(2),16),n=parseInt(t.slice(3,4).repeat(2),16),h.toColor(a,o,n);case 5:return a=parseInt(t.slice(1,2).repeat(2),16),o=parseInt(t.slice(2,3).repeat(2),16),n=parseInt(t.slice(3,4).repeat(2),16),r=parseInt(t.slice(4,5).repeat(2),16),h.toColor(a,o,n,r);case 7:return{css:t,rgba:(parseInt(t.slice(1),16)<<8|255)>>>0};case 9:return{css:t,rgba:parseInt(t.slice(1),16)>>>0}}const i=t.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(i)return a=parseInt(i[1]),o=parseInt(i[2]),n=parseInt(i[3]),r=Math.round(255*(void 0===i[5]?1:parseFloat(i[5]))),h.toColor(a,o,n,r);if(!e||!s)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=s,e.fillStyle=t,"string"!=typeof e.fillStyle)throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[a,o,n,r]=e.getImageData(0,0,1,1).data,255!==r)throw new Error("css.toColor: Unsupported css format");return{rgba:l.toRgba(a,o,n,r),css:t}}}(p||(e.css=p={})),function(t){function e(t,e,s){const i=t/255,a=e/255,o=s/255;return.2126*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))+.7152*(a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))+.0722*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))}t.relativeLuminance=function(t){return e(t>>16&255,t>>8&255,255&t)},t.relativeLuminance2=e}(d||(e.rgb=d={})),function(t){function e(t,e,s){const i=t>>24&255,a=t>>16&255,o=t>>8&255;let n=e>>24&255,r=e>>16&255,l=e>>8&255,c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));for(;c0||r>0||l>0);)n-=Math.max(0,Math.ceil(.1*n)),r-=Math.max(0,Math.ceil(.1*r)),l-=Math.max(0,Math.ceil(.1*l)),c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));return(n<<24|r<<16|l<<8|255)>>>0}function s(t,e,s){const i=t>>24&255,a=t>>16&255,o=t>>8&255;let n=e>>24&255,r=e>>16&255,l=e>>8&255,c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));for(;c>>0}t.ensureContrastRatio=function(t,i,a){const o=d.relativeLuminance(t>>8),n=d.relativeLuminance(i>>8);if(m(o,n)>8));if(rm(o,d.relativeLuminance(e>>8))?n:e}return n}const r=s(t,i,a),l=m(o,d.relativeLuminance(r>>8));if(lm(o,d.relativeLuminance(s>>8))?r:s}return r}},t.reduceLuminance=e,t.increaseLuminance=s,t.toChannels=function(t){return[t>>24&255,t>>16&255,t>>8&255,255&t]},t.toColor=function(t,e,s,i){return{css:l.toCss(t,e,s,i),rgba:l.toRgba(t,e,s,i)}}}(h||(e.rgba=h={})),e.toPaddedHex=u,e.contrastRatio=m},345:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.forwardEvent=e.EventEmitter=void 0,e.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=t=>(this._listeners.push(t),{dispose:()=>{if(!this._disposed)for(let e=0;ee.fire(t)))}},859:(t,e)=>{function s(t){for(const e of t)e.dispose();t.length=0}Object.defineProperty(e,"__esModule",{value:!0}),e.getDisposeArrayDisposable=e.disposeArray=e.toDisposable=e.MutableDisposable=e.Disposable=void 0,e.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const t of this._disposables)t.dispose();this._disposables.length=0}register(t){return this._disposables.push(t),t}unregister(t){const e=this._disposables.indexOf(t);-1!==e&&this._disposables.splice(e,1)}},e.MutableDisposable=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(t){var e;this._isDisposed||t===this._value||(null===(e=this._value)||void 0===e||e.dispose(),this._value=t)}clear(){this.value=void 0}dispose(){var t;this._isDisposed=!0,null===(t=this._value)||void 0===t||t.dispose(),this._value=void 0}},e.toDisposable=function(t){return{dispose:t}},e.disposeArray=s,e.getDisposeArrayDisposable=function(t){return{dispose:()=>s(t)}}},485:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FourKeyMap=e.TwoKeyMap=void 0;class s{constructor(){this._data={}}set(t,e,s){this._data[t]||(this._data[t]={}),this._data[t][e]=s}get(t,e){return this._data[t]?this._data[t][e]:void 0}clear(){this._data={}}}e.TwoKeyMap=s,e.FourKeyMap=class{constructor(){this._data=new s}set(t,e,i,a,o){this._data.get(t,e)||this._data.set(t,e,new s),this._data.get(t,e).set(i,a,o)}get(t,e,s,i){var a;return null===(a=this._data.get(t,e))||void 0===a?void 0:a.get(s,i)}clear(){this._data.clear()}}},399:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isChromeOS=e.isLinux=e.isWindows=e.isIphone=e.isIpad=e.isMac=e.getSafariVersion=e.isSafari=e.isLegacyEdge=e.isFirefox=e.isNode=void 0,e.isNode="undefined"==typeof navigator;const s=e.isNode?"node":navigator.userAgent,i=e.isNode?"node":navigator.platform;e.isFirefox=s.includes("Firefox"),e.isLegacyEdge=s.includes("Edge"),e.isSafari=/^((?!chrome|android).)*safari/i.test(s),e.getSafariVersion=function(){if(!e.isSafari)return 0;const t=s.match(/Version\/(\d+)/);return null===t||t.length<2?0:parseInt(t[1])},e.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(i),e.isIpad="iPad"===i,e.isIphone="iPhone"===i,e.isWindows=["Windows","Win16","Win32","WinCE"].includes(i),e.isLinux=i.indexOf("Linux")>=0,e.isChromeOS=/\bCrOS\b/.test(s)},726:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createDecorator=e.getServiceDependencies=e.serviceRegistry=void 0;const s="di$target",i="di$dependencies";e.serviceRegistry=new Map,e.getServiceDependencies=function(t){return t[i]||[]},e.createDecorator=function(t){if(e.serviceRegistry.has(t))return e.serviceRegistry.get(t);const a=function(t,e,o){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");!function(t,e,a){e[s]===e?e[i].push({id:t,index:a}):(e[i]=[{id:t,index:a}],e[s]=e)}(a,t,o)};return a.toString=()=>t,e.serviceRegistry.set(t,a),a}},97:(t,e,s)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.IDecorationService=e.IUnicodeService=e.IOscLinkService=e.IOptionsService=e.ILogService=e.LogLevelEnum=e.IInstantiationService=e.ICharsetService=e.ICoreService=e.ICoreMouseService=e.IBufferService=void 0;const i=s(726);var a;e.IBufferService=(0,i.createDecorator)("BufferService"),e.ICoreMouseService=(0,i.createDecorator)("CoreMouseService"),e.ICoreService=(0,i.createDecorator)("CoreService"),e.ICharsetService=(0,i.createDecorator)("CharsetService"),e.IInstantiationService=(0,i.createDecorator)("InstantiationService"),function(t){t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.OFF=5]="OFF"}(a||(e.LogLevelEnum=a={})),e.ILogService=(0,i.createDecorator)("LogService"),e.IOptionsService=(0,i.createDecorator)("OptionsService"),e.IOscLinkService=(0,i.createDecorator)("OscLinkService"),e.IUnicodeService=(0,i.createDecorator)("UnicodeService"),e.IDecorationService=(0,i.createDecorator)("DecorationService")}},e={};function s(i){var a=e[i];if(void 0!==a)return a.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,s),o.exports}var i={};return(()=>{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.HTMLSerializeHandler=t.SerializeAddon=void 0;const e=s(997);function a(t,e,s){return Math.max(e,Math.min(t,s))}class o{constructor(t){this._buffer=t}serialize(t){const e=this._buffer.getNullCell(),s=this._buffer.getNullCell();let i=e;const a=t.start.x,o=t.end.x,n=t.start.y,r=t.end.y;this._beforeSerialize(o-a,a,o);for(let l=a;l<=o;l++){const a=this._buffer.getLine(l);if(a){const o=l!==t.start.x?0:n,c=l!==t.end.x?a.length:r;for(let t=o;t0&&!r(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`[${this._nullCellCount}X`);let i="";if(!e){t-this._firstRow>=this._terminal.rows&&(null===(s=this._buffer.getLine(this._cursorStyleRow))||void 0===s||s.getCell(this._cursorStyleCol,this._backgroundCell));const e=this._buffer.getLine(t),a=this._buffer.getLine(t+1);if(a.isWrapped){i="";const s=e.getCell(e.length-1,this._thisRowLastChar),o=e.getCell(e.length-2,this._thisRowLastSecondChar),n=a.getCell(0,this._nextRowFirstChar),l=n.getWidth()>1;let c=!1;(n.getChars()&&l?this._nullCellCount<=1:this._nullCellCount<=0)&&((s.getChars()||0===s.getWidth())&&r(s,n)&&(c=!0),l&&(o.getChars()||0===o.getWidth())&&r(s,n)&&r(o,n)&&(c=!0)),c||(i="-".repeat(this._nullCellCount+1),i+="",this._nullCellCount>0&&(i+="",i+=`[${e.length-this._nullCellCount}C`,i+=`[${this._nullCellCount}X`,i+=`[${e.length-this._nullCellCount}D`,i+=""),this._lastContentCursorRow=t+1,this._lastContentCursorCol=0,this._lastCursorRow=t+1,this._lastCursorCol=0)}else i="\r\n",this._lastCursorRow=t+1,this._lastCursorCol=0}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=i,this._currentRow="",this._nullCellCount=0}_diffStyle(t,e){const s=[],i=!n(t,e),a=!r(t,e),o=!l(t,e);if(i||a||o)if(t.isAttributeDefault())e.isAttributeDefault()||s.push(0);else{if(i){const e=t.getFgColor();t.isFgRGB()?s.push(38,2,e>>>16&255,e>>>8&255,255&e):t.isFgPalette()?e>=16?s.push(38,5,e):s.push(8&e?90+(7&e):30+(7&e)):s.push(39)}if(a){const e=t.getBgColor();t.isBgRGB()?s.push(48,2,e>>>16&255,e>>>8&255,255&e):t.isBgPalette()?e>=16?s.push(48,5,e):s.push(8&e?100+(7&e):40+(7&e)):s.push(49)}o&&(t.isInverse()!==e.isInverse()&&s.push(t.isInverse()?7:27),t.isBold()!==e.isBold()&&s.push(t.isBold()?1:22),t.isUnderline()!==e.isUnderline()&&s.push(t.isUnderline()?4:24),t.isOverline()!==e.isOverline()&&s.push(t.isOverline()?53:55),t.isBlink()!==e.isBlink()&&s.push(t.isBlink()?5:25),t.isInvisible()!==e.isInvisible()&&s.push(t.isInvisible()?8:28),t.isItalic()!==e.isItalic()&&s.push(t.isItalic()?3:23),t.isDim()!==e.isDim()&&s.push(t.isDim()?2:22),t.isStrikethrough()!==e.isStrikethrough()&&s.push(t.isStrikethrough()?9:29))}return s}_nextCell(t,e,s,i){if(0===t.getWidth())return;const a=""===t.getChars(),o=this._diffStyle(t,this._cursorStyle);if(a?!r(this._cursorStyle,t):o.length>0){this._nullCellCount>0&&(r(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`[${this._nullCellCount}X`),this._currentRow+=`[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=s,this._lastContentCursorCol=this._lastCursorCol=i,this._currentRow+=`[${o.join(";")}m`;const t=this._buffer.getLine(s);void 0!==t&&(t.getCell(i,this._cursorStyle),this._cursorStyleRow=s,this._cursorStyleCol=i)}a?this._nullCellCount+=t.getWidth():(this._nullCellCount>0&&(r(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`[${this._nullCellCount}X`),this._currentRow+=`[${this._nullCellCount}C`,this._nullCellCount=0),this._currentRow+=t.getChars(),this._lastContentCursorRow=this._lastCursorRow=s,this._lastContentCursorCol=this._lastCursorCol=i+t.getWidth())}_serializeString(){let t=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(t=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let e="";for(let r=0;r0?e+=`[${a}B`:a<0&&(e+=`[${-a}A`),(t=>{t>0?e+=`[${t}C`:t<0&&(e+=`[${-t}D`)})(i-this._lastCursorCol));const o=this._terminal._core._inputHandler._curAttrData,n=this._diffStyle(o,this._cursorStyle);return n.length>0&&(e+=`[${n.join(";")}m`),e}}t.SerializeAddon=class{activate(t){this._terminal=t}_serializeBuffer(t,e,s){const i=e.length,o=new c(e,t),n=void 0===s?i:a(s+t.rows,0,i);return o.serialize({start:{x:i-n,y:0},end:{x:i-1,y:t.cols}})}_serializeBufferAsHTML(t,e){var s,i;const o=t.buffer.active,n=new p(o,t,e);if(null===(s=e.onlySelection)||void 0===s||!s){const s=o.length,i=e.scrollback,r=void 0===i?s:a(i+t.rows,0,s);return n.serialize({start:{x:s-r,y:0},end:{x:s-1,y:t.cols}})}const r=null===(i=this._terminal)||void 0===i?void 0:i.getSelectionPosition();return void 0!==r?n.serialize({start:{x:r.start.y,y:r.start.x},end:{x:r.end.y,y:r.end.x}}):""}_serializeModes(t){let e="";const s=t.modes;if(s.applicationCursorKeysMode&&(e+="[?1h"),s.applicationKeypadMode&&(e+="[?66h"),s.bracketedPasteMode&&(e+="[?2004h"),s.insertMode&&(e+=""),s.originMode&&(e+="[?6h"),s.reverseWraparoundMode&&(e+="[?45h"),s.sendFocusMode&&(e+="[?1004h"),!1===s.wraparoundMode&&(e+="[?7l"),"none"!==s.mouseTrackingMode)switch(s.mouseTrackingMode){case"x10":e+="[?9h";break;case"vt200":e+="[?1000h";break;case"drag":e+="[?1002h";break;case"any":e+="[?1003h"}return e}serialize(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=this._serializeBuffer(this._terminal,this._terminal.buffer.normal,null==t?void 0:t.scrollback);return(null==t?void 0:t.excludeAltBuffer)||"alternate"!==this._terminal.buffer.active.type||(e+=`[?1049h${this._serializeBuffer(this._terminal,this._terminal.buffer.alternate,void 0)}`),(null==t?void 0:t.excludeModes)||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,t||{})}dispose(){}};class p extends o{constructor(t,s,i){super(t),this._terminal=s,this._options=i,this._currentRow="",this._htmlContent="",s._core._themeService?this._ansiColors=s._core._themeService.colors.ansi:this._ansiColors=e.DEFAULT_ANSI_COLORS}_padStart(t,e,s){return e>>=0,s=null!=s?s:" ",t.length>e?t:((e-=t.length)>s.length&&(s+=s.repeat(e/s.length)),s.slice(0,e)+t)}_beforeSerialize(t,e,s){var i,a,o,n,r;this._htmlContent+="\x3c!--StartFragment--\x3e
";let l="#000000",c="#ffffff";null!==(i=this._options.includeGlobalBackground)&&void 0!==i&&i&&(l=null!==(o=null===(a=this._terminal.options.theme)||void 0===a?void 0:a.foreground)&&void 0!==o?o:"#ffffff",c=null!==(r=null===(n=this._terminal.options.theme)||void 0===n?void 0:n.background)&&void 0!==r?r:"#000000");const p=[];p.push("color: "+l+";"),p.push("background-color: "+c+";"),p.push("font-family: "+this._terminal.options.fontFamily+";"),p.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="
"}_afterSerialize(){this._htmlContent+="
",this._htmlContent+="
\x3c!--EndFragment--\x3e"}_rowEnd(t,e){this._htmlContent+="
"+this._currentRow+"
",this._currentRow=""}_getHexColor(t,e){const s=e?t.getFgColor():t.getBgColor();return(e?t.isFgRGB():t.isBgRGB())?[s>>16&255,s>>8&255,255&s].map((t=>this._padStart(t.toString(16),2,"0"))).join(""):(e?t.isFgPalette():t.isBgPalette())?this._ansiColors[s].css:void 0}_diffStyle(t,e){const s=[],i=!n(t,e),a=!r(t,e),o=!l(t,e);if(i||a||o){const e=this._getHexColor(t,!0);e&&s.push("color: "+e+";");const i=this._getHexColor(t,!1);return i&&s.push("background-color: "+i+";"),t.isInverse()&&s.push("color: #000000; background-color: #BFBFBF;"),t.isBold()&&s.push("font-weight: bold;"),t.isUnderline()&&t.isOverline()?s.push("text-decoration: overline underline;"):t.isUnderline()?s.push("text-decoration: underline;"):t.isOverline()&&s.push("text-decoration: overline;"),t.isBlink()&&s.push("text-decoration: blink;"),t.isInvisible()&&s.push("visibility: hidden;"),t.isItalic()&&s.push("font-style: italic;"),t.isDim()&&s.push("opacity: 0.5;"),t.isStrikethrough()&&s.push("text-decoration: line-through;"),s}}_nextCell(t,e,s,i){if(0===t.getWidth())return;const a=""===t.getChars(),o=this._diffStyle(t,e);o&&(this._currentRow+=0===o.length?"":""),this._currentRow+=a?" ":t.getChars()}_serializeString(){return this._htmlContent}}t.HTMLSerializeHandler=p})(),i})()))},32993:function(t){!function(e,s){t.exports=s()}(0,(()=>(()=>{"use strict";var t={433:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeV11=void 0;const s=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],i=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],a=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],o=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]];let n;function r(t,e){let s,i=0,a=e.length-1;if(te[a][1])return!1;for(;a>=i;)if(s=i+a>>1,t>e[s][1])i=s+1;else{if(!(t{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.Unicode11Addon=void 0;const e=s(433);t.Unicode11Addon=class{activate(t){t.unicode.register(new e.UnicodeV11)}dispose(){}}})(),i})()))},67511:t=>{!function(e,s){t.exports=s()}(self,(()=>(()=>{"use strict";var t={6:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LinkComputer=e.WebLinkProvider=void 0,e.WebLinkProvider=class{constructor(t,e,s,i={}){this._terminal=t,this._regex=e,this._handler=s,this._options=i}provideLinks(t,e){const i=s.computeLink(t,this._regex,this._terminal,this._handler);e(this._addCallbacks(i))}_addCallbacks(t){return t.map((t=>(t.leave=this._options.leave,t.hover=(e,s)=>{if(this._options.hover){const{range:i}=t;this._options.hover(e,s,i)}},t)))}};class s{static computeLink(t,e,i,a){const o=new RegExp(e.source,(e.flags||"")+"g"),[n,r]=s._getWindowedLineStrings(t-1,i),l=n.join("");let c;const p=[];for(;c=o.exec(l);){const e=c[0];try{const t=new URL(e),s=decodeURI(t.toString());if(e!==s&&e+"/"!==s)continue}catch(t){continue}const[o,n]=s._mapStrIdx(i,r,0,c.index),[l,d]=s._mapStrIdx(i,o,n,e.length);if(-1===o||-1===n||-1===l||-1===d)continue;const h={start:{x:n+1,y:o+1},end:{x:d,y:l+1}};p.push({range:h,text:e,activate:a})}return p}static _getWindowedLineStrings(t,e){let s,i=t,a=t,o=0,n="";const r=[];if(s=e.buffer.active.getLine(t)){const t=s.translateToString(!0);if(s.isWrapped&&" "!==t[0]){for(o=0;(s=e.buffer.active.getLine(--i))&&o<2048&&(n=s.translateToString(!0),o+=n.length,r.push(n),s.isWrapped&&-1===n.indexOf(" ")););r.reverse()}for(r.push(t),o=0;(s=e.buffer.active.getLine(++a))&&s.isWrapped&&o<2048&&(n=s.translateToString(!0),o+=n.length,r.push(n),-1===n.indexOf(" ")););}return[r,i]}static _mapStrIdx(t,e,s,i){const a=t.buffer.active,o=a.getNullCell();let n=s;for(;i;){const t=a.getLine(e);if(!t)return[-1,-1];for(let s=n;s{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.WebLinksAddon=void 0;const e=s(6),a=/https?:[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;function o(t,e){const s=window.open();if(s){try{s.opener=null}catch(t){}s.location.href=e}else console.warn("Opening link blocked as opener could not be cleared")}t.WebLinksAddon=class{constructor(t=o,e={}){this._handler=t,this._options=e}activate(t){this._terminal=t;const s=this._options,i=s.urlRegex||a;this._linkProvider=this._terminal.registerLinkProvider(new e.WebLinkProvider(this._terminal,i,this._handler,s))}dispose(){var t;null===(t=this._linkProvider)||void 0===t||t.dispose()}}})(),i})()))},94961:t=>{"use strict";t.exports=JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}')},60291:t=>{"use strict";t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},48491:t=>{"use strict";t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}')},70663:t=>{"use strict";t.exports=JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}')}}]); \ No newline at end of file +class Pa{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,s,i){const a=e.listeners[i],o=e.duration;a.forEach((i=>i({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(s-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ds.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((s,i)=>{if(!s.running||!s.items.length)return;const a=s.items;let o,n=a.length-1,r=!1;for(;n>=0;--n)o=a[n],o._active?(o._total>s.duration&&(s.duration=o._total),o.tick(t),r=!0):(a[n]=a[a.length-1],a.pop());r&&(i.draw(),this._notify(i,s,t,"progress")),a.length||(s.running=!1,this._notify(i,s,t,"complete"),s.initial=!1),e+=a.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let s=e.get(t);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,s)),s}listen(t,e,s){this._getAnims(t).listeners[e].push(s)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const s=e.items;let i=s.length-1;for(;i>=0;--i)s[i].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var Ra=new Pa;const Da="transparent",La={boolean(t,e,s){return s>.5?e:t},color(t,e,s){const i=Cs(t||Da),a=i.valid&&Cs(e||Da);return a&&a.valid?a.mix(i,s).hexString():e},number(t,e,s){return t+(e-t)*s}};class Fa{constructor(t,e,s,i){const a=e[s];i=mi([t.to,i,a,t.from]);const o=mi([t.from,a,i]);this._active=!0,this._fn=t.fn||La[t.type||typeof o],this._easing=_s[t.easing]||_s.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=o,this._to=i,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);const i=this._target[this._prop],a=s-this._start,o=this._duration-a;this._start=s,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=a,this._loop=!!t.loop,this._to=mi([t.to,e,i,t.from]),this._from=mi([t.from,i,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,s=this._duration,i=this._prop,a=this._from,o=this._loop,n=this._to;let r;if(this._active=a!==n&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[i]=this._fn(a,n,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,s)=>{t.push({res:e,rej:s})}))}_notify(t){const e=t?"res":"rej",s=this._promises||[];for(let i=0;i{const a=t[i];if(!re(a))return;const o={};for(const t of e)o[t]=a[t];(ne(a.properties)&&a.properties||[i]).forEach((t=>{t!==i&&s.has(t)||s.set(t,o)}))}))}_animateOptions(t,e){const s=e.options,i=Na(t,s);if(!i)return[];const a=this._createAnimations(i,s);return s.$shared&&$a(t.options.$animations,s).then((()=>{t.options=s}),(()=>{})),a}_createAnimations(t,e){const s=this._properties,i=[],a=t.$animations||(t.$animations={}),o=Object.keys(e),n=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){i.push(...this._animateOptions(t,e));continue}const c=e[l];let p=a[l];const d=s.get(l);if(p){if(d&&p.active()){p.update(d,c,n);continue}p.cancel()}d&&d.duration?(a[l]=p=new Fa(d,t,l,c),i.push(p)):t[l]=c}return i}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const s=this._createAnimations(t,e);return s.length?(Ra.add(this._chart,s),!0):void 0}}function $a(t,e){const s=[],i=Object.keys(e);for(let a=0;a0||!s&&e<0)return a.index}return null}function Wa(t,e){const{chart:s,_cachedMeta:i}=t,a=s._stacks||(s._stacks={}),{iScale:o,vScale:n,index:r}=i,l=o.axis,c=n.axis,p=Ha(o,n,i),d=e.length;let h;for(let u=0;us[t].axis===e)).shift()}function Za(t,e){return gi(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function Xa(t,e,s){return gi(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:s,index:e,mode:"default",type:"data"})}function Ya(t,e){const s=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[i]||void 0===e[i][s])return;delete e[i][s],void 0!==e[i]._visualValues&&void 0!==e[i]._visualValues[s]&&delete e[i]._visualValues[s]}}}const Ja=t=>"reset"===t||"none"===t,Qa=(t,e)=>e?t:Object.assign({},t),to=(t,e,s)=>t&&!e.hidden&&e._stacked&&{keys:Ea(s,!0),values:null};class eo{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Va(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ya(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,s=this.getDataset(),i=(t,e,s,i)=>"x"===t?e:"r"===t?i:s,a=e.xAxisID=pe(s.xAxisID,Ka(t,"x")),o=e.yAxisID=pe(s.yAxisID,Ka(t,"y")),n=e.rAxisID=pe(s.rAxisID,Ka(t,"r")),r=e.indexAxis,l=e.iAxisID=i(r,a,o,n),c=e.vAxisID=i(r,o,a,n);e.xScale=this.getScaleForId(a),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(n),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&cs(this._data,this),t._stacked&&Ya(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(re(e)){const t=this._cachedMeta;this._data=za(e,t)}else if(s!==e){if(s){cs(s,this);const t=this._cachedMeta;Ya(t),t._parsed=[]}e&&Object.isExtensible(e)&&ls(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,s=this.getDataset();let i=!1;this._dataCheck();const a=e._stacked;e._stacked=Va(e.vScale,e),e.stack!==s.stack&&(i=!0,Ya(e),e.stack=s.stack),this._resyncElements(t),(i||a!==e._stacked)&&Wa(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),s=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:s,_data:i}=this,{iScale:a,_stacked:o}=s,n=a.axis;let r,l,c,p=0===t&&e===i.length||s._sorted,d=t>0&&s._parsed[t-1];if(!1===this._parsing)s._parsed=i,s._sorted=!0,c=i;else{c=ne(i[t])?this.parseArrayData(s,i,t,e):re(i[t])?this.parseObjectData(s,i,t,e):this.parsePrimitiveData(s,i,t,e);const a=()=>null===l[n]||d&&l[n]e||p=0;--d)if(!u()){this.updateRangeFromParsed(l,t,h,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,s=[];let i,a,o;for(i=0,a=e.length;i=0&&tthis.getContext(s,i,e),m=l.resolveNamedOptions(d,h,u,p);return m.$shared&&(m.$shared=r,a[o]=Object.freeze(Qa(m,r))),m}_resolveAnimations(t,e,s){const i=this.chart,a=this._cachedDataOpts,o=`animation-${e}`,n=a[o];if(n)return n;let r;if(!1!==i.options.animation){const i=this.chart.config,a=i.datasetAnimationScopeKeys(this._type,e),o=i.getOptionScopes(this.getDataset(),a);r=i.createResolver(o,this.getContext(t,s,e))}const l=new Ma(i,r&&r.animations);return r&&r._cacheable&&(a[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ja(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const s=this.resolveDataElementOptions(t,e),i=this._sharedOptions,a=this.getSharedOptions(s),o=this.includeOptions(e,a)||a!==i;return this.updateSharedOptions(a,e,s),{sharedOptions:a,includeOptions:o}}updateElement(t,e,s,i){Ja(i)?Object.assign(t,s):this._resolveAnimations(e,i).update(t,s)}updateSharedOptions(t,e,s){t&&!Ja(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,i){t.active=i;const a=this.getStyle(e,i);this._resolveAnimations(e,s,i).update(t,{options:!i&&this.getSharedOptions(a)||a})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,s=this._cachedMeta.data;for(const[n,r,l]of this._syncList)this[n](r,l);this._syncList=[];const i=s.length,a=e.length,o=Math.min(a,i);o&&this.parse(0,o),a>i?this._insertElements(i,a-i,t):a{for(t.length+=e,n=t.length-1;n>=o;n--)t[n]=t[n-e]};for(r(a),n=t;n0&&this.getParsed(e-1);for(let x=0;x=b){u.skip=!0;continue}const v=this.getParsed(x),w=oe(v[h]),_=u[d]=o.getPixelForValue(v[d],x),S=u[h]=a||w?n.getBasePixel():n.getPixelForValue(r?this.applyStack(n,v,r):v[h],x);u.skip=isNaN(_)||isNaN(S)||w,u.stop=x>0&&Math.abs(v[d]-y[d])>f,m&&(u.parsed=v,u.raw=l.data[x]),p&&(u.options=c||this.resolveDataElementOptions(x,s.active?"active":i)),g||this.updateElement(s,x,u,i),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,s=e.options&&e.options.borderWidth||0,i=t.data||[];if(!i.length)return s;const a=i[0].size(this.resolveDataElementOptions(0)),o=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(s,a,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}function io(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ao{static override(t){Object.assign(ao.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return io()}parse(){return io()}format(){return io()}add(){return io()}diff(){return io()}startOf(){return io()}endOf(){return io()}}var oo={_date:ao};function no(t,e,s,i){const{controller:a,data:o,_sorted:n}=t,r=a._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&n&&o.length){const t=r._reversePixels?os:as;if(!i)return t(o,e,s);if(a._sharedOptions){const i=o[0],a="function"===typeof i.getRange&&i.getRange(e);if(a){const i=t(o,e,s-a),n=t(o,e,s+a);return{lo:i.lo,hi:n.hi}}}}return{lo:0,hi:o.length-1}}function ro(t,e,s,i,a){const o=t.getSortedVisibleDatasetMetas(),n=s[e];for(let r=0,l=o.length;r{t[n]&&t[n](e[s],a)&&(o.push({element:t,datasetIndex:i,index:l}),r=r||t.inRange(e.x,e.y,a))})),i&&!r?[]:o}var fo={evaluateInteractionItems:ro,modes:{index(t,e,s,i){const a=ea(e,t),o=s.axis||"x",n=s.includeInvisible||!1,r=s.intersect?co(t,a,o,i,n):uo(t,a,o,!1,i,n),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,s=t.data[e];s&&!s.skip&&l.push({element:s,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,s,i){const a=ea(e,t),o=s.axis||"xy",n=s.includeInvisible||!1;let r=s.intersect?co(t,a,o,i,n):uo(t,a,o,!1,i,n);if(r.length>0){const e=r[0].datasetIndex,s=t.getDatasetMeta(e).data;r=[];for(let t=0;tt.pos===e))}function vo(t,e){return t.filter((t=>-1===go.indexOf(t.pos)&&t.box.axis===e))}function yo(t,e){return t.sort(((t,s)=>{const i=e?s:t,a=e?t:s;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function xo(t){const e=[];let s,i,a,o,n,r;for(s=0,i=(t||[]).length;st.box.fullSize)),!0),i=yo(bo(e,"left"),!0),a=yo(bo(e,"right")),o=yo(bo(e,"top"),!0),n=yo(bo(e,"bottom")),r=vo(e,"x"),l=vo(e,"y");return{fullSize:s,leftAndTop:i.concat(o),rightAndBottom:a.concat(l).concat(n).concat(r),chartArea:bo(e,"chartArea"),vertical:i.concat(a).concat(l),horizontal:o.concat(n).concat(r)}}function Co(t,e,s,i){return Math.max(t[s],e[s])+Math.max(t[i],e[i])}function ko(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Ao(t,e,s,i){const{pos:a,box:o}=s,n=t.maxPadding;if(!re(a)){s.size&&(t[a]-=s.size);const e=i[s.stack]||{size:0,count:1};e.size=Math.max(e.size,s.horizontal?o.height:o.width),s.size=e.size/e.count,t[a]+=s.size}o.getPadding&&ko(n,o.getPadding());const r=Math.max(0,e.outerWidth-Co(n,t,"left","right")),l=Math.max(0,e.outerHeight-Co(n,t,"top","bottom")),c=r!==t.w,p=l!==t.h;return t.w=r,t.h=l,s.horizontal?{same:c,other:p}:{same:p,other:c}}function To(t){const e=t.maxPadding;function s(s){const i=Math.max(e[s]-t[s],0);return t[s]+=i,i}t.y+=s("top"),t.x+=s("left"),s("right"),s("bottom")}function Po(t,e){const s=e.maxPadding;function i(t){const i={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{i[t]=Math.max(e[t],s[t])})),i}return i(t?["left","right"]:["top","bottom"])}function Ro(t,e,s,i){const a=[];let o,n,r,l,c,p;for(o=0,n=t.length,c=0;o{"function"===typeof t.beforeLayout&&t.beforeLayout()}));const p=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:s,padding:a,availableWidth:o,availableHeight:n,vBoxMaxWidth:o/2/p,hBoxMaxHeight:n/2}),h=Object.assign({},a);ko(h,hi(i));const u=Object.assign({maxPadding:h,w:o,h:n,x:a.left,y:a.top},a),m=_o(l.concat(c),d);Ro(r.fullSize,u,d,m),Ro(l,u,d,m),Ro(c,u,d,m)&&Ro(l,u,d,m),To(u),Lo(r.leftAndTop,u,d,m),u.x+=u.w,u.y+=u.h,Lo(r.rightAndBottom,u,d,m),t.chartArea={left:u.left,top:u.top,right:u.left+u.w,bottom:u.top+u.h,height:u.h,width:u.w},ue(r.chartArea,(e=>{const s=e.box;Object.assign(s,t.chartArea),s.update(u.w,u.h,{left:0,top:0,right:0,bottom:0})}))}};class Mo{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,s){}removeEventListener(t,e,s){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,s,i){return e=Math.max(0,e||t.width),s=s||t.height,{width:e,height:Math.max(0,i?Math.floor(e/i):s)}}isAttached(t){return!0}updateConfig(t){}}class $o extends Mo{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const No="$chartjs",Io={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Uo=t=>null===t||""===t;function Oo(t,e){const s=t.style,i=t.getAttribute("height"),a=t.getAttribute("width");if(t[No]={initial:{height:i,width:a,style:{display:s.display,height:s.height,width:s.width}}},s.display=s.display||"block",s.boxSizing=s.boxSizing||"border-box",Uo(a)){const e=ra(t,"width");void 0!==e&&(t.width=e)}if(Uo(i))if(""===t.style.height)t.height=t.width/(e||2);else{const e=ra(t,"height");void 0!==e&&(t.height=e)}return t}const Eo=!!na&&{passive:!0};function Bo(t,e,s){t&&t.addEventListener(e,s,Eo)}function zo(t,e,s){t&&t.canvas&&t.canvas.removeEventListener(e,s,Eo)}function Vo(t,e){const s=Io[t.type]||t.type,{x:i,y:a}=ea(t,e);return{type:s,chart:e,native:t,x:void 0!==i?i:null,y:void 0!==a?a:null}}function Ho(t,e){for(const s of t)if(s===e||s.contains(e))return!0}function jo(t,e,s){const i=t.canvas,a=new MutationObserver((t=>{let e=!1;for(const s of t)e=e||Ho(s.addedNodes,i),e=e&&!Ho(s.removedNodes,i);e&&s()}));return a.observe(document,{childList:!0,subtree:!0}),a}function qo(t,e,s){const i=t.canvas,a=new MutationObserver((t=>{let e=!1;for(const s of t)e=e||Ho(s.removedNodes,i),e=e&&!Ho(s.addedNodes,i);e&&s()}));return a.observe(document,{childList:!0,subtree:!0}),a}const Go=new Map;let Wo=0;function Ko(){const t=window.devicePixelRatio;t!==Wo&&(Wo=t,Go.forEach(((e,s)=>{s.currentDevicePixelRatio!==t&&e()})))}function Zo(t,e){Go.size||window.addEventListener("resize",Ko),Go.set(t,e)}function Xo(t){Go.delete(t),Go.size||window.removeEventListener("resize",Ko)}function Yo(t,e,s){const i=t.canvas,a=i&&Wi(i);if(!a)return;const o=hs(((t,e)=>{const i=a.clientWidth;s(t,e),i{const e=t[0],s=e.contentRect.width,i=e.contentRect.height;0===s&&0===i||o(s,i)}));return n.observe(a),Zo(t,o),n}function Jo(t,e,s){s&&s.disconnect(),"resize"===e&&Xo(t)}function Qo(t,e,s){const i=t.canvas,a=hs((e=>{null!==t.ctx&&s(Vo(e,t))}),t);return Bo(i,e,a),a}class tn extends Mo{acquireContext(t,e){const s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(Oo(t,e),s):null}releaseContext(t){const e=t.canvas;if(!e[No])return!1;const s=e[No].initial;["height","width"].forEach((t=>{const i=s[t];oe(i)?e.removeAttribute(t):e.setAttribute(t,i)}));const i=s.style||{};return Object.keys(i).forEach((t=>{e.style[t]=i[t]})),e.width=e.width,delete e[No],!0}addEventListener(t,e,s){this.removeEventListener(t,e);const i=t.$proxies||(t.$proxies={}),a={attach:jo,detach:qo,resize:Yo},o=a[e]||Qo;i[e]=o(t,e,s)}removeEventListener(t,e){const s=t.$proxies||(t.$proxies={}),i=s[e];if(!i)return;const a={attach:Jo,detach:Jo,resize:Jo},o=a[e]||zo;o(t,e,i),s[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,i){return aa(t,e,s,i)}isAttached(t){const e=t&&Wi(t);return!(!e||!e.isConnected)}}function en(t){return!Gi()||"undefined"!==typeof OffscreenCanvas&&t instanceof OffscreenCanvas?$o:tn}class sn{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:s}=this.getProps(["x","y"],t);return{x:e,y:s}}hasValue(){return He(this.x)&&He(this.y)}getProps(t,e){const s=this.$animations;if(!e||!s)return this;const i={};return t.forEach((t=>{i[t]=s[t]&&s[t].active()?s[t]._to:this[t]})),i}}function an(t,e){const s=t.options.ticks,i=on(t),a=Math.min(s.maxTicksLimit||i,i),o=s.major.enabled?rn(e):[],n=o.length,r=o[0],l=o[n-1],c=[];if(n>a)return ln(e,c,o,n/a),c;const p=nn(o,e,a);if(n>0){let t,s;const i=n>1?Math.round((l-r)/(n-1)):null;for(cn(e,c,p,oe(i)?0:r-i,r),t=0,s=n-1;ta)return t}return Math.max(a,1)}function rn(t){const e=[];let s,i;for(s=0,i=t.length;s"left"===t?"right":"right"===t?"left":t,hn=(t,e,s)=>"top"===e||"left"===e?t[e]+s:t[e]-s,un=(t,e)=>Math.min(e||t,t);function mn(t,e){const s=[],i=t.length/e,a=t.length;let o=0;for(;on+r)))return c}function gn(t,e){ue(t,(t=>{const s=t.gc,i=s.length/2;let a;if(i>e){for(a=0;ai?i:s,i=a&&s>i?s:i,{min:ce(s,ce(i,s)),max:ce(i,ce(s,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){const e=this._labelItems||(this._labelItems=this._computeLabelItems(t));return e}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){he(this.options.beforeUpdate,[this])}update(t,e,s){const{beginAtZero:i,grace:a,ticks:o}=this.options,n=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=fi(this,a,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=n=a||s<=1||!this.isHorizontal())return void(this.labelRotation=i);const c=this._getLabelSizes(),p=c.widest.width,d=c.highest.height,h=ts(this.chart.width-p,0,this.maxWidth);o=t.offset?this.maxWidth/s:h/(s-1),p+6>o&&(o=h/(s-(t.offset?.5:1)),n=this.maxHeight-bn(t.grid)-e.padding-vn(t.title,this.chart.options.font),r=Math.sqrt(p*p+d*d),l=We(Math.min(Math.asin(ts((c.highest.height+6)/o,-1,1)),Math.asin(ts(n/r,-1,1))-Math.asin(ts(d/r,-1,1)))),l=Math.max(i,Math.min(a,l))),this.labelRotation=l}afterCalculateLabelRotation(){he(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){he(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:s,title:i,grid:a}}=this,o=this._isVisible(),n=this.isHorizontal();if(o){const o=vn(i,e.options.font);if(n?(t.width=this.maxWidth,t.height=bn(a)+o):(t.height=this.maxHeight,t.width=bn(a)+o),s.display&&this.ticks.length){const{first:e,last:i,widest:a,highest:o}=this._getLabelSizes(),r=2*s.padding,l=Ge(this.labelRotation),c=Math.cos(l),p=Math.sin(l);if(n){const e=s.mirror?0:p*a.width+c*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=s.mirror?0:c*a.width+p*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,i,p,c)}}this._handleMargins(),n?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,i){const{ticks:{align:a,padding:o},position:n}=this.options,r=0!==this.labelRotation,l="top"!==n&&"x"===this.axis;if(this.isHorizontal()){const n=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let p=0,d=0;r?l?(p=i*t.width,d=s*e.height):(p=s*t.height,d=i*e.width):"start"===a?d=e.width:"end"===a?p=t.width:"inner"!==a&&(p=t.width/2,d=e.width/2),this.paddingLeft=Math.max((p-n+o)*this.width/(this.width-n),0),this.paddingRight=Math.max((d-c+o)*this.width/(this.width-c),0)}else{let s=e.height/2,i=t.height/2;"start"===a?(s=0,i=t.height):"end"===a&&(s=e.height,i=0),this.paddingTop=s+o,this.paddingBottom=i+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){he(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,s=t.length;e({width:o[t]||0,height:n[t]||0});return{first:S(0),last:S(e-1),widest:S(w),highest:S(_),widths:o,heights:n}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return es(this._alignToPixels?qs(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&tn*i?n/s:r/i:r*i0}_computeGridLineItems(t){const e=this.axis,s=this.chart,i=this.options,{grid:a,position:o,border:n}=i,r=a.offset,l=this.isHorizontal(),c=this.ticks,p=c.length+(r?1:0),d=bn(a),h=[],u=n.setContext(this.getContext()),m=u.display?u.width:0,f=m/2,g=function(t){return qs(s,t,m)};let b,v,y,x,w,_,S,C,k,A,T,P;if("top"===o)b=g(this.bottom),_=this.bottom-d,C=b-f,A=g(t.top)+f,P=t.bottom;else if("bottom"===o)b=g(this.top),A=t.top,P=g(t.bottom)-f,_=b+f,C=this.top+d;else if("left"===o)b=g(this.right),w=this.right-d,S=b-f,k=g(t.left)+f,T=t.right;else if("right"===o)b=g(this.left),k=t.left,T=g(t.right)-f,w=b+f,S=this.left+d;else if("x"===e){if("center"===o)b=g((t.top+t.bottom)/2+.5);else if(re(o)){const t=Object.keys(o)[0],e=o[t];b=g(this.chart.scales[t].getPixelForValue(e))}A=t.top,P=t.bottom,_=b+f,C=_+d}else if("y"===e){if("center"===o)b=g((t.left+t.right)/2);else if(re(o)){const t=Object.keys(o)[0],e=o[t];b=g(this.chart.scales[t].getPixelForValue(e))}w=b-f,S=w-d,k=t.left,T=t.right}const R=pe(i.ticks.maxTicksLimit,p),D=Math.max(1,Math.ceil(p/R));for(v=0;v0&&(o-=i/2);break}d={left:o,top:a,width:i+e.width,height:s+e.height,color:t.backdropColor}}f.push({label:y,font:C,textOffset:T,options:{rotation:m,color:s,strokeColor:r,strokeWidth:c,textAlign:h,textBaseline:P,translation:[x,w],backdrop:d}})}return f}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options,s=-Ge(this.labelRotation);if(s)return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:s,mirror:i,padding:a}}=this.options,o=this._getLabelSizes(),n=t+a,r=o.widest.width;let l,c;return"left"===e?i?(c=this.right+a,"near"===s?l="left":"center"===s?(l="center",c+=r/2):(l="right",c+=r)):(c=this.right-n,"near"===s?l="right":"center"===s?(l="center",c-=r/2):(l="left",c=this.left)):"right"===e?i?(c=this.left+a,"near"===s?l="right":"center"===s?(l="center",c-=r/2):(l="left",c-=r)):(c=this.left+n,"near"===s?l="left":"center"===s?(l="center",c+=r/2):(l="right",c=this.right)):l="right",{textAlign:l,x:c}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:s,top:i,width:a,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(s,i,a,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const s=this.ticks,i=s.findIndex((e=>e.value===t));if(i>=0){const t=e.setContext(this.getContext(i));return t.lineWidth}return 0}drawGrid(t){const e=this.options.grid,s=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let a,o;const n=(t,e,i)=>{i.width&&i.color&&(s.save(),s.lineWidth=i.width,s.strokeStyle=i.color,s.setLineDash(i.borderDash||[]),s.lineDashOffset=i.borderDashOffset,s.beginPath(),s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke(),s.restore())};if(e.display)for(a=0,o=i.length;a{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",i=[];let a,o;for(a=0,o=e.length;a{const i=s.split("."),a=i.pop(),o=[t].concat(i).join("."),n=e[s].split("."),r=n.pop(),l=n.join(".");Vs.route(o,a,l,r)}))}function Tn(t){return"id"in t&&"defaults"in t}class Pn{constructor(){this.controllers=new Cn(eo,"datasets",!0),this.elements=new Cn(sn,"elements"),this.plugins=new Cn(Object,"plugins"),this.scales=new Cn(Sn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,s){[...e].forEach((e=>{const i=s||this._getRegistryForType(e);s||i.isForType(e)||i===this.plugins&&e.id?this._exec(t,i,e):ue(e,(e=>{const i=s||this._getRegistryForType(e);this._exec(t,i,e)}))}))}_exec(t,e,s){const i=ke(t);he(s["before"+i],[],s),e[t](s),he(s["after"+i],[],s)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(i(e,s),t,"stop"),this._notify(i(s,e),t,"start")}}function Ln(t){const e={},s=[],i=Object.keys(Rn.plugins.items);for(let o=0;o1&&On(t[0].toLowerCase());if(e)return e}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function zn(t,e,s){if(s[e+"AxisID"]===t)return{axis:e}}function Vn(t,e){if(e.data&&e.data.datasets){const s=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(s.length)return zn(t,"x",s[0])||zn(t,"y",s[0])}return{}}function Hn(t,e){const s=Us[t.type]||{scales:{}},i=e.scales||{},a=Nn(t.type,e),o=Object.create(null);return Object.keys(i).forEach((e=>{const n=i[e];if(!re(n))return console.error(`Invalid scale configuration for scale: ${e}`);if(n._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const r=Bn(e,n,Vn(e,t),Vs.scales[n.type]),l=Un(r,a),c=s.scales||{};o[e]=ye(Object.create(null),[{axis:r},n,c[r],c[l]])})),t.data.datasets.forEach((s=>{const a=s.type||t.type,n=s.indexAxis||Nn(a,e),r=Us[a]||{},l=r.scales||{};Object.keys(l).forEach((t=>{const e=In(t,n),a=s[e+"AxisID"]||e;o[a]=o[a]||Object.create(null),ye(o[a],[{axis:e},i[a],l[t]])}))})),Object.keys(o).forEach((t=>{const e=o[t];ye(e,[Vs.scales[e.type],Vs.scale])})),o}function jn(t){const e=t.options||(t.options={});e.plugins=pe(e.plugins,{}),e.scales=Hn(t,e)}function qn(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function Gn(t){return t=t||{},t.data=qn(t.data),jn(t),t}const Wn=new Map,Kn=new Set;function Zn(t,e){let s=Wn.get(t);return s||(s=e(),Wn.set(t,s),Kn.add(s)),s}const Xn=(t,e,s)=>{const i=Ce(e,s);void 0!==i&&t.add(i)};class Yn{constructor(t){this._config=Gn(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=qn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),jn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Zn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Zn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Zn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id,s=this.type;return Zn(`${s}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const s=this._scopeCache;let i=s.get(t);return i&&!e||(i=new Map,s.set(t,i)),i}getOptionScopes(t,e,s){const{options:i,type:a}=this,o=this._cachedScopes(t,s),n=o.get(e);if(n)return n;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Xn(r,t,e)))),e.forEach((t=>Xn(r,i,t))),e.forEach((t=>Xn(r,Us[a]||{},t))),e.forEach((t=>Xn(r,Vs,t))),e.forEach((t=>Xn(r,Os,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Kn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,Us[e]||{},Vs.datasets[e]||{},{type:e},Vs,Os]}resolveNamedOptions(t,e,s,i=[""]){const a={$shared:!0},{resolver:o,subPrefixes:n}=Jn(this._resolverCache,t,i);let r=o;if(tr(o,e)){a.$shared=!1,s=Te(s)?s():s;const e=this.createResolver(t,s,n);r=vi(o,s,e)}for(const l of e)a[l]=r[l];return a}createResolver(t,e,s=[""],i){const{resolver:a}=Jn(this._resolverCache,t,s);return re(e)?vi(a,e,void 0,i):a}}function Jn(t,e,s){let i=t.get(e);i||(i=new Map,t.set(e,i));const a=s.join();let o=i.get(a);if(!o){const t=bi(e,s);o={resolver:t,subPrefixes:s.filter((t=>!t.toLowerCase().includes("hover")))},i.set(a,o)}return o}const Qn=t=>re(t)&&Object.getOwnPropertyNames(t).some((e=>Te(t[e])));function tr(t,e){const{isScriptable:s,isIndexable:i}=yi(t);for(const a of e){const e=s(a),o=i(a),n=(o||e)&&t[a];if(e&&(Te(n)||Qn(n))||o&&ne(n))return!0}return!1}var er="4.4.4";const sr=["top","bottom","left","right","chartArea"];function ir(t,e){return"top"===t||"bottom"===t||-1===sr.indexOf(t)&&"x"===e}function ar(t,e){return function(s,i){return s[t]===i[t]?s[e]-i[e]:s[t]-i[t]}}function or(t){const e=t.chart,s=e.options.animation;e.notifyPlugins("afterRender"),he(s&&s.onComplete,[t],e)}function nr(t){const e=t.chart,s=e.options.animation;he(s&&s.onProgress,[t],e)}function rr(t){return Gi()&&"string"===typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const lr={},cr=t=>{const e=rr(t);return Object.values(lr).filter((t=>t.canvas===e)).pop()};function pr(t,e,s){const i=Object.keys(t);for(const a of i){const i=+a;if(i>=e){const o=t[a];delete t[a],(s>0||i>e)&&(t[i+s]=o)}}}function dr(t,e,s,i){return s&&"mouseout"!==t.type?i?e:t:null}function hr(t,e,s){return t.options.clip?t[s]:e[s]}function ur(t,e){const{xScale:s,yScale:i}=t;return s&&i?{left:hr(s,e,"left"),right:hr(s,e,"right"),top:hr(i,e,"top"),bottom:hr(i,e,"bottom")}:e}class mr{static defaults=Vs;static instances=lr;static overrides=Us;static registry=Rn;static version=er;static getChart=cr;static register(...t){Rn.add(...t),fr()}static unregister(...t){Rn.remove(...t),fr()}constructor(t,e){const s=this.config=new Yn(e),i=rr(t),a=cr(i);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const o=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||en(i)),this.platform.updateConfig(s);const n=this.platform.acquireContext(i,o.aspectRatio),r=n&&n.canvas,l=r&&r.height,c=r&&r.width;this.id=ae(),this.ctx=n,this.canvas=r,this.width=c,this.height=l,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Dn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=us((t=>this.update(t)),o.resizeDelay||0),this._dataChanges=[],lr[this.id]=this,n&&r?(Ra.listen(this,"complete",or),Ra.listen(this,"progress",nr),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:i,_aspectRatio:a}=this;return oe(t)?e&&a?a:i?s/i:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Rn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():oa(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gs(this.canvas,this.ctx),this}stop(){return Ra.stop(this),this}resize(t,e){Ra.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const s=this.options,i=this.canvas,a=s.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(i,t,e,a),n=s.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,oa(this,n,!0)&&(this.notifyPlugins("resize",{size:o}),he(s.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){const t=this.options,e=t.scales||{};ue(e,((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,s=this.scales,i=Object.keys(s).reduce(((t,e)=>(t[e]=!1,t)),{});let a=[];e&&(a=a.concat(Object.keys(e).map((t=>{const s=e[t],i=Bn(t,s),a="r"===i,o="x"===i;return{options:s,dposition:a?"chartArea":o?"bottom":"left",dtype:a?"radialLinear":o?"category":"linear"}})))),ue(a,(e=>{const a=e.options,o=a.id,n=Bn(o,a),r=pe(a.type,e.dtype);void 0!==a.position&&ir(a.position,n)===ir(e.dposition)||(a.position=e.dposition),i[o]=!0;let l=null;if(o in s&&s[o].type===r)l=s[o];else{const t=Rn.getScale(r);l=new t({id:o,type:r,ctx:this.ctx,chart:this}),s[l.id]=l}l.init(a,t)})),ue(i,((t,e)=>{t||delete s[e]})),ue(s,(t=>{Fo.configure(this,t,t.options),Fo.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort(((t,e)=>t.index-e.index)),s>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,s)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(s)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let s,i;for(this._removeUnreferencedMetasets(),s=0,i=e.length;s{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let l=0,c=this.data.datasets.length;l{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(ar("z","_idx"));const{_active:n,_lastEvent:r}=this;r?this._eventHandler(r,!0):n.length&&this._updateHoverStyles(n,n,!0),this.render()}_updateScales(){ue(this.scales,(t=>{Fo.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);Pe(e,s)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:s,start:i,count:a}of e){const e="_removeElements"===s?-a:a;pr(t,i,e)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,s=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),i=s(0);for(let a=1;at.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Fo.update(this,this.width,this.height,t);const e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],ue(this.boxes,(t=>{s&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,s=t._clip,i=!s.disabled,a=ur(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(i&&Xs(e,{left:!1===s.left?0:a.left-s.left,right:!1===s.right?this.width:a.right+s.right,top:!1===s.top?0:a.top-s.top,bottom:!1===s.bottom?this.height:a.bottom+s.bottom}),t.controller.draw(),i&&Ys(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Zs(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,s,i){const a=fo.modes[e];return"function"===typeof a?a(this,t,s,i):[]}getDatasetMeta(t){const e=this.data.datasets[t],s=this._metasets;let i=s.filter((t=>t&&t._dataset===e)).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(i)),i}getContext(){return this.$context||(this.$context=gi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const s=this.getDatasetMeta(t);return"boolean"===typeof s.hidden?!s.hidden:!e.hidden}setDatasetVisibility(t,e){const s=this.getDatasetMeta(t);s.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){const i=s?"show":"hide",a=this.getDatasetMeta(t),o=a.controller._resolveAnimations(void 0,i);Ae(e)?(a.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),o.update(a,{visible:s}),this.update((e=>e.datasetIndex===t?i:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),Ra.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,s,i),t[s]=i},i=(t,e,s)=>{t.offsetX=e,t.offsetY=s,this._eventHandler(t)};ue(this.options.events,(t=>s(t,i)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,s=(s,i)=>{e.addEventListener(this,s,i),t[s]=i},i=(s,i)=>{t[s]&&(e.removeEventListener(this,s,i),delete t[s])},a=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const n=()=>{i("attach",n),this.attached=!0,this.resize(),s("resize",a),s("detach",o)};o=()=>{this.attached=!1,i("resize",a),this._stop(),this._resize(0,0),s("attach",n)},e.isAttached(this.canvas)?n():o()}unbindEvents(){ue(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},ue(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){const i=s?"set":"remove";let a,o,n,r;for("dataset"===e&&(a=this.getDatasetMeta(t[0].datasetIndex),a.controller["_"+i+"DatasetHoverStyle"]()),n=0,r=t.length;n{const s=this.getDatasetMeta(t);if(!s)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:s.data[e],index:e}})),i=!me(s,e);i&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,s){const i=this.options.hover,a=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=a(e,t),n=s?t:a(t,e);o.length&&this.updateHoverStyle(o,i.mode,!1),n.length&&i.mode&&this.updateHoverStyle(n,i.mode,!0)}_eventHandler(t,e){const s={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},i=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",s,i))return;const a=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,i),(a||s.changed)&&this.render(),this}_handleEvent(t,e,s){const{_active:i=[],options:a}=this,o=e,n=this._getActiveElements(t,i,s,o),r=Re(t),l=dr(t,this._lastEvent,s,r);s&&(this._lastEvent=null,he(a.onHover,[t,n,this],this),r&&he(a.onClick,[t,n,this],this));const c=!me(n,i);return(c||e)&&(this._active=n,this._updateHoverStyles(n,i,e)),this._lastEvent=l,c}_getActiveElements(t,e,s,i){if("mouseout"===t.type)return[];if(!s)return e;const a=this.options.hover;return this.getElementsAtEventForMode(t,a.mode,a,i)}}function fr(){return ue(mr.instances,(t=>t._plugins.invalidate()))}function gr(t,e,s=e){t.lineCap=pe(s.borderCapStyle,e.borderCapStyle),t.setLineDash(pe(s.borderDash,e.borderDash)),t.lineDashOffset=pe(s.borderDashOffset,e.borderDashOffset),t.lineJoin=pe(s.borderJoinStyle,e.borderJoinStyle),t.lineWidth=pe(s.borderWidth,e.borderWidth),t.strokeStyle=pe(s.borderColor,e.borderColor)}function br(t,e,s){t.lineTo(s.x,s.y)}function vr(t){return t.stepped?Js:t.tension||"monotone"===t.cubicInterpolationMode?Qs:br}function yr(t,e,s={}){const i=t.length,{start:a=0,end:o=i-1}=s,{start:n,end:r}=e,l=Math.max(a,n),c=Math.min(o,r),p=ar&&o>r;return{count:i,start:l,loop:e.loop,ilen:c(n+(c?r-t:t))%o,y=()=>{u!==m&&(t.lineTo(g,m),t.lineTo(g,u),t.lineTo(g,f))};for(l&&(d=a[v(0)],t.moveTo(d.x,d.y)),p=0;p<=r;++p){if(d=a[v(p)],d.skip)continue;const e=d.x,s=d.y,i=0|e;i===h?(sm&&(m=s),g=(b*g+e)/++b):(y(),t.lineTo(e,s),h=i,b=0,u=m=s),f=s}y()}function _r(t){const e=t.options,s=e.borderDash&&e.borderDash.length,i=!t._decimated&&!t._loop&&!e.tension&&"monotone"!==e.cubicInterpolationMode&&!e.stepped&&!s;return i?wr:xr}function Sr(t){return t.stepped?ca:t.tension||"monotone"===t.cubicInterpolationMode?pa:la}function Cr(t,e,s,i){let a=e._path;a||(a=e._path=new Path2D,e.path(a,s,i)&&a.closePath()),gr(t,e.options),t.stroke(a)}function kr(t,e,s,i){const{segments:a,options:o}=e,n=_r(e);for(const r of a)gr(t,o,r.style),t.beginPath(),n(t,e,r,{start:s,end:s+i-1})&&t.closePath(),t.stroke()}const Ar="function"===typeof Path2D;function Tr(t,e,s,i){Ar&&!e.options.segment?Cr(t,e,s,i):kr(t,e,s,i)}class Pr extends sn{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const s=this.options;if((s.tension||"monotone"===s.cubicInterpolationMode)&&!s.stepped&&!this._pointsUpdated){const i=s.spanGaps?this._loop:this._fullLoop;qi(this._points,s,t,i,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Sa(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,s=t.length;return s&&e[t[s-1].end]}interpolate(t,e){const s=this.options,i=t[e],a=this.points,o=xa(this,{property:e,start:i,end:i});if(!o.length)return;const n=[],r=Sr(s);let l,c;for(l=0,c=o.length;l{e=$r(t,e,a);const n=a[t],r=a[e];null!==i?(o.push({x:n.x,y:i}),o.push({x:r.x,y:i})):null!==s&&(o.push({x:s,y:n.y}),o.push({x:s,y:r.y}))})),o}function $r(t,e,s){for(;e>t;e--){const t=s[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Nr(t,e,s,i){return t&&e?i(t[s],e[s]):t?t[s]:e?e[s]:0}function Ir(t,e){let s=[],i=!1;return ne(t)?(i=!0,s=t):s=Mr(t,e),s.length?new Pr({points:s,options:{tension:0},_loop:i,_fullLoop:i}):null}function Ur(t){return t&&!1!==t.fill}function Or(t,e,s){const i=t[e];let a=i.fill;const o=[e];let n;if(!s)return a;while(!1!==a&&-1===o.indexOf(a)){if(!le(a))return a;if(n=t[a],!n)return!1;if(n.visible)return a;o.push(a),a=n.fill}return!1}function Er(t,e,s){const i=Hr(t);if(re(i))return!isNaN(i.value)&&i;let a=parseFloat(i);return le(a)&&Math.floor(a)===a?Br(i[0],e,a,s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function Br(t,e,s,i){return"-"!==t&&"+"!==t||(s=e+s),!(s===e||s<0||s>=i)&&s}function zr(t,e){let s=null;return"start"===t?s=e.bottom:"end"===t?s=e.top:re(t)?s=e.getPixelForValue(t.value):e.getBasePixel&&(s=e.getBasePixel()),s}function Vr(t,e,s){let i;return i="start"===t?s:"end"===t?e.options.reverse?e.min:e.max:re(t)?t.value:e.getBaseValue(),i}function Hr(t){const e=t.options,s=e.fill;let i=pe(s&&s.target,s);return void 0===i&&(i=!!e.backgroundColor),!1!==i&&null!==i&&(!0===i?"origin":i)}function jr(t){const{scale:e,index:s,line:i}=t,a=[],o=i.segments,n=i.points,r=qr(e,s);r.push(Ir({x:null,y:e.bottom},i));for(let l=0;l=0;--n){const e=a[n].$filler;e&&(e.line.updateControlPoints(o,e.axis),i&&e.fill&&tl(t.ctx,e,o))}},beforeDatasetsDraw(t,e,s){if("beforeDatasetsDraw"!==s.drawTime)return;const i=t.getSortedVisibleDatasetMetas();for(let a=i.length-1;a>=0;--a){const e=i[a].$filler;Ur(e)&&tl(t.ctx,e,t.chartArea)}},beforeDatasetDraw(t,e,s){const i=e.meta.$filler;Ur(i)&&"beforeDatasetDraw"===s.drawTime&&tl(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const rl=(t,e)=>{let{boxHeight:s=e,boxWidth:i=e}=t;return t.usePointStyle&&(s=Math.min(s,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:s,itemHeight:Math.max(e,s)}},ll=(t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class cl extends sn{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=he(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,s)=>t.sort(e,s,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const s=t.labels,i=ui(s.font),a=i.size,o=this._computeTitleHeight(),{boxWidth:n,itemHeight:r}=rl(s,a);let l,c;e.font=i.string,this.isHorizontal()?(l=this.maxWidth,c=this._fitRows(o,a,n,r)+10):(c=this.maxHeight,l=this._fitCols(o,i,n,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(c,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,i){const{ctx:a,maxWidth:o,options:{labels:{padding:n}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],c=i+n;let p=t;a.textAlign="left",a.textBaseline="middle";let d=-1,h=-c;return this.legendItems.forEach(((t,u)=>{const m=s+e/2+a.measureText(t.text).width;(0===u||l[l.length-1]+m+2*n>o)&&(p+=c,l[l.length-(u>0?0:1)]=0,h+=c,d++),r[u]={left:0,top:h,row:d,width:m,height:i},l[l.length-1]+=m+n})),p}_fitCols(t,e,s,i){const{ctx:a,maxHeight:o,options:{labels:{padding:n}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],c=o-t;let p=n,d=0,h=0,u=0,m=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:f,itemHeight:g}=pl(s,e,a,t,i);o>0&&h+g+2*n>c&&(p+=d+n,l.push({width:d,height:h}),u+=d+n,m++,d=h=0),r[o]={left:u,top:h,col:m,width:f,height:g},d=Math.max(d,f),h+=g+n})),p+=d,l.push({width:d,height:h}),p}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:i},rtl:a}}=this,o=ua(a,this.left,this.width);if(this.isHorizontal()){let a=0,n=fs(s,this.left+i,this.right-this.lineWidths[a]);for(const r of e)a!==r.row&&(a=r.row,n=fs(s,this.left+i,this.right-this.lineWidths[a])),r.top+=this.top+t+i,r.left=o.leftForLtr(o.x(n),r.width),n+=r.width+i}else{let a=0,n=fs(s,this.top+t+i,this.bottom-this.columnSizes[a].height);for(const r of e)r.col!==a&&(a=r.col,n=fs(s,this.top+t+i,this.bottom-this.columnSizes[a].height)),r.top=n,r.left+=this.left+i,r.left=o.leftForLtr(o.x(r.left),r.width),n+=r.height+i}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Xs(t,this),this._draw(),Ys(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:s,ctx:i}=this,{align:a,labels:o}=t,n=Vs.color,r=ua(t.rtl,this.left,this.width),l=ui(o.font),{padding:c}=o,p=l.size,d=p/2;let h;this.drawTitle(),i.textAlign=r.textAlign("left"),i.textBaseline="middle",i.lineWidth=.5,i.font=l.string;const{boxWidth:u,boxHeight:m,itemHeight:f}=rl(o,p),g=function(t,e,s){if(isNaN(u)||u<=0||isNaN(m)||m<0)return;i.save();const a=pe(s.lineWidth,1);if(i.fillStyle=pe(s.fillStyle,n),i.lineCap=pe(s.lineCap,"butt"),i.lineDashOffset=pe(s.lineDashOffset,0),i.lineJoin=pe(s.lineJoin,"miter"),i.lineWidth=a,i.strokeStyle=pe(s.strokeStyle,n),i.setLineDash(pe(s.lineDash,[])),o.usePointStyle){const n={radius:m*Math.SQRT2/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:a},l=r.xPlus(t,u/2),c=e+d;Ks(i,n,l,c,o.pointStyleWidth&&u)}else{const o=e+Math.max((p-m)/2,0),n=r.leftForLtr(t,u),l=di(s.borderRadius);i.beginPath(),Object.values(l).some((t=>0!==t))?ai(i,{x:n,y:o,w:u,h:m,radius:l}):i.rect(n,o,u,m),i.fill(),0!==a&&i.stroke()}i.restore()},b=function(t,e,s){ii(i,s.text,t,e+f/2,l,{strikethrough:s.hidden,textAlign:r.textAlign(s.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();h=v?{x:fs(a,this.left+c,this.right-s[0]),y:this.top+c+y,line:0}:{x:this.left+c,y:fs(a,this.top+y+c,this.bottom-e[0].height),line:0},ma(this.ctx,t.textDirection);const x=f+c;this.legendItems.forEach(((n,p)=>{i.strokeStyle=n.fontColor,i.fillStyle=n.fontColor;const m=i.measureText(n.text).width,f=r.textAlign(n.textAlign||(n.textAlign=o.textAlign)),w=u+d+m;let _=h.x,S=h.y;r.setWidth(this.width),v?p>0&&_+w+c>this.right&&(S=h.y+=x,h.line++,_=h.x=fs(a,this.left+c,this.right-s[h.line])):p>0&&S+x>this.bottom&&(_=h.x=_+e[h.line].width+c,h.line++,S=h.y=fs(a,this.top+y+c,this.bottom-e[h.line].height));const C=r.x(_);if(g(C,S,n),_=gs(f,_+u+d,v?_+w:this.right,t.rtl),b(r.x(_),S,n),v)h.x+=w+c;else if("string"!==typeof n.text){const t=l.lineHeight;h.y+=ul(n,t)+c}else h.y+=x})),fa(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,s=ui(e.font),i=hi(e.padding);if(!e.display)return;const a=ua(t.rtl,this.left,this.width),o=this.ctx,n=e.position,r=s.size/2,l=i.top+r;let c,p=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),c=this.top+l,p=fs(t.align,p,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);c=l+fs(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const h=fs(n,p,p+d);o.textAlign=a.textAlign(ms(n)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=s.string,ii(o,e.text,h,c,s)}_computeTitleHeight(){const t=this.options.title,e=ui(t.font),s=hi(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,i,a;if(ss(t,this.left,this.right)&&ss(e,this.top,this.bottom))for(a=this.legendHitBoxes,s=0;st.length>e.length?t:e))),e+s.size/2+i.measureText(a).width}function hl(t,e,s){let i=t;return"string"!==typeof e.text&&(i=ul(e,s)),i}function ul(t,e){const s=t.text?t.text.length:0;return e*s}function ml(t,e){return!("mousemove"!==t&&"mouseout"!==t||!e.onHover&&!e.onLeave)||!(!e.onClick||"click"!==t&&"mouseup"!==t)}var fl={id:"legend",_element:cl,start(t,e,s){const i=t.legend=new cl({ctx:t.ctx,options:s,chart:t});Fo.configure(t,i,s),Fo.addBox(t,i)},stop(t){Fo.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,s){const i=t.legend;Fo.configure(t,i,s),i.options=s},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,s){const i=e.datasetIndex,a=s.chart;a.isDatasetVisible(i)?(a.hide(i),e.hidden=!0):(a.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:s,pointStyle:i,textAlign:a,color:o,useBorderRadius:n,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(s?0:void 0),c=hi(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(c.width+c.height)/4,strokeStyle:l.borderColor,pointStyle:i||l.pointStyle,rotation:l.rotation,textAlign:a||l.textAlign,borderRadius:n&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class gl extends sn{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const s=this.options;if(this.left=0,this.top=0,!s.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const i=ne(s.text)?s.text.length:1;this._padding=hi(s.padding);const a=i*ui(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=a:this.width=a}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:s,bottom:i,right:a,options:o}=this,n=o.align;let r,l,c,p=0;return this.isHorizontal()?(l=fs(n,s,a),c=e+t,r=a-s):("left"===o.position?(l=s+t,c=fs(n,i,e),p=-.5*De):(l=a-t,c=fs(n,e,i),p=.5*De),r=i-e),{titleX:l,titleY:c,maxWidth:r,rotation:p}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const s=ui(e.font),i=s.lineHeight,a=i/2+this._padding.top,{titleX:o,titleY:n,maxWidth:r,rotation:l}=this._drawArgs(a);ii(t,e.text,0,0,s,{color:e.color,maxWidth:r,rotation:l,textAlign:ms(e.align),textBaseline:"middle",translation:[o,n]})}}function bl(t,e){const s=new gl({ctx:t.ctx,options:e,chart:t});Fo.configure(t,s,e),Fo.addBox(t,s),t.titleBlock=s}var vl={id:"title",_element:gl,start(t,e,s){bl(t,s)},stop(t){const e=t.titleBlock;Fo.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,s){const i=t.titleBlock;Fo.configure(t,i,s),i.options=s},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};new WeakMap;const yl={average(t){if(!t.length)return!1;let e,s,i=new Set,a=0,o=0;for(e=0,s=t.length;et+e))/i.size;return{x:n,y:a/o}},nearest(t,e){if(!t.length)return!1;let s,i,a,o=e.x,n=e.y,r=Number.POSITIVE_INFINITY;for(s=0,i=t.length;s-1?t.split("\n"):t}function _l(t,e){const{element:s,datasetIndex:i,index:a}=e,o=t.getDatasetMeta(i).controller,{label:n,value:r}=o.getLabelAndValue(a);return{chart:t,label:n,parsed:o.getParsed(a),raw:t.data.datasets[i].data[a],formattedValue:r,dataset:o.getDataset(),dataIndex:a,datasetIndex:i,element:s}}function Sl(t,e){const s=t.chart.ctx,{body:i,footer:a,title:o}=t,{boxWidth:n,boxHeight:r}=e,l=ui(e.bodyFont),c=ui(e.titleFont),p=ui(e.footerFont),d=o.length,h=a.length,u=i.length,m=hi(e.padding);let f=m.height,g=0,b=i.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(f+=d*c.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){const t=e.displayColors?Math.max(r,l.lineHeight):l.lineHeight;f+=u*t+(b-u)*l.lineHeight+(b-1)*e.bodySpacing}h&&(f+=e.footerMarginTop+h*p.lineHeight+(h-1)*e.footerSpacing);let v=0;const y=function(t){g=Math.max(g,s.measureText(t).width+v)};return s.save(),s.font=c.string,ue(t.title,y),s.font=l.string,ue(t.beforeBody.concat(t.afterBody),y),v=e.displayColors?n+2+e.boxPadding:0,ue(i,(t=>{ue(t.before,y),ue(t.lines,y),ue(t.after,y)})),v=0,s.font=p.string,ue(t.footer,y),s.restore(),g+=m.width,{width:g,height:f}}function Cl(t,e){const{y:s,height:i}=e;return st.height-i/2?"bottom":"center"}function kl(t,e,s,i){const{x:a,width:o}=i,n=s.caretSize+s.caretPadding;return"left"===t&&a+o+n>e.width||("right"===t&&a-o-n<0||void 0)}function Al(t,e,s,i){const{x:a,width:o}=s,{width:n,chartArea:{left:r,right:l}}=t;let c="center";return"center"===i?c=a<=(r+l)/2?"left":"right":a<=o/2?c="left":a>=n-o/2&&(c="right"),kl(c,t,e,s)&&(c="center"),c}function Tl(t,e,s){const i=s.yAlign||e.yAlign||Cl(t,s);return{xAlign:s.xAlign||e.xAlign||Al(t,e,s,i),yAlign:i}}function Pl(t,e){let{x:s,width:i}=t;return"right"===e?s-=i:"center"===e&&(s-=i/2),s}function Rl(t,e,s){let{y:i,height:a}=t;return"top"===e?i+=s:i-="bottom"===e?a+s:a/2,i}function Dl(t,e,s,i){const{caretSize:a,caretPadding:o,cornerRadius:n}=t,{xAlign:r,yAlign:l}=s,c=a+o,{topLeft:p,topRight:d,bottomLeft:h,bottomRight:u}=di(n);let m=Pl(e,r);const f=Rl(e,l,c);return"center"===l?"left"===r?m+=c:"right"===r&&(m-=c):"left"===r?m-=Math.max(p,h)+a:"right"===r&&(m+=Math.max(d,u)+a),{x:ts(m,0,i.width-e.width),y:ts(f,0,i.height-e.height)}}function Ll(t,e,s){const i=hi(s.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-i.right:t.x+i.left}function Fl(t){return xl([],wl(t))}function Ml(t,e,s){return gi(t,{tooltip:e,tooltipItems:s,type:"tooltip"})}function $l(t,e){const s=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return s?t.override(s):t}const Nl={beforeTitle:ie,title(t){if(t.length>0){const e=t[0],s=e.chart.data.labels,i=s?s.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex{const e={before:[],lines:[],after:[]},a=$l(s,t);xl(e.before,wl(Il(a,"beforeLabel",this,t))),xl(e.lines,Il(a,"label",this,t)),xl(e.after,wl(Il(a,"afterLabel",this,t))),i.push(e)})),i}getAfterBody(t,e){return Fl(Il(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:s}=e,i=Il(s,"beforeFooter",this,t),a=Il(s,"footer",this,t),o=Il(s,"afterFooter",this,t);let n=[];return n=xl(n,wl(i)),n=xl(n,wl(a)),n=xl(n,wl(o)),n}_createItems(t){const e=this._active,s=this.chart.data,i=[],a=[],o=[];let n,r,l=[];for(n=0,r=e.length;nt.filter(e,i,a,s)))),t.itemSort&&(l=l.sort(((e,i)=>t.itemSort(e,i,s)))),ue(l,(e=>{const s=$l(t.callbacks,e);i.push(Il(s,"labelColor",this,e)),a.push(Il(s,"labelPointStyle",this,e)),o.push(Il(s,"labelTextColor",this,e))})),this.labelColors=i,this.labelPointStyles=a,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const s=this.options.setContext(this.getContext()),i=this._active;let a,o=[];if(i.length){const t=yl[s.position].call(this,i,this._eventPosition);o=this._createItems(s),this.title=this.getTitle(o,s),this.beforeBody=this.getBeforeBody(o,s),this.body=this.getBody(o,s),this.afterBody=this.getAfterBody(o,s),this.footer=this.getFooter(o,s);const e=this._size=Sl(this,s),n=Object.assign({},t,e),r=Tl(this.chart,s,n),l=Dl(s,n,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,a={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(a={opacity:0});this._tooltipItems=o,this.$context=void 0,a&&this._resolveAnimations().update(this,a),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,i){const a=this.getCaretPosition(t,s,i);e.lineTo(a.x1,a.y1),e.lineTo(a.x2,a.y2),e.lineTo(a.x3,a.y3)}getCaretPosition(t,e,s){const{xAlign:i,yAlign:a}=this,{caretSize:o,cornerRadius:n}=s,{topLeft:r,topRight:l,bottomLeft:c,bottomRight:p}=di(n),{x:d,y:h}=t,{width:u,height:m}=e;let f,g,b,v,y,x;return"center"===a?(y=h+m/2,"left"===i?(f=d,g=f-o,v=y+o,x=y-o):(f=d+u,g=f+o,v=y-o,x=y+o),b=f):(g="left"===i?d+Math.max(r,c)+o:"right"===i?d+u-Math.max(l,p)-o:this.caretX,"top"===a?(v=h,y=v-o,f=g-o,b=g+o):(v=h+m,y=v+o,f=g+o,b=g-o),x=v),{x1:f,x2:g,x3:b,y1:v,y2:y,y3:x}}drawTitle(t,e,s){const i=this.title,a=i.length;let o,n,r;if(a){const l=ua(s.rtl,this.x,this.width);for(t.x=Ll(this,s.titleAlign,s),e.textAlign=l.textAlign(s.titleAlign),e.textBaseline="middle",o=ui(s.titleFont),n=s.titleSpacing,e.fillStyle=s.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=a.multiKeyBackground,ai(t,{x:e,y:u,w:l,h:r,radius:n}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),ai(t,{x:s,y:u+1,w:l-2,h:r-2,radius:n}),t.fill()):(t.fillStyle=a.multiKeyBackground,t.fillRect(e,u,l,r),t.strokeRect(e,u,l,r),t.fillStyle=o.backgroundColor,t.fillRect(s,u+1,l-2,r-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){const{body:i}=this,{bodySpacing:a,bodyAlign:o,displayColors:n,boxHeight:r,boxWidth:l,boxPadding:c}=s,p=ui(s.bodyFont);let d=p.lineHeight,h=0;const u=ua(s.rtl,this.x,this.width),m=function(s){e.fillText(s,u.x(t.x+h),t.y+d/2),t.y+=d+a},f=u.textAlign(o);let g,b,v,y,x,w,_;for(e.textAlign=o,e.textBaseline="middle",e.font=p.string,t.x=Ll(this,f,s),e.fillStyle=s.bodyColor,ue(this.beforeBody,m),h=n&&"right"!==f?"center"===o?l/2+c:l+2+c:0,y=0,w=i.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,s=this.$animations,i=s&&s.x,a=s&&s.y;if(i||a){const s=yl[t.position].call(this,this._active,this._eventPosition);if(!s)return;const o=this._size=Sl(this,t),n=Object.assign({},s,this._size),r=Tl(e,t,n),l=Dl(t,n,r,e);i._to===l.x&&a._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(e);const i={width:this.width,height:this.height},a={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const o=hi(e.padding),n=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&n&&(t.save(),t.globalAlpha=s,this.drawBackground(a,t,i,e),ma(t,e.textDirection),a.y+=o.top,this.drawTitle(a,t,e),this.drawBody(a,t,e),this.drawFooter(a,t,e),fa(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const s=this._active,i=t.map((({datasetIndex:t,index:e})=>{const s=this.chart.getDatasetMeta(t);if(!s)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:s.data[e],index:e}})),a=!me(s,i),o=this._positionChanged(i,e);(a||o)&&(this._active=i,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,a=this._active||[],o=this._getActiveElements(t,a,e,s),n=this._positionChanged(o,t),r=e||!me(o,a)||n;return r&&(this._active=o,(i.enabled||i.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,s,i){const a=this.options;if("mouseout"===t.type)return[];if(!i)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,a.mode,a,s);return a.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:s,caretY:i,options:a}=this,o=yl[a.position].call(this,t,e);return!1!==o&&(s!==o.x||i!==o.y)}}var Ol={id:"tooltip",_element:Ul,positioners:yl,afterInit(t,e,s){s&&(t.tooltip=new Ul({chart:t,options:s}))},beforeUpdate(t,e,s){t.tooltip&&t.tooltip.initialize(s)},reset(t,e,s){t.tooltip&&t.tooltip.initialize(s)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const s={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...s,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",s)}},afterEvent(t,e){if(t.tooltip){const s=e.replay;t.tooltip.handleEvent(e.event,s,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Nl},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const El=(t,e,s,i)=>("string"===typeof e?(s=t.push(e)-1,i.unshift({index:s,label:e})):isNaN(e)&&(s=null),s);function Bl(t,e,s,i){const a=t.indexOf(e);if(-1===a)return El(t,e,s,i);const o=t.lastIndexOf(e);return a!==o?s:a}const zl=(t,e)=>null===t?null:ts(Math.round(t),0,e);function Vl(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function jl(t,e){const s=[],i=1e-14,{bounds:a,step:o,min:n,max:r,precision:l,count:c,maxTicks:p,maxDigits:d,includeBounds:h}=t,u=o||1,m=p-1,{min:f,max:g}=e,b=!oe(n),v=!oe(r),y=!oe(c),x=(g-f)/(d+1);let w,_,S,C,k=ze((g-f)/m/u)*u;if(km&&(k=ze(C*k/m/u)*u),oe(l)||(w=Math.pow(10,l),k=Math.ceil(k*w)/w),"ticks"===a?(_=Math.floor(f/k)*k,S=Math.ceil(g/k)*k):(_=f,S=g),b&&v&&o&&je((r-n)/o,k/1e3)?(C=Math.round(Math.min((r-n)/k,p)),k=(r-n)/C,_=n,S=r):y?(_=b?n:_,S=v?r:S,C=c-1,k=(S-_)/C):(C=(S-_)/k,C=Be(C,Math.round(C),k/1e3)?Math.round(C):Math.ceil(C));const A=Math.max(Ke(k),Ke(_));w=Math.pow(10,oe(l)?A:l),_=Math.round(_*w)/w,S=Math.round(S*w)/w;let T=0;for(b&&(h&&_!==n?(s.push({value:n}),_r)break;s.push({value:t})}return v&&h&&S!==r?s.length&&Be(s[s.length-1].value,r,ql(r,x,t))?s[s.length-1].value=r:s.push({value:r}):v&&S!==r||s.push({value:S}),s}function ql(t,e,{horizontal:s,minRotation:i}){const a=Ge(i),o=(s?Math.sin(a):Math.cos(a))||.001,n=.75*e*(""+t).length;return Math.min(e/o,n)}class Gl extends Sn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return oe(t)||("number"===typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:s}=this.getUserBounds();let{min:i,max:a}=this;const o=t=>i=e?i:t,n=t=>a=s?a:t;if(t){const t=Ee(i),e=Ee(a);t<0&&e<0?n(0):t>0&&e>0&&o(0)}if(i===a){let e=0===a?1:Math.abs(.05*a);n(a+e),t||o(i-e)}this.min=i,this.max=a}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:s,stepSize:i}=t;return i?(e=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),s=s||11),s&&(e=Math.min(s,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const i={maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},a=this._range||this,o=jl(i,a);return"ticks"===t.bounds&&qe(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,s=this.max;if(super.configure(),this.options.offset&&t.length){const i=(s-e)/Math.max(t.length-1,1)/2;e-=i,s+=i}this._startValue=e,this._endValue=s,this._valueRange=s-e}getLabelForValue(t){return Fs(t,this.chart.options.locale,this.options.ticks.format)}}class Wl extends Gl{static id="linear";static defaults={ticks:{callback:Ns.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=le(t)?t:0,this.max=le(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,s=Ge(this.options.ticks.minRotation),i=(t?Math.sin(s):Math.cos(s))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,a.lineHeight/i))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}Ns.formatters.logarithmic;Ns.formatters.numeric;const Kl={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Zl=Object.keys(Kl);function Xl(t,e){return t-e}function Yl(t,e){if(oe(e))return null;const s=t._adapter,{parser:i,round:a,isoWeekday:o}=t._parseOpts;let n=e;return"function"===typeof i&&(n=i(n)),le(n)||(n="string"===typeof i?s.parse(n,i):s.parse(n)),null===n?null:(a&&(n="week"!==a||!He(o)&&!0!==o?s.startOf(n,a):s.startOf(n,"isoWeek",o)),+n)}function Jl(t,e,s,i){const a=Zl.length;for(let o=Zl.indexOf(t);o=Zl.indexOf(s);o--){const s=Zl[o];if(Kl[s].common&&t._adapter.diff(a,i,s)>=e-1)return s}return Zl[s?Zl.indexOf(s):0]}function tc(t){for(let e=Zl.indexOf(t)+1,s=Zl.length;e=e?s[i]:s[a];t[o]=!0}}else t[e]=!0}function sc(t,e,s,i){const a=t._adapter,o=+a.startOf(e[0].value,i),n=e[e.length-1].value;let r,l;for(r=o;r<=n;r=+a.add(r,1,i))l=s[r],l>=0&&(e[l].major=!0);return e}function ic(t,e,s){const i=[],a={},o=e.length;let n,r;for(n=0;n+t.value)))}initOffsets(t=[]){let e,s,i=0,a=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),i=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,s=this.getDecimalForValue(t[t.length-1]),a=1===t.length?s:(s-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;i=ts(i,0,o),a=ts(a,0,o),this._offsets={start:i,end:a,factor:1/(i+1+a)}}_generate(){const t=this._adapter,e=this.min,s=this.max,i=this.options,a=i.time,o=a.unit||Jl(a.minUnit,e,s,this._getLabelCapacity(e)),n=pe(i.ticks.stepSize,1),r="week"===o&&a.isoWeekday,l=He(r)||!0===r,c={};let p,d,h=e;if(l&&(h=+t.startOf(h,"isoWeek",r)),h=+t.startOf(h,l?"day":o),t.diff(s,e,o)>1e5*n)throw new Error(e+" and "+s+" are too far apart with stepSize of "+n+" "+o);const u="data"===i.ticks.source&&this.getDataTimestamps();for(p=h,d=0;p+t))}getLabelForValue(t){const e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}format(t,e){const s=this.options,i=s.time.displayFormats,a=this._unit,o=e||i[a];return this._adapter.format(t,o)}_tickFormatFunction(t,e,s,i){const a=this.options,o=a.ticks.callback;if(o)return he(o,[t,e,s],this);const n=a.time.displayFormats,r=this._unit,l=this._majorUnit,c=r&&n[r],p=l&&n[l],d=s[e],h=l&&p&&d&&d.major;return this._adapter.format(t,i||(h?p:c))}generateTickLabels(t){let e,s,i;for(e=0,s=t.length;e0?n:1}getDataTimestamps(){let t,e,s=this._cache.data||[];if(s.length)return s;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(t=0,e=i.length;t\n \n Used: ${t} GB\n \n \n Total: ${e} GB\n \n \n `},usagePercentage(){return this.storage.used/this.storage.total*100},overviewTitle(){return this.enableHistoryStatistics?"History Stats Overview":"Stats & Processes Overview"},filteredProcesses(){return this.search?this.processes.filter((t=>Object.values(t).some((t=>String(t).toLowerCase().includes(this.search.toLowerCase()))))):this.processes},paginatedProcesses(){const t=(this.currentPage-1)*this.perPage,e=t+this.perPage;return this.filteredProcesses.slice(t,e)},isDisabled(){return!!this.pollingEnabled||this.manualInProgress||this.backendLoading},filteredLogs(){const t=this.filterKeyword.toLowerCase();return this.logs.filter((e=>e.toLowerCase().includes(t)))},formattedLogs(){return this.filteredLogs.map((t=>this.formatLog(t)))},mapLocations(){return this.instances.data.map((t=>t.ip))},appRunningTill(){const t=12e4,e=this.callBResponse.data.expire||22e3,s=this.callBResponse.data.height+e-this.daemonBlockCount;let i=s;this.extendSubscription&&(i=this.expireOptions[this.expirePosition].value);const a=this.timestamp||Date.now(),o=s*t+a,n=i*t+a,r={current:o,new:n};return r},skin(){return(0,lt.Z)().skin.value},zelidHeader(){const t=localStorage.getItem("zelidauth"),e={zelidauth:t};return e},ipAddress(){const t=uc.get("backendURL");if(t)return`${uc.get("backendURL").split(":")[0]}:${uc.get("backendURL").split(":")[1]}`;const{hostname:e}=window.location;return`${e}`},filesToUpload(){return this.files.length>0&&this.files.some((t=>!t.uploading&&!t.uploaded&&0===t.progress))},computedFileProgress(){return this.fileProgress},computedFileProgressFD(){return this.fileProgressFD},computedFileProgressVolume(){return this.fileProgressVolume},folderContentFilter(){const t=this.folderView.filter((t=>JSON.stringify(t.name).toLowerCase().includes(this.filterFolder.toLowerCase()))),e=this.currentFolder?{name:"..",symLink:!0,isUpButton:!0}:null,s=[e,...t.filter((t=>".gitkeep"!==t.name))].filter(Boolean);return s},downloadLabel(){this.totalMB=this.backupList.reduce(((t,e)=>t+parseFloat(e.file_size)),2);const t=(this.downloadedSize/1048576).toFixed(2);return t===this.totalMB&&setTimeout((()=>{this.showProgressBar=!1}),5e3),`${t} / ${this.totalMB} MB`},isValidUrl(){const t=/^(http|https):\/\/[^\s]+$/,e=this.restoreRemoteUrl.split("?"),s=e[0];return""===this.restoreRemoteUrl||s.endsWith(".tar.gz")&&t.test(s)},urlValidationState(){return!!this.isValidUrl&&null},urlValidationMessage(){return this.isValidUrl?null:"Please enter a valid URL ending with .tar.gz"},computedRestoreRemoteURLFields(){return this.RestoreTableBuilder("URL")},computedRestoreUploadFileFields(){return this.RestoreTableBuilder("File_name")},checkpointsTable(){return[{key:"name",label:"Name",thStyle:{width:"70%"}},{key:"date",label:"Date",thStyle:{width:"20%"}},{key:"action",label:"Action",thStyle:{width:"5%"}}]},componentsTable1(){return[{key:"component",label:"Component Name",thStyle:{width:"200px"}},{key:"file_url",label:"URL"},{key:"file_size",label:"Size",thStyle:{width:"100px"}},{key:"actions",label:"Actions",thStyle:{width:"117px"},class:"text-center"}]},componentAvailableOptions(){return 1===this.components.length&&(this.selectedBackupComponents=this.components),this.components.filter((t=>-1===this.selectedBackupComponents.indexOf(t)))},remoteFileComponents(){return 1===this.components.length&&(this.restoreRemoteFile=this.components[0],!0)},remoteUrlComponents(){return 1===this.components.length&&(this.restoreRemoteUrlComponent=this.components[0],!0)},isComposeSingle(){return this.appSpecification.version<=3||1===this.appSpecification.compose?.length},selectedOptionText(){const t=this.options.flatMap((t=>t.options)).find((t=>t===this.selectedCmd));return t||""},selectedOptionTextStyle(){return{color:"red",backgroundColor:"rgba(128, 128, 128, 0.1)",fontWeight:"bold",padding:"4px 8px",borderRadius:"4px",marginRight:"10px",marginLeft:"10px"}},...(0,z.rn)("flux",["config","privilege"]),instancesLocked(){try{if(this.appUpdateSpecification.name&&this.marketPlaceApps.length){const t=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));if(t&&t.lockedValues&&t.lockedValues.includes("instances"))return!0}return!1}catch(t){return console.log(t),!1}},priceMultiplier(){try{if(this.appUpdateSpecification.name&&this.marketPlaceApps.length){const t=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));if(t&&t.multiplier>1)return t.multiplier*this.generalMultiplier}return this.generalMultiplier}catch(t){return console.log(t),this.generalMultiplier}},callbackValue(){const{protocol:t,hostname:e,port:s}=window.location;let i="";i+=t,i+="//";const a=/[A-Za-z]/g;if(e.split("-")[4]){const t=e.split("-"),s=t[4].split("."),a=+s[0]+1;s[0]=a.toString(),s[2]="api",t[4]="",i+=t.join("-"),i+=s.join(".")}else if(e.match(a)){const t=e.split(".");t[0]="api",i+=t.join(".")}else{if("string"===typeof e&&this.$store.commit("flux/setUserIp",e),+s>16100){const t=+s+1;this.$store.commit("flux/setFluxPort",t)}i+=e,i+=":",i+=this.config.apiPort}const o=uc.get("backendURL")||i,n=`${o}/id/providesign`;return encodeURI(n)},isAppOwner(){const t=localStorage.getItem("zelidauth"),e=hc.parse(t);return!!(t&&e&&e.zelid&&this.selectedAppOwner===e.zelid)},validTill(){const t=this.timestamp+36e5;return t},subscribedTill(){if(this.appUpdateSpecification.expire){const t=this.expireOptions.find((t=>t.value===this.appUpdateSpecification.expire));if(t){const e=1e6*Math.floor((this.timestamp+t.time)/1e6);return e}const e=this.appUpdateSpecification.expire,s=12e4,i=e*s,a=1e6*Math.floor((this.timestamp+i)/1e6);return a}const t=1e6*Math.floor((this.timestamp+2592e6)/1e6);return t},isApplicationInstalledLocally(){if(this.installedApps){const t=this.installedApps.find((t=>t.name===this.appName));return!!t}return!1},constructAutomaticDomainsGlobal(){if(!this.callBResponse.data)return"loading...";if(console.log(this.callBResponse.data),!this.callBResponse.data.name)return"loading...";const t=this.callBResponse.data.name,e=t.toLowerCase();if(!this.callBResponse.data.compose){const t=JSON.parse(JSON.stringify(this.callBResponse.data.ports)),s=[`${e}.app.runonflux.io`];for(let i=0;i{for(let i=0;i=2&&s.push(` ${a} ${i}s`),t%=e[i]}return s},getNewExpireLabel(){if(-1===this.daemonBlockCount)return"Not possible to calculate expiration";const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;if(e<1)return"Application Expired";this.minutesRemaining=2*e;const s=this.minutesToString;return s.length>2?`${s[0]}, ${s[1]}, ${s[2]}`:s.length>1?`${s[0]}, ${s[1]}`:`${s[0]}`}},watch:{skin(){null!==this.memoryChart&&this.updateCharts()},noData(){null!==this.memoryChart&&this.updateCharts()},filterKeyword(){this.logs?.length>0&&this.$nextTick((()=>{this.scrollToBottom()}))},isLineByLineMode(){this.isLineByLineMode||(this.selectedLog=[]),this.logs?.length>0&&this.$nextTick((()=>{this.scrollToBottom()}))},fetchAllLogs(){this.restartPolling()},lineCount(){this.debounce((()=>this.restartPolling()),1e3)()},sinceTimestamp(){this.restartPolling()},selectedApp(t,e){e&&e!==t&&(this.filterKeyword="",this.sinceTimestamp="",this.stopPolling(),this.clearLogs()),t&&(this.handleContainerChange(),this.pollingEnabled&&this.startPolling())},selectedContainerMonitoring(t){t&&(this.buttonStats=!1,this.enableHistoryStatistics?(this.stopPollingStats(),this.fetchStats()):(this.timerStats&&this.stopPollingStats(),null!==this.selectedContainerMonitoring&&this.startPollingStats(),this.clearCharts()))},refreshRateMonitoring(){this.enableHistoryStatistics?this.stopPollingStats():(this.timerStats&&this.stopPollingStats(),this.startPollingStats())},isComposeSingle(t){t&&this.appSpecification.version>=4&&(this.selectedApp=this.appSpecification.compose[0].name,this.selectedAppVolume=this.appSpecification.compose[0].name,this.selectedContainerMonitoring=this.appSpecification.compose[0].name)},appUpdateSpecification:{handler(){this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)},deep:!0},expirePosition:{handler(){this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)}},isPrivateApp(t){this.appUpdateSpecification.version>=7&&!1===t&&(this.appUpdateSpecification.nodes=[],this.appUpdateSpecification.compose.forEach((t=>{t.secrets="",t.repoauth=""})),this.selectedEnterpriseNodes=[]),this.allowedGeolocations={},this.forbiddenGeolocations={},this.dataToSign="",this.signature="",this.timestamp=null,this.dataForAppUpdate={},this.updateHash="",this.testError=!1,this.output=[],null!==this.websocket&&(this.websocket.close(),this.websocket=null)}},created(){this.fluxDriveUploadTask=[],this.fluxDriveEndPoint="https://mws.fluxdrive.runonflux.io"},mounted(){const{hostname:t}=window.location,e=/[A-Za-z]/g;t.match(e)?this.ipAccess=!1:this.ipAccess=!0;const s=this;this.$nextTick((()=>{window.addEventListener("resize",s.onResize)})),this.getZelidAuthority(),this.initMMSDK(),this.callBResponse.data="",this.callBResponse.status="",this.appSpecification={},this.callResponse.data="",this.callResponse.status="",this.monitoringStream={},this.appExec.cmd="",this.appExec.env="",this.checkFluxCommunication(),this.getAppOwner(),this.getGlobalApplicationSpecifics(),this.appsDeploymentInformation(),this.getGeolocationData(),this.getMarketPlace(),this.getMultiplier(),this.getEnterpriseNodes(),this.getDaemonBlockCount()},beforeDestroy(){this.stopPolling(),this.stopPollingStats(),window.removeEventListener("resize",this.onResize)},methods:{getProgressVariant(){const t=this.usagePercentage;return t>=95?"danger":t>=75?"warning":"success"},async logout(){if(!this.logoutTigger){this.logoutTigger=!0;const e=localStorage.getItem("zelidauth"),s=hc.parse(e);localStorage.removeItem("zelidauth"),this.$store.commit("flux/setPrivilege","none"),this.$store.commit("flux/setZelid",""),console.log(s),dt.Z.logoutCurrentSession(e).then((t=>{console.log(t),"error"===t.data.status?console.log(t.data.data.message):(this.showToast("success",t.data.data.message),"/"===this.$route.path?window.location.reload():this.$router.push({name:"home"}))})).catch((t=>{console.log(t),this.showToast("danger",t.toString())}));try{await X.ZP.auth().signOut()}catch(t){console.log(t)}}},enableHistoryStatisticsChange(){this.buttonStats=!1,this.noData=!1,this.enableHistoryStatistics?(this.stopPollingStats(),this.clearCharts(),this.fetchStats()):(this.clearCharts(),this.startPollingStats())},LimitChartItems(t){const e=t.data.datasets[0].data.length;if(e>this.selectedPoints){const s=e-this.selectedPoints;t.data.labels=t.data.labels.slice(s),t.data.datasets.forEach((t=>{t.data=t.data.slice(s)})),t.update({duration:800,lazy:!1,easing:"easeOutBounce"})}},async scrollToPagination(){await this.$nextTick(),window.scrollTo(0,document.body.scrollHeight)},getHddByName(t,e){if(t?.compose){const s=t.compose.find((t=>t.name===e));return s.hdd}return t.hdd},getCpuByName(t,e){if(t?.compose){const s=t.compose.find((t=>t.name===e));return s.cpu}return t.cpu},processStatsData(t,e=null){console.log(t);const s=t.memory_stats.limit;this.memoryLimit=s;const i=t.memory_stats?.usage??null,a=i,o=(i/s*100).toFixed(1),n=t.cpu_stats.cpu_usage.total_usage-t.precpu_stats.cpu_usage.total_usage;console.log(n);const r=t.cpu_stats.system_cpu_usage-t.precpu_stats.system_cpu_usage;console.log(r);const l=t.cpu_stats.online_cpus,{nanoCpus:c}=t;let p;p=this.appSpecification.version>=4?this.getCpuByName(this.appSpecification,this.selectedContainerMonitoring):this.appSpecification.cpu;const d=(n/r*l).toFixed(2)||0,h=(d/(c/p/1e9)*100/100).toFixed(2),u=(d/(c/p/1e9)*100/p).toFixed(2);this.cpuSet=p;const m=t.blkio_stats.io_service_bytes_recursive?t.blkio_stats.io_service_bytes_recursive.find((t=>"read"===t.op.toLowerCase()))?.value||0:null,f=t.blkio_stats.io_service_bytes_recursive?t.blkio_stats.io_service_bytes_recursive.find((t=>"write"===t.op.toLowerCase()))?.value||0:null,g=t.networks?.eth0?.rx_bytes??null,b=t.networks?.eth0?.tx_bytes??null,v=t.disk_stats?.bind??null;let y;y=this.appSpecification.version>=4?this.getHddByName(this.appSpecification,this.selectedContainerMonitoring):this.appSpecification.hdd,this.diskBindLimit=1024*Number(y)*1024*1024,this.diskUsagePercentage=v/this.diskBindLimit*100;const x=t.disk_stats?.volume??null,w=t.disk_stats?.rootfs??null;console.log("CPU Size:",h),console.log("CPU Percent:",u),console.log("Memory Usage:",a),console.log("Memory Usage (%):",o),console.log("Network RX Bytes:",g),console.log("Network TX Bytes:",b),console.log("I/O Read Bytes:",m),console.log("I/O Write Bytes:",f),console.log("Disk Usage Mounts:",v),console.log("Disk Usage Volume:",x),console.log("Disk Usage RootFS:",w),this.insertChartData(u,a,o,g,b,m,f,v,x,w,h,e)},async fetchStats(){try{if(this.appSpecification.version>=4&&!this.selectedContainerMonitoring)return console.error("No container selected"),void(this.timerStats&&this.stopPollingStats());if(3!==this.$refs.managementTabs?.currentTab)return;this.enableHistoryStatistics&&this.clearCharts();const t=this.selectedContainerMonitoring,e=this.selectedContainerMonitoring?`${this.selectedContainerMonitoring}_${this.appSpecification.name}`:this.appSpecification.name;let s;this.additionalMessage="",s=this.enableHistoryStatistics?await this.executeLocalCommand(`/apps/appmonitor/${e}/${this.selectedTimeRange}`):await this.executeLocalCommand(`/apps/appstats/${e}`);const i=await this.executeLocalCommand(`/apps/appinspect/${e}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else if("error"===i.data.status)this.showToast("danger",i.data.data.message||i.data.data);else{this.enableHistoryStatistics||this.fetchProcesses(e,t);const a=i.data,o=a.data?.State?.Status;if("running"!==o&&!this.enableHistoryStatistics)return this.noData=!0,this.additionalMessage="exited"===o?"(Container marked as stand by)":"(Container not running)",void this.stopPollingStats(!0);let n;n=s.data?.data?.lastDay?s.data.data.lastDay.reverse():s.data.data,Array.isArray(n)?n.forEach((t=>{this.processStatsData(t.data,t.timestamp)})):this.processStatsData(n),t===this.selectedContainerMonitoring?this.updateCharts():this.clearCharts()}}catch(t){console.error("Error fetching container data:",t),this.stopPollingStats(!0)}},updateAxes(){1===this.memoryChart.data.labels.length&&(this.memoryChart.options.scales.y.max=1.2*this.memoryLimit,this.memoryChart.options.scales.y1.max=120),1===this.cpuChart.data.labels.length&&(this.cpuChart.options.scales.y.max=(1.35*this.cpuSet).toFixed(1),this.cpuChart.options.scales.y1.max=135)},insertChartData(t,e,s,i,a,o,n,r,l,c,p,d=null){const h=null===d?(new Date).toLocaleTimeString():new Date(d).toLocaleTimeString();if(null!==e&&(this.LimitChartItems(this.memoryChart),this.memoryChart.data.labels.push(h),this.memoryChart.data.datasets[0].data.push(e),this.memoryChart.data.datasets[1].data.push(s)),Number.isNaN(Number(p))||Number.isNaN(Number(t))||(this.LimitChartItems(this.cpuChart),this.cpuChart.data.labels.push(h),this.cpuChart.data.datasets[0].data.push(p),this.cpuChart.data.datasets[1].data.push(t)),null!==i&&null!==a&&(this.LimitChartItems(this.networkChart),this.networkChart.data.labels.push(h),this.networkChart.data.datasets[0].data.push(i),this.networkChart.data.datasets[1].data.push(a)),null!==o&&null!==n&&(this.LimitChartItems(this.ioChart),this.ioChart.data.labels.push(h),this.ioChart.data.datasets[0].data.push(o),this.ioChart.data.datasets[1].data.push(n)),null!==r&&(this.LimitChartItems(this.diskPersistentChart),this.diskPersistentChart.data.labels.push(h),this.diskPersistentChart.data.datasets[0].data.push(r)),null!==l&&this.diskPersistentChart.data.datasets[1].data.push(l),this.diskPersistentChart.data?.datasets[1]?.data){const t=Array.isArray(this.diskPersistentChart.data.datasets[1].data)&&this.diskPersistentChart.data.datasets[1].data.some((t=>t>0));this.diskPersistentChart.data.datasets[1].hidden=!t}null!==c&&(this.LimitChartItems(this.diskFileSystemChart),this.diskFileSystemChart.data.labels.push(h),this.diskFileSystemChart.data.datasets[0].data.push(c)),this.noData=!0,this.updateAxes()},updateCharts(){this.memoryChart.update(),this.cpuChart.update(),this.networkChart.update(),this.ioChart.update(),this.diskPersistentChart.update(),this.diskFileSystemChart.update()},formatDataSize(t,e={base:10,round:1}){if(t<=5)return`${t} B`;const s=10===e.base?1e3:1024,i=10===e.base?["B","KB","MB","GB"]:["B","KiB","MiB","GiB"];if(0===t)return"0 B";let a=t,o=0;while(a>=s&&o({uid:t[0],pid:t[1],ppid:t[2],c:t[3],stime:t[4],tty:t[5],time:t[6],cmd:t[7]}))):(this.processes=[],console.error("Selected container has changed. Proccess list discarded."))}catch(s){console.error("Error fetching processes:",s)}},initCharts(){this.memoryChart&&(this.memoryChart.destroy(),this.cpuChart.destroy(),this.networkChart.destroy(),this.ioChart.destroy(),this.diskPersistentChart.destroy(),this.diskFileSystemChart.destroy());const t=document.getElementById("memoryChart").getContext("2d"),e=document.getElementById("cpuChart").getContext("2d"),s=document.getElementById("networkChart").getContext("2d"),i=document.getElementById("ioChart").getContext("2d"),a=document.getElementById("diskPersistentChart").getContext("2d"),o=document.getElementById("diskFileSystemChart").getContext("2d"),n={id:"noDataPlugin",beforeDraw:t=>{if(t.data.datasets.every((t=>0===t.data.length))&&!0===this.noData){const{ctx:e,width:s,height:i}=t;e.save();const a=Math.min(s,i)/14;e.font=`400 ${a}px Arial`,"dark"===this.skin?e.fillStyle="rgba(255, 255, 255, 0.6)":e.fillStyle="rgba(0, 0, 0, 0.6)",e.textAlign="center",e.textBaseline="middle",e.translate(s/2,i/2),e.fillText("No Data Available",0,0);const o=this.additionalMessage||"",n=.7*a;e.font=`400 ${n}px Arial`,e.fillText(o,0,a),e.restore()}}};this.diskPersistentChart=new mr(a,{type:"line",data:{labels:[],datasets:[{label:"Bind",data:[],fill:!0,backgroundColor:"rgba(119,255,132,0.3)",borderColor:"rgba(119,255,132,0.6)",tension:.4},{label:"Volume",data:[],borderColor:"rgba(155,99,132,1)",borderDash:[5,5],pointRadius:2,borderWidth:2,tension:.5,fill:!1}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s,{base:2,round:1})}`},footer:()=>[`Available Bind Size: ${this.formatDataSize(this.diskBindLimit,{base:2,round:1})}`,`Bind Usage (%): ${this.diskUsagePercentage.toFixed(2)}%`]}},legend:{display:!0,labels:{filter:t=>{if(!this.diskPersistentChart)return!0;if(1===t.datasetIndex){const e=this.diskPersistentChart.data.datasets[t.datasetIndex]?.data,s=Array.isArray(e)&&e.some((t=>t>0));return s}return!0}}}}},plugins:[n]}),this.diskFileSystemChart=new mr(o,{type:"line",data:{labels:[],datasets:[{label:"File System (RootFS)",data:[],fill:!0,backgroundColor:"rgba(159,155,132,0.3)",borderColor:"rgba(159,155,132,0.6)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s,{base:2,round:1})}`}}}}},plugins:[n]}),this.memoryChart=new mr(t,{type:"line",data:{labels:[],datasets:[{label:"Memory Allocated",data:[],fill:!0,backgroundColor:"rgba(151,187,205,0.4)",borderColor:"rgba(151,187,205,0.6)",yAxisID:"y",pointRadius:2,borderWidth:2,tension:.4},{label:"Memory Utilization (%)",data:[],fill:!1,borderColor:"rgba(255,99,132,1)",borderDash:[5,5],yAxisID:"y1",pointRadius:2,borderWidth:2,tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{id:"y",title:{display:!0},beginAtZero:!0,precision:0,ticks:{callback:t=>this.formatDataSize(t,{base:2,round:1})}},y1:{id:"y1",title:{display:!0},beginAtZero:!0,position:"right",grid:{display:!1},ticks:{callback:t=>`${t}%`}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return e.includes("%")?`Memory Utilization: ${s}%`:`${e}: ${this.formatDataSize(s,{base:2,round:1})}`},footer:()=>`Available Memory: ${this.formatDataSize(this.memoryLimit,{base:2,round:1})}`}}}},plugins:[n]}),this.cpuChart=new mr(e,{type:"line",data:{labels:[],datasets:[{label:"CPU Allocated",data:[],fill:!0,backgroundColor:"rgba(255,99,132,0.4)",borderColor:"rgba(255,99,132,0.6)",tension:.4},{label:"CPU Utilization (%)",fill:!1,borderColor:"rgba(255,99,132,1)",borderDash:[5,5],yAxisID:"y1",pointRadius:2,borderWidth:2,tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{id:"y",title:{display:!0},beginAtZero:!0,ticks:{callback:t=>`${t} CPU`}},y1:{id:"y1",title:{display:!0},beginAtZero:!0,position:"right",grid:{display:!1},ticks:{callback:t=>`${t}%`}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return e.includes("%")?`CPU Utilization: ${s}%`:`CPU Allocated: ${s} CPU`},footer:()=>`Available CPU Core(s): ${this.cpuSet}`}}}},plugins:[n]}),this.networkChart=new mr(s,{type:"line",data:{labels:[],datasets:[{label:"RX on eth0",data:[],fill:!0,backgroundColor:"rgba(99,255,132,0.4)",borderColor:"rgba(99,255,132,0.6)",tension:.4},{label:"TX on eth0",data:[],fill:!1,borderColor:"rgba(132,99,255,1)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0,text:""}},y:{title:{display:!0,text:""},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:10,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s)}`}}}}},plugins:[n]}),this.ioChart=new mr(i,{type:"line",data:{labels:[],datasets:[{label:"Read",data:[],fill:!1,borderColor:"rgba(99,132,255,0.6)",tension:.4},{label:"Write",data:[],fill:!0,backgroundColor:"rgba(255,132,99,0.4)",borderColor:"rgba(255,132,99,0.6)",tension:.4}]},options:{responsive:!0,scales:{x:{title:{display:!0}},y:{title:{display:!0},beginAtZero:!0,ticks:{callback:t=>this.formatDataSize(t,{base:10,round:0})}}},plugins:{tooltip:{mode:"index",intersect:!1,callbacks:{label:t=>{const e=t.dataset.label,s=t.raw;return`${e}: ${this.formatDataSize(s)}`}}}}},plugins:[n]}),this.updateAxes()},startPollingStats(t=!1){this.timerStats||(this.timerStats=setInterval((()=>{this.fetchStats()}),this.refreshRateMonitoring)),!0===t&&(this.buttonStats=!1)},stopPollingStats(t=!1){clearInterval(this.timerStats),this.timerStats=null,!0===t?this.buttonStats=!0:this.noData=!1},clearCharts(){this.memoryChart&&(this.noData=!1,this.memoryChart.data.labels=[],this.memoryChart.data.datasets.forEach((t=>{t.data=[]})),this.memoryChart.options.scales.y.max=1.2,this.memoryChart.options.scales.y1.max=120,this.memoryChart.update(),this.memoryChart.update(),this.cpuChart.data.labels=[],this.cpuChart.data.datasets.forEach((t=>{t.data=[]})),this.cpuChart.options.scales.y.max=1.2,this.cpuChart.options.scales.y1.max=120,this.cpuChart.update(),this.networkChart.data.labels=[],this.networkChart.data.datasets.forEach((t=>{t.data=[]})),this.networkChart.update(),this.ioChart.data.labels=[],this.ioChart.data.datasets.forEach((t=>{t.data=[]})),this.ioChart.update(),this.diskPersistentChart.data.labels=[],this.diskPersistentChart.data.datasets.forEach((t=>{t.data=[]})),this.diskPersistentChart.update(),this.diskFileSystemChart.data.labels=[],this.diskFileSystemChart.data.datasets.forEach((t=>{t.data=[]})),this.diskFileSystemChart.update(),this.processes=[])},extractTimestamp(t){return t.split(" ")[0]},toggleLogSelection(t){const e=this.extractTimestamp(t);this.selectedLog.includes(e)?this.selectedLog=this.selectedLog.filter((t=>t!==e)):this.selectedLog.push(e)},unselectText(){this.selectedLog=[]},async copyCode(){try{let t="";t=this.isLineByLineMode&&this.selectedLog.length>0?this.filteredLogs.filter((t=>this.selectedLog.includes(this.extractTimestamp(t)))).map((t=>t)).join("\n"):this.logs.join("\n");const e=/\u001b\[[0-9;]*[a-zA-Z]/g;if(t=t.replace(e,""),!this.displayTimestamps){const e=/^[^\s]+\s*/;t=t.split(/\r?\n/).map((t=>t.replace(e,""))).join("\n")}if(navigator.clipboard)await navigator.clipboard.writeText(t);else{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}this.copied=!0,setTimeout((()=>{this.copied=!1}),2e3)}catch(t){console.error("Failed to copy code:",t)}},debounce(t,e){return(...s)=>{this.debounceTimeout&&clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((()=>t(...s)),e)}},async manualFetchLogs(){this.manualInProgress=!0,await this.fetchLogsForSelectedContainer(),this.manualInProgress=!1},async fetchLogsForSelectedContainer(){if(5!==this.$refs.managementTabs?.currentTab)return;if(console.log("fetchLogsForSelectedContainer in progress..."),this.appSpecification.version>=4&&!this.selectedApp)return void console.error("No container selected");if(this.requestInProgress)return void console.log("Request in progress, skipping this call.");const t=this.selectedApp?`${this.selectedApp}_${this.appSpecification.name}`:this.appSpecification.name;this.requestInProgress=!0,this.noLogs=!1;try{const e=this.selectedApp,s=this.fetchAllLogs?"all":this.lineCount||100,i=await this.executeLocalCommand(`/apps/applogpolling/${t}/${s}/${this.sinceTimestamp}`);this.selectedApp===e?(this.logs=i.data?.logs,"success"===i.data?.status&&0===this.logs?.length&&(this.noLogs=!0),this.logs.length>0&&this.$nextTick((()=>{this.autoScroll&&this.scrollToBottom()}))):console.error("Selected container has changed. Logs discarded.")}catch(e){console.error("Error fetching logs:",e.message),this.clearLogs(),!0===this.pollingEnabled&&(this.pollingEnabled=!1,this.stopPolling())}finally{console.log("fetchLogsForSelectedContainer completed..."),this.requestInProgress=!1}},startPolling(){this.pollingInterval&&clearInterval(this.pollingInterval),this.pollingInterval=setInterval((async()=>{await this.fetchLogsForSelectedContainer()}),this.refreshRate)},stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null)},restartPolling(){this.stopPolling(),this.fetchLogsForSelectedContainer(),this.pollingEnabled&&this.startPolling()},togglePolling(){this.pollingEnabled?this.startPolling():this.stopPolling()},formatLog(t){const e=new(pt());if(this.displayTimestamps){const[s,...i]=t.split(" "),a=i.join(" ");return`${s} - ${e.toHtml(a)}`}{const s=/^[^\s]+\s*/;return e.toHtml(t.replace(s,""))}},scrollToBottom(){const t=this.$refs.logsContainer;t&&(t.scrollTop=t.scrollHeight)},clearLogs(){this.logs=[]},clearDateFilter(){this.sinceTimestamp=""},handleContainerChange(){const t=this.debounce(this.fetchLogsForSelectedContainer,300);t()},async refreshInfo(){this.backendLoading=!0,await this.getInstancesForDropDown(),this.selectedIpChanged(),this.getApplicationLocations().catch((()=>{this.isBusy=!1,this.showToast("danger","Error loading application locations")})),setTimeout((()=>{this.backendLoading=!1}),1e3)},copyMessageToSign(){const{copy:t}=(0,Z.VPI)({source:this.dataToSign,legacy:!0});t(),this.tooltipText="Copied!",setTimeout((()=>{this.$refs.copyButtonRef&&(this.$refs.copyButtonRef.blur(),this.tooltipText="")}),1e3),setTimeout((()=>{this.tooltipText="Copy to clipboard"}),1500)},sortNameFolder(t,e){return(t.isDirectory?`..${t.name}`:t.name).localeCompare(e.isDirectory?`..${e.name}`:e.name)},sortTypeFolder(t,e){return t.isDirectory&&e.isFile?-1:t.isFile&&e.isDirectory?1:0},sort(t,e,s,i){return"name"===s?this.sortNameFolder(t,e,i):"type"===s?this.sortTypeFolder(t,e,i):"modifiedAt"===s?t.modifiedAt>e.modifiedAt?-1:t.modifiedAte.size?-1:t.size""!==t)),s=e.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${s}`,this.loadFolder(this.currentFolder)},async loadFolder(t,e=!1){try{this.filterFolder="",e||(this.folderView=[]),this.loadingFolder=!0;const s=await this.executeLocalCommand(`/apps/getfolderinfo/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(t)}`);this.loadingFolder=!1,"success"===s.data.status?(this.folderView=s.data.data,console.log(this.folderView)):this.showToast("danger",s.data.data.message||s.data.data)}catch(s){this.loadingFolder=!1,console.log(s.message),this.showToast("danger",s.message||s)}},async createFolder(t){try{let e=t;""!==this.currentFolder&&(e=`${this.currentFolder}/${t}`);const s=await this.executeLocalCommand(`/apps/createfolder/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(e)}`);"error"===s.data.status?"EEXIST"===s.data.data.code?this.showToast("danger",`Folder ${t} already exists`):this.showToast("danger",s.data.data.message||s.data.data):(this.loadFolder(this.currentFolder,!0),this.createDirectoryDialogVisible=!1)}catch(e){this.loadingFolder=!1,console.log(e.message),this.showToast("danger",e.message||e)}this.newDirName=""},cancelDownload(t){this.abortToken[t].cancel(`Download of ${t} cancelled`),this.downloaded[t]="",this.total[t]=""},async download(t,e=!1){try{const s=this,i=this.currentFolder,a=i?`${i}/${t}`:t,o={headers:this.zelidHeader,responseType:"blob",onDownloadProgress(i){const{loaded:a,total:o,lengthComputable:n}=i;if(n){const i=a/o*100;e?s.updateFileProgressVolume(`${t}.zip`,i):s.updateFileProgressVolume(t,i)}else console.log("Total file size is unknown. Cannot compute progress percentage."),e?s.updateFileProgressVolume(`${t}.zip`,"Downloading..."):s.updateFileProgressVolume(t,"Downloading...")}};let n;if(e?(this.showToast("info","Directory download initiated. Please wait..."),n=await this.executeLocalCommand(`/apps/downloadfolder/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(a)}`,null,o)):n=await this.executeLocalCommand(`/apps/downloadfile/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(a)}`,null,o),console.log(n),!e&&n.data&&200===n.status&&s.updateFileProgressVolume(t,100),"error"===n.data.status)this.showToast("danger",n.data.data.message||n.data.data);else{const s=window.URL.createObjectURL(new Blob([n.data])),i=document.createElement("a");i.href=s,e?i.setAttribute("download",`${t}.zip`):i.setAttribute("download",t),document.body.appendChild(i),i.click()}}catch(s){console.log(s.message),s.message?s.message.startsWith("Download")||this.showToast("danger",s.message):this.showToast("danger",s)}},beautifyValue(t){const e=t.split(".");return e[0].length>=4&&(e[0]=e[0].replace(/(\d)(?=(\d{3})+$)/g,"$1,")),e.join(".")},refreshFolder(){const t=this.currentFolder.split("/").filter((t=>""!==t)),e=t.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${e}`,this.loadFolder(this.currentFolder,!0),this.storageStats()},refreshFolderSwitch(){this.currentFolder="";const t=this.currentFolder.split("/").filter((t=>""!==t)),e=t.map((t=>` ${t} `)).join("/");this.inputPathValue=`/${e}`,this.loadFolder(this.currentFolder,!0),this.storageStats()},async deleteFile(t){try{const e=this.currentFolder,s=e?`${e}/${t}`:t,i=await this.executeLocalCommand(`/apps/removeobject/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(s)}`);"error"===i.data.status?this.showToast("danger",i.data.data.message||i.data.data):(this.refreshFolder(),this.showToast("success",`${t} deleted`))}catch(e){this.showToast("danger",e.message||e)}},rename(t){this.renameDialogVisible=!0;let e=t;""!==this.currentFolder&&(e=`${this.currentFolder}/${t}`),this.fileRenaming=e,this.newName=t},async confirmRename(){this.renameDialogVisible=!1;try{const t=this.fileRenaming,e=this.newName,s=await this.executeLocalCommand(`/apps/renameobject/${this.appName}/${this.selectedAppVolume}/${encodeURIComponent(t)}/${e}`);console.log(s),"error"===s.data.status?this.showToast("danger",s.data.data.message||s.data.data):(t.includes("/")?this.showToast("success",`${t.split("/").pop()} renamed to ${e}`):this.showToast("success",`${t} renamed to ${e}`),this.loadFolder(this.currentFolder,!0))}catch(t){this.showToast("danger",t.message||t)}},upFolder(){this.changeFolder("..")},onResize(){this.windowWidth=window.innerWidth},handleRadioClick(){"Upload File"===this.selectedRestoreOption&&this.loadBackupList(this.appName,"upload","files"),"FluxDrive"===this.selectedRestoreOption&&this.getFluxDriveBackupList(),console.log("Radio button clicked. Selected option:",this.selectedOption)},getUploadFolder(){if(this.selectedIp){const t=this.selectedIp.split(":")[0],e=this.selectedIp.split(":")[1]||16127;if(this.currentFolder){const s=encodeURIComponent(this.currentFolder);return this.ipAccess?`http://${t}:${e}/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}/${s}`:`https://${t.replace(/\./g,"-")}-${e}.node.api.runonflux.io/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}/${s}`}return this.ipAccess?`http://${t}:${e}/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}`:`https://${t.replace(/\./g,"-")}-${e}.node.api.runonflux.io/ioutils/fileupload/volume/${this.appName}/${this.selectedAppVolume}`}},getUploadFolderBackup(t){const e=this.selectedIp.split(":")[0],s=this.selectedIp.split(":")[1]||16127,i=encodeURIComponent(t);return this.ipAccess?`http://${e}:${s}/ioutils/fileupload/backup/${this.appName}/${this.restoreRemoteFile}/null/${i}`:`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/ioutils/fileupload/backup/${this.appName}/${this.restoreRemoteFile}/null/${i}`},convertVolumeSize(t,e="auto",s=0,i=!0){const a={B:1,KB:1024,MB:1048576,GB:1073741824},o=(t,e)=>t/a[e.toUpperCase()],n=(t,e)=>{const a="B"===e?t.toFixed(0):t.toFixed(s);return i?a:`${a} ${e}`},r=+t;if(Number.isNaN(r))return console.error("Invalid size parameter"),"N/A";if("auto"===e){let t,e=r;return Object.keys(a).forEach((s=>{const i=o(r,s);i>=1&&(void 0===e||it/i[e.toUpperCase()],o=(t,e)=>{const i="B"===e?t.toFixed(0):t.toFixed(s);return`${i} ${e}`};let n;if(Array.isArray(t)&&t.length>0)n=+t.reduce(((t,e)=>t+(e.file_size||0)),0);else{if("number"!==typeof+t)return console.error("Invalid sizes parameter"),"N/A";n=+t}if(isNaN(n))return console.error("Total size is not a valid number"),"N/A";if("auto"===e){let t,e=n;return Object.keys(i).forEach((s=>{const i=a(n,s);i>=1&&(void 0===e||ie.file_name===t[0].name&&e.component!==this.restoreRemoteFile));if(-1!==s)return this.showToast("warning",`'${e.name}' is already in the upload queue for other component.`),!1;const i=this.files.findIndex((t=>t.component===this.restoreRemoteFile));-1!==i?this.$set(this.files,i,{selected_file:e,uploading:!1,uploaded:!1,progress:0,path:`${this.volumePath}/backup/upload`,component:this.restoreRemoteFile,file_name:`backup_${this.restoreRemoteFile.toLowerCase()}.tar.gz`,file_size:e.size}):this.files.push({selected_file:e,uploading:!1,uploaded:!1,progress:0,path:`${this.volumePath}/backup/upload`,component:this.restoreRemoteFile,file_name:`backup_${this.restoreRemoteFile.toLowerCase()}.tar.gz`,file_size:e.size})}return!0},removeFile(t){this.files=this.files.filter((e=>e.selected_file.name!==t.selected_file.name))},async processChunks(t,e){const s={restore_upload:"restoreFromUploadStatus",restore_remote:"restoreFromRemoteURLStatus",backup:"tarProgress",restore_fluxdrive:"restoreFromFluxDriveStatus"};for(const i of t)if(""!==i){const t=s[e];t&&(this[t]=i,"restore_upload"===e&&i.includes("Error:")?(console.log(i),this.changeAlert("danger",i,"showTopUpload",!0)):"restore_upload"===e&&i.includes("Finalizing")?setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopUpload",!0)}),5e3):"restore_remote"===e&&i.includes("Error:")?this.changeAlert("danger",i,"showTopRemote",!0):"restore_remote"===e&&i.includes("Finalizing")?setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopRemote",!0),this.restoreRemoteUrlItems=[]}),5e3):"restore_fluxdrive"===e&&i.includes("Error:")?this.changeAlert("danger",i,"showTopFluxDrive",!0):"restore_fluxdrive"===e&&i.includes("Finalizing")&&setTimeout((()=>{this.changeAlert("success","Restore completed successfully","showTopFluxDrive",!0),this.restoreRemoteUrlItems=[]}),5e3))}},changeAlert(t,e,s,i){this.alertVariant=t,this.alertMessage=e,this[s]=i},startUpload(){this.showTopUpload=!1;const t=this;return new Promise((async(e,s)=>{try{this.restoreFromUpload=!0,this.restoreFromUploadStatus="Uploading...";const s=this.files.map((t=>new Promise((async(e,s)=>{if(t.uploaded||t.uploading||!t.selected_file)e();else try{await this.upload(t),e()}catch(i){s(i)}}))));await Promise.all(s),this.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),this.restoreFromUploadStatus="Initializing restore jobs...";const i=this.buildPostBody(this.appSpecification,"restore","upload");let a;for(const t of this.files)a=this.updateJobStatus(i,t.component,"restore");const o=localStorage.getItem("zelidauth"),n={zelidauth:o,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},r=this.selectedIp.split(":")[0],l=this.selectedIp.split(":")[1]||16127;let c=`https://${r.replace(/\./g,"-")}-${l}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(c=`http://${r}:${l}/apps/appendrestoretask`);const p=await fetch(c,{method:"POST",body:JSON.stringify(a),headers:n}),d=p.body.getReader();await new Promise(((e,s)=>{function i(){d.read().then((async({done:s,value:a})=>{if(s)return void e();const o=new TextDecoder("utf-8").decode(a),n=o.split("\n");await t.processChunks(n,"restore_upload"),i()}))}i()})),this.restoreFromUpload=!1,this.restoreFromUploadStatus="",this.loadBackupList(this.appName,"upload","files"),e()}catch(i){s(i)}}))},async upload(t){return new Promise(((e,s)=>{const i=this;if("undefined"===typeof XMLHttpRequest)return void s("XMLHttpRequest is not supported.");const a=new XMLHttpRequest,o=this.getUploadFolderBackup(t.file_name);a.upload&&(a.upload.onprogress=function(e){e.total>0&&(e.percent=e.loaded/e.total*100),t.progress=e.percent});const n=new FormData;n.append(t.selected_file.name,t.selected_file),t.uploading=!0,a.onerror=function(e){i.restoreFromUpload=!1,i.restoreFromUploadStatus="",i.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),i.showToast("danger",`An error occurred while uploading ${t.selected_file.name}, try to relogin`),s(e)},a.onload=function(){if(a.status<200||a.status>=300)return console.error(a.status),i.restoreFromUpload=!1,i.restoreFromUploadStatus="",i.files.forEach((t=>{t.uploading=!1,t.uploaded=!1,t.progress=0})),i.showToast("danger",`An error occurred while uploading '${t.selected_file.name}' - Status code: ${a.status}`),void s(a.status);t.uploaded=!0,t.uploading=!1,i.$emit("complete"),e()},a.open("post",o,!0);const r=this.zelidHeader||{},l=Object.keys(r);for(let t=0;tt+parseFloat(e.file_size)),0)},RestoreTableBuilder(t){const e=t.toString(),s=e.split("_")[0];return[{key:"component",label:"Component Name",thStyle:{width:"25%"}},{key:t.toString().toLowerCase(),label:s,thStyle:{width:"70%"}},{key:"file_size",label:"Size",thStyle:{width:"10%"}},{key:"actions",label:"Action",thStyle:{width:"5%"}}]},addAllTags(){this.selectedBackupComponents=[...this.selectedBackupComponents,...this.components]},clearSelected(){this.$refs.selectableTable.clearSelected()},selectAllRows(){this.$refs.selectableTable.selectAllRows()},selectStorageOption(t){this.selectedStorageMethod=t},buildPostBody(t,e,s=""){const i={appname:t.name,..."restore"===e?{type:s}:{},[e]:t.compose.map((t=>({component:t.name,[e]:!1,..."restore"===e&&"remote"===s?{url:""}:{}})))};return i},updateJobStatus(t,e,s,i=[]){const a=t[s].find((t=>t.component===e));if(a){if(a[s]=!0,"restore"===s&&"remote"===t?.type){const t=i.find((t=>t.component===e));t?(a.url=t.url||"",console.log(`${t.url}`)):console.log(`URL info not found for component ${e}.`)}console.log(`Status for ${e} set to true for ${s}.`)}else console.log(`Component ${e} not found in the ${s} array.`);return t},async createBackup(t,e){if(0===this.selectedBackupComponents?.length)return;this.backupProgress=!0,this.tarProgress="Initializing backup jobs...";const s=localStorage.getItem("zelidauth"),i={zelidauth:s,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},a=this.buildPostBody(this.appSpecification,"backup");let o;for(const h of e)o=this.updateJobStatus(a,h,"backup");const n=this.selectedIp.split(":")[0],r=this.selectedIp.split(":")[1]||16127;let l=`https://${n.replace(/\./g,"-")}-${r}.node.api.runonflux.io/apps/appendbackuptask`;this.ipAccess&&(l=`http://${n}:${r}/apps/appendbackuptask`);const c=await fetch(l,{method:"POST",body:JSON.stringify(o),headers:i}),p=this,d=c.body.getReader();await new Promise(((t,e)=>{function s(){d.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await p.processChunks(o,"backup"),s()}))}s()})),setTimeout((()=>{this.backupProgress=!1}),5e3),this.loadBackupList()},onRowSelected(t){this.backupToUpload=t.map((t=>{const e=t.component,s=this.backupList.find((t=>t.component===e));return{component:e,file:s?s.file:null,file_size:s?s.file_size:null,file_name:s?s.file_name:null,create:s?s.create:null}})).filter((t=>null!==t.file))},applyFilter(){this.$nextTick((()=>{this.checkpoints.forEach((t=>{t._showDetails=!0}))})),console.log(this.appSpecification.compose),this.components=this.appSpecification.compose.map((t=>t.name))},onFilteredBackup(t){this.totalRows=t.length,this.currentPage=1},addAllBackupComponents(t){const e=this.checkpoints.find((e=>e.timestamp===t)),s=e.components.map((t=>({component:t.component,file_url:t.file_url,timestamp:e.timestamp,file_size:t.file_size})));this.newComponents=s},addComponent(t,e){const s=this.newComponents.findIndex((e=>e.component===t.component));-1!==s?this.$set(this.newComponents,s,{timestamp:e,component:t.component,file_url:t.file_url,file_size:t.file_size}):this.newComponents.push({component:t.component,timestamp:e,file_url:t.file_url,file_size:t.file_size})},formatName(t){return`backup_${t.timestamp}`},formatDateTime(t,e=!1){const s=t>1e12,i=s?new Date(t):new Date(1e3*t);return e&&i.setHours(i.getHours()+24),i.toLocaleString()},addRemoteFile(){this.selectFiles()},async restoreFromRemoteFile(){const t=localStorage.getItem("zelidauth");this.showTopRemote=!1,this.downloadingFromUrl=!0,this.restoreFromRemoteURLStatus="Initializing restore jobs...";const e={zelidauth:t,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},s=this.buildPostBody(this.appSpecification,"restore","remote");let i;for(const p of this.restoreRemoteUrlItems)i=this.updateJobStatus(s,p.component,"restore",this.restoreRemoteUrlItems);const a=this.selectedIp.split(":")[0],o=this.selectedIp.split(":")[1]||16127;let n=`https://${a.replace(/\./g,"-")}-${o}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(n=`http://${a}:${o}/apps/appendrestoretask`);const r=await fetch(n,{method:"POST",body:JSON.stringify(i),headers:e}),l=this,c=r.body.getReader();await new Promise(((t,e)=>{function s(){c.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await l.processChunks(o,"restore_remote"),s()}))}s()})),this.downloadingFromUrl=!1,this.restoreFromRemoteURLStatus=""},async addRemoteUrlItem(t,e,s=!1){if((s||this.isValidUrl)&&""!==this.restoreRemoteUrl.trim()&&null!==this.restoreRemoteUrlComponent){if(this.remoteFileSizeResponse=await this.executeLocalCommand(`/backup/getremotefilesize/${encodeURIComponent(this.restoreRemoteUrl.trim())}/B/0/true/${this.appName}`),"success"!==this.remoteFileSizeResponse.data?.status)return void this.showToast("danger",this.remoteFileSizeResponse.data?.data.message||this.remoteFileSizeResponse.data?.massage);if(this.volumeInfoResponse=await this.executeLocalCommand(`/backup/getvolumedataofcomponent/${t}/${e}/B/0/size,available,mount`),"success"!==this.volumeInfoResponse.data?.status)return void this.showToast("danger",this.volumeInfoResponse.data?.data.message||this.volumeInfoResponse.data?.data);if(this.remoteFileSizeResponse.data.data>this.volumeInfoResponse.data.data.available)return void this.showToast("danger",`File is too large (${this.addAndConvertFileSizes(this.remoteFileSizeResponse.data.data)})...`);const s=this.restoreRemoteUrlItems.findIndex((t=>t.url===this.restoreRemoteUrl));if(-1!==s)return void this.showToast("warning",`'${this.restoreRemoteUrl}' is already in the download queue for other component.`);const i=this.restoreRemoteUrlItems.findIndex((t=>t.component===this.restoreRemoteUrlComponent));if(0===this.remoteFileSizeResponse.data.data||null===this.remoteFileSizeResponse.data.data)return;-1!==i?(this.restoreRemoteUrlItems[i].url=this.restoreRemoteUrl,this.restoreRemoteUrlItems[i].file_size=this.remoteFileSizeResponse.data.data):this.restoreRemoteUrlItems.push({url:this.restoreRemoteUrl,component:this.restoreRemoteUrlComponent,file_size:this.remoteFileSizeResponse.data.data})}},async deleteItem(t,e,s="",i=""){const a=e.findIndex((t=>t.file===s));-1!==a&&(e[a]?.selected_file||"upload"!==i||(console.log(e[a].file),await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(e[a].file)}/${this.appName}`))),e.splice(t,1)},async loadBackupList(t=this.appName,e="local",s="backupList"){const i=[];for(const a of this.components)this.volumeInfo=await this.executeLocalCommand(`/backup/getvolumedataofcomponent/${t}/${a}/B/0/mount`),this.volumePath=this.volumeInfo.data?.data,this.backupFile=await this.executeLocalCommand(`/backup/getlocalbackuplist/${encodeURIComponent(`${this.volumePath.mount}/backup/${e}`)}/B/0/true/${t}`),this.backupItem=this.backupFile.data?.data,Array.isArray(this.backupItem)&&(this.BackupItem={isActive:!1,component:a,create:+this.backupItem[0].create,file_size:this.backupItem[0].size,file:`${this.volumePath.mount}/backup/${e}/${this.backupItem[0].name}`,file_name:`${this.backupItem[0].name}`},i.push(this.BackupItem));console.log(JSON.stringify(s)),this[s]=i},allDownloadsCompleted(){return this.computedFileProgress.every((t=>100===t.progress))},allDownloadsCompletedVolume(){return this.computedFileProgressVolume.every((t=>100===t.progress))&&setTimeout((()=>{this.fileProgressVolume=this.fileProgressVolume.filter((t=>100!==t.progress))}),5e3),this.computedFileProgressVolume.every((t=>100===t.progress))},updateFileProgress(t,e,s,i,a){this.$nextTick((()=>{const t=this.fileProgress.findIndex((t=>t.fileName===a));-1!==t?this.$set(this.fileProgress,t,{fileName:a,progress:e}):this.fileProgress.push({fileName:a,progress:e})}))},updateFileProgressFD(t,e,s,i,a){this.$nextTick((()=>{const t=this.fileProgressFD.findIndex((t=>t.fileName===a));-1!==t?this.$set(this.fileProgressFD,t,{fileName:a,progress:e}):this.fileProgressFD.push({fileName:a,progress:e})}))},updateFileProgressVolume(t,e){this.$nextTick((()=>{const s=this.fileProgressVolume.findIndex((e=>e.fileName===t));-1!==s?this.$set(this.fileProgressVolume,s,{fileName:t,progress:e}):this.fileProgressVolume.push({fileName:t,progress:e})}))},rowClassFluxDriveBackups(t,e){return t&&"row"===e?"":"table-no-padding"},async deleteRestoreBackup(t,e,s=0){if(0!==s){this.newComponents=this.newComponents.filter((t=>t.timestamp!==s));try{const t=localStorage.getItem("zelidauth"),i={headers:{zelidauth:t}},a={appname:this.appName,timestamp:s},o=await dc.post(`${this.fluxDriveEndPoint}/removeCheckpoint`,a,i);if(console.error(o.data),o&&o.data&&"success"===o.data.status){const t=e.findIndex((t=>t.timestamp===s));return e.splice(t,1),this.showToast("success","Checkpoint backup removed successfully."),!0}return this.showToast("danger",o.data.data.message),!1}catch(i){console.error("Error removing checkpoint",i),this.showToast("Error removing checkpoint")}}return!1},async deleteLocalBackup(t,e,s=0){if(0===s){for(const t of e){const e=t.file;await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(e)}/${this.appName}`)}this.backupList=[],this.backupToUpload=[]}else{this.status=await this.executeLocalCommand(`/backup/removebackupfile/${encodeURIComponent(s)}/${this.appName}`);const i=e.findIndex((e=>e.component===t));e.splice(i,1)}},async downloadAllBackupFiles(t){try{this.showProgressBar=!0;const e=localStorage.getItem("zelidauth"),s=this,i={headers:{zelidauth:e},responseType:"blob",onDownloadProgress(t){const{loaded:e,total:i,target:a}=t,o=decodeURIComponent(a.responseURL),n=o.lastIndexOf("/"),r=-1!==n?o.slice(0,n):o,l=r.split("/").pop(),c=e/i*100,p=s.backupList.find((t=>t.file.endsWith(l)));s.updateFileProgress(l,c,e,i,p.component)}},a=t.map((async t=>{try{const{file:e}=t,a=e.split("/"),o=a[a.length-1],n=await this.executeLocalCommand(`/backup/downloadlocalfile/${encodeURIComponent(e)}/${s.appName}`,null,i),r=new Blob([n.data]),l=window.URL.createObjectURL(r),c=document.createElement("a");return c.href=l,c.setAttribute("download",o),document.body.appendChild(c),c.click(),document.body.removeChild(c),window.URL.revokeObjectURL(l),!0}catch(e){return console.error("Error downloading file:",e),!1}})),o=await Promise.all(a);o.every((t=>t))?console.log("All downloads completed successfully"):console.error("Some downloads failed. Check the console for details.")}catch(e){console.error("Error downloading files:",e)}finally{setTimeout((()=>{this.showProgressBar=!1,this.fileProgress=[]}),5e3)}},async checkFluxDriveUploadProgress(){const t=localStorage.getItem("zelidauth"),e={headers:{zelidauth:t}},s=[];let i=!1;for(const o of this.fluxDriveUploadTask)try{const t=await dc.get(`${this.fluxDriveEndPoint}/gettaskstatus?taskId=${o.taskId}`,e);t&&t.data&&"success"===t.data.status?(o.status=t.data.data.status.state,"downloading"===o.status?o.progress=t.data.data.status.progress/2:"uploading"===o.status?o.progress=50+t.data.data.status.progress/2:o.progress=t.data.data.status.progress,o.message=t.data.data.status.message,this.updateFileProgressFD(o.filename,o.progress,0,0,o.component),this.fluxDriveUploadStatus=t.data.data.status.message,"finished"===o.status?this.showToast("success",`${o.component} backup uploaded to FluxDrive successfully.`):"failed"===o.status?this.showToast("danger",`failed to upload ${o.component} backup to FluxDrive.${this.fluxDriveUploadStatus}`):s.push(o)):i=!0}catch(a){i=!0,console.log("error fetching upload status")}i||(this.fluxDriveUploadTask=s),this.fluxDriveUploadTask.length>0?setTimeout((()=>{this.checkFluxDriveUploadProgress()}),2e3):(this.uploadProgress=!1,this.showFluxDriveProgressBar=!1,this.fluxDriveUploadStatus="",this.fileProgressFD=[])},async uploadToFluxDrive(){try{this.uploadProgress=!0;const t=localStorage.getItem("zelidauth"),e=this,s={headers:{zelidauth:t}};let i=0;const a=this.backupToUpload.map((async t=>{try{const{file:a}=t,{component:o}=t,{file_size:n}=t,{file_name:r}=t,{create:l}=t;let c=l;Math.abs(c-i)>36e5?i=c:c=i;const p=this.selectedIp.split(":")[0],d=this.selectedIp.split(":")[1]||16127,h=`https://${p.replace(/\./g,"-")}-${d}.node.api.runonflux.io/backup/downloadlocalfile/${encodeURIComponent(a)}/${e.appName}`,u={appname:e.appName,component:o,filename:r,timestamp:c,host:h,filesize:n},m=await dc.post(`${this.fluxDriveEndPoint}/registerbackupfile`,u,s);return m&&m.data&&"success"===m.data.status?(this.fluxDriveUploadTask.push({taskId:m.data.data.taskId,filename:r,component:o,status:"in queue",progress:0}),!0):(console.error(m.data),this.showToast("danger",m.data.data.message),!1)}catch(a){return console.error("Error registering file:",a),this.showToast("danger","Error registering file(s) for upload."),!1}})),o=await Promise.all(a);o.every((t=>t))?(console.log("All uploads registered successfully"),this.showFluxDriveProgressBar=!0):console.error("Some uploads failed. Check the console for details.")}catch(t){console.error("Error registering files:",t),this.showToast("danger","Error registering file(s) for upload.")}finally{setTimeout((()=>{this.checkFluxDriveUploadProgress()}),2e3)}},async restoreFromFluxDrive(t){const e=[];for(const h of t)e.push({component:h.component,file_size:h.file_size,url:h.file_url});const s=localStorage.getItem("zelidauth");this.showTopFluxDrive=!1,this.restoringFromFluxDrive=!0,this.restoreFromFluxDriveStatus="Initializing restore jobs...";const i={zelidauth:s,"Content-Type":"application/json","Access-Control-Allow-Origin":"*",Connection:"keep-alive"},a=this.buildPostBody(this.appSpecification,"restore","remote");let o;for(const h of e)o=this.updateJobStatus(a,h.component,"restore",e);const n=this.selectedIp.split(":")[0],r=this.selectedIp.split(":")[1]||16127;let l=`https://${n.replace(/\./g,"-")}-${r}.node.api.runonflux.io/apps/appendrestoretask`;this.ipAccess&&(l=`http://${n}:${r}/apps/appendrestoretask`);const c=await fetch(l,{method:"POST",body:JSON.stringify(o),headers:i}),p=this,d=c.body.getReader();await new Promise(((t,e)=>{function s(){d.read().then((async({done:e,value:i})=>{if(e)return void t();const a=new TextDecoder("utf-8").decode(i),o=a.split("\n");await p.processChunks(o,"restore_fluxdrive"),s()}))}s()})),this.restoringFromFluxDrive=!1,this.restoreFromFluxDriveStatus=""},async getFluxDriveBackupList(){try{const t=localStorage.getItem("zelidauth"),e={headers:{zelidauth:t}},s=await dc.get(`${this.fluxDriveEndPoint}/getbackuplist?appname=${this.appName}`,e);if(s.data&&"success"===s.data.status){console.log(JSON.stringify(s.data.checkpoints)),this.tableBackup+=1;const t=s.data.checkpoints.reduce(((t,{components:e})=>(e.forEach((e=>t.add(e.component))),t)),new Set),e=[{value:"",text:"all"}];for(const s of t)e.push({value:s,text:s});this.restoreComponents=e,this.applyFilter(),this.checkpoints=s.data.checkpoints}else s.data&&"error"===s.data.status&&this.showToast("danger",s.data.data.message)}catch(t){console.error("Error receiving FluxDrive backup list",t),this.showToast("danger","Error receiving FluxDrive backup list")}},async initMMSDK(){try{await cc.init(),pc=cc.getProvider()}catch(t){console.log(t)}},connectTerminal(t){if(this.appSpecification.version>=4){const t=Object.values(this.appSpecification.compose),e=t.some((t=>t.name===this.selectedApp));if(!e)return void this.showToast("danger","Please select an container app before connecting.")}let e=0;if(!(this.selectedApp||this.appSpecification.version<=3))return void this.showToast("danger","Please select an container app before connecting.");if(null===this.selectedCmd)return void this.showToast("danger","No command selected.");if("Custom"===this.selectedCmd){if(!this.customValue)return void this.showToast("danger","Please enter a custom command.");console.log(`Custom command: ${this.customValue}`),console.log(`App name: ${t}`)}else console.log(`Selected command: ${this.selectedCmd}`),console.log(`App name: ${t}`);this.isConnecting=!0,this.terminal=new st.Terminal({allowProposedApi:!0,cursorBlink:!0,theme:{foreground:"white",background:"black"}});const s=this.selectedIp.split(":")[0],i=this.selectedIp.split(":")[1]||16127,a=localStorage.getItem("zelidauth");let o=`https://${s.replace(/\./g,"-")}-${i}.node.api.runonflux.io/terminal`;this.ipAccess&&(o=`http://${s}:${i}/terminal`),this.socket=rt.ZP.connect(o);let n="";this.enableUser&&(n=this.userInputValue),this.customValue?this.socket.emit("exec",a,t,this.customValue,this.envInputValue,n):this.socket.emit("exec",a,t,this.selectedCmd,this.envInputValue,n),this.terminal.open(this.$refs.terminalElement);const r=new it.FitAddon;this.terminal.loadAddon(r);const l=new at.WebLinksAddon;this.terminal.loadAddon(l);const c=new ot.Unicode11Addon;this.terminal.loadAddon(c);const p=new nt.SerializeAddon;this.terminal.loadAddon(p),this.terminal._initialized=!0,this.terminal.onResize((t=>{const{cols:e,rows:s}=t;console.log("Resizing to",{cols:e,rows:s}),this.socket.emit("resize",{cols:e,rows:s})})),this.terminal.onTitleChange((t=>{console.log(t)})),window.onresize=()=>{r.fit()},this.terminal.onData((t=>{this.socket.emit("cmd",t)})),this.socket.on("error",(t=>{this.showToast("danger",t),this.disconnectTerminal()})),this.socket.on("show",(t=>{0===e&&(e=1,this.customValue||(this.socket.emit("cmd","export TERM=xterm\n"),"/bin/bash"===this.selectedCmd&&this.socket.emit("cmd",'PS1="\\[\\033[01;31m\\]\\u\\[\\033[01;33m\\]@\\[\\033[01;36m\\]\\h \\[\\033[01;33m\\]\\w \\[\\033[01;35m\\]\\$ \\[\\033[00m\\]"\n'),this.socket.emit("cmd","alias ls='ls --color'\n"),this.socket.emit("cmd","alias ll='ls -alF'\n"),this.socket.emit("cmd","clear\n")),setTimeout((()=>{this.isConnecting=!1,this.isVisible=!0,this.$nextTick((()=>{setTimeout((()=>{this.terminal.focus(),r.fit()}),500)}))}),1400)),this.terminal.write(t)})),this.socket.on("end",(()=>{this.disconnectTerminal()}))},disconnectTerminal(){this.socket&&this.socket.disconnect(),this.terminal&&this.terminal.dispose(),this.isVisible=!1,this.isConnecting=!1},onSelectChangeCmd(){"Custom"!==this.selectedCmd&&(this.customValue="")},onSelectChangeEnv(){this.enableEnvironment||(this.envInputValue="")},onSelectChangeUser(){this.enableUser||(this.userInputValue="")},onFilteredSelection(t){this.entNodesSelectTable.totalRows=t.length,this.entNodesSelectTable.currentPage=1},async getMarketPlace(){try{const t=await dc.get("https://stats.runonflux.io/marketplace/listapps");"success"===t.data.status&&(this.marketPlaceApps=t.data.data)}catch(t){console.log(t)}},async getMultiplier(){try{const t=await dc.get("https://stats.runonflux.io/apps/multiplier");"success"===t.data.status&&"number"===typeof t.data.data&&t.data.data>=1&&(this.generalMultiplier=t.data.data)}catch(t){this.generalMultiplier=10,console.log(t)}},async appsDeploymentInformation(){const t=await J.Z.appsDeploymentInformation(),{data:e}=t.data;"success"===t.data.status?this.deploymentAddress=e.address:this.showToast("danger",t.data.data.message||t.data.data)},async updateManagementTab(t){if(await this.getZelidAuthority(),!this.globalZelidAuthorized)return;this.noData=!1,this.processes=[],this.enableHistoryStatistics=!1,this.callResponse.data="",this.callResponse.status="",this.appExec.cmd="",this.appExec.env="",this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.backupToUpload=[];const e=this.$refs.managementTabs.$children,s=e[t]?.title;switch("Interactive Terminal"!==s&&this.disconnectTerminal(),"Logs"!==s&&(this.stopPolling(),this.pollingEnabled=!1),"Monitoring"!==s&&this.stopPollingStats(),this.selectedIp||(await this.getInstancesForDropDown(),await this.getInstalledApplicationSpecifics(),this.getApplicationLocations().catch((()=>{this.isBusy=!1,this.showToast("danger","Error loading application locations")}))),this.getApplicationManagementAndStatus(),t){case 1:this.getInstalledApplicationSpecifics(),this.getGlobalApplicationSpecifics();break;case 2:this.callResponseInspect.data="",this.getApplicationInspect();break;case 3:this.$nextTick((()=>{this.initCharts(),setTimeout(this.startPollingStats(),2e3)}));break;case 4:this.callResponseChanges.data="",this.getApplicationChanges();break;case 5:this.logs=[],this.selectedLog=[],this.fetchLogsForSelectedContainer();break;case 8:this.applyFilter(),this.loadBackupList();break;case 9:this.appSpecification?.compose&&1!==this.appSpecification?.compose?.length||this.refreshFolder();break;case 13:this.getZelidAuthority(),this.cleanData();break;case 14:this.getZelidAuthority(),this.cleanData();break;default:break}},async appsGetListAllApps(){const t=await this.executeLocalCommand("/apps/listallapps");console.log(t),this.getAllAppsResponse.status=t.data.status,this.getAllAppsResponse.data=t.data.data},goBackToApps(){this.$emit("back")},async initSignFluxSSO(){try{const t=this.dataToSign,e=(0,X.PR)();if(!e)return void this.showToast("warning","Not logged in as SSO. Login with SSO or use different signing method.");const s=e.auth.currentUser.accessToken,i={"Content-Type":"application/json",Authorization:`Bearer ${s}`},a=await dc.post("https://service.fluxcore.ai/api/signMessage",{message:t},{headers:i});if("success"!==a.data?.status&&a.data?.signature)return void this.showToast("warning","Failed to sign message, please try again.");this.signature=a.data.signature}catch(t){this.showToast("warning","Failed to sign message, please try again.")}},async initiateSignWSUpdate(){if(this.dataToSign.length>1800){const t=this.dataToSign,e={publicid:Math.floor(999999999999999*Math.random()).toString(),public:t};await dc.post("https://storage.runonflux.io/v1/public",e);const s=`zel:?action=sign&message=FLUX_URL=https://storage.runonflux.io/v1/public/${e.publicid}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`;window.location.href=s}else window.location.href=`zel:?action=sign&message=${this.dataToSign}&icon=https%3A%2F%2Fraw.githubusercontent.com%2Frunonflux%2Fflux%2Fmaster%2FzelID.svg&callback=${this.callbackValue}`;const t=this,{protocol:e,hostname:s,port:i}=window.location;let a="";a+=e,a+="//";const o=/[A-Za-z]/g;if(s.split("-")[4]){const t=s.split("-"),e=t[4].split("."),i=+e[0]+1;e[0]=i.toString(),e[2]="api",t[4]="",a+=t.join("-"),a+=e.join(".")}else if(s.match(o)){const t=s.split(".");t[0]="api",a+=t.join(".")}else{if("string"===typeof s&&this.$store.commit("flux/setUserIp",s),+i>16100){const t=+i+1;this.$store.commit("flux/setFluxPort",t)}a+=s,a+=":",a+=this.config.apiPort}let n=uc.get("backendURL")||a;n=n.replace("https://","wss://"),n=n.replace("http://","ws://");const r=this.appUpdateSpecification.owner+this.timestamp,l=`${n}/ws/sign/${r}`,c=new WebSocket(l);this.websocket=c,c.onopen=e=>{t.onOpen(e)},c.onclose=e=>{t.onClose(e)},c.onmessage=e=>{t.onMessage(e)},c.onerror=e=>{t.onError(e)}},onError(t){console.log(t)},onMessage(t){const e=hc.parse(t.data);"success"===e.status&&e.data&&(this.signature=e.data.signature),console.log(e),console.log(t)},onClose(t){console.log(t)},onOpen(t){console.log(t)},async getInstalledApplicationSpecifics(){const t=await this.executeLocalCommand(`/apps/installedapps/${this.appName}`);console.log(t),t&&("error"!==t.data.status&&t.data.data[0]?(this.callResponse.status=t.data.status,this.callResponse.data=t.data.data[0],this.appSpecification=t.data.data[0]):this.showToast("danger",t.data.data.message||t.data.data))},getExpireOptions(){this.expireOptions=[];const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;e+5e3<264e3&&this.expireOptions.push({value:5e3+e,label:"1 week",time:6048e5}),this.expirePosition=0,e+11e3<264e3&&(this.expireOptions.push({value:11e3+e,label:"2 weeks",time:12096e5}),this.expirePosition=1),e+22e3<264e3&&(this.expireOptions.push({value:22e3+e,label:"1 month",time:2592e6}),this.expirePosition=2),e+66e3<264e3&&this.expireOptions.push({value:66e3+e,label:"3 months",time:7776e6}),e+132e3<264e3&&this.expireOptions.push({value:132e3+e,label:"6 months",time:15552e6}),this.expireOptions.push({value:264e3,label:"Up to one year",time:31536e6})},async getGlobalApplicationSpecifics(){const t=await J.Z.getAppSpecifics(this.appName);if(console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data),this.callBResponse.status=t.data.status;else{this.callBResponse.status=t.data.status,this.callBResponse.data=t.data.data;const s=t.data.data;if(console.log(s),this.appUpdateSpecification=JSON.parse(JSON.stringify(s)),this.appUpdateSpecification.instances=s.instances||3,this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances),this.appUpdateSpecification.version<=3)this.appUpdateSpecification.version=3,this.appUpdateSpecification.ports=s.port||this.ensureString(s.ports),this.appUpdateSpecification.domains=this.ensureString(s.domains),this.appUpdateSpecification.enviromentParameters=this.ensureString(s.enviromentParameters),this.appUpdateSpecification.commands=this.ensureString(s.commands),this.appUpdateSpecification.containerPorts=s.containerPort||this.ensureString(s.containerPorts);else{if(this.appUpdateSpecification.version>3&&this.appUpdateSpecification.compose.find((t=>t.containerData.includes("g:")))&&(this.masterSlaveApp=!0),this.appUpdateSpecification.version<=7&&(this.appUpdateSpecification.version=7),this.appUpdateSpecification.contacts=this.ensureString([]),this.appUpdateSpecification.geolocation=this.ensureString([]),this.appUpdateSpecification.version>=5){this.appUpdateSpecification.contacts=this.ensureString(s.contacts||[]),this.appUpdateSpecification.geolocation=this.ensureString(s.geolocation||[]);try{this.decodeGeolocation(s.geolocation||[])}catch(e){console.log(e),this.appUpdateSpecification.geolocation=this.ensureString([])}}this.appUpdateSpecification.compose.forEach((t=>{t.ports=this.ensureString(t.ports),t.domains=this.ensureString(t.domains),t.environmentParameters=this.ensureString(t.environmentParameters),t.commands=this.ensureString(t.commands),t.containerPorts=this.ensureString(t.containerPorts),t.secrets=this.ensureString(t.secrets||""),t.repoauth=this.ensureString(t.repoauth||"")})),this.appUpdateSpecification.version>=6&&(this.getExpireOptions(),this.appUpdateSpecification.expire=this.ensureNumber(this.expireOptions[this.expirePosition].value)),this.appUpdateSpecification.version>=7&&(this.appUpdateSpecification.staticip=this.appUpdateSpecification.staticip??!1,this.appUpdateSpecification.nodes=this.appUpdateSpecification.nodes||[],this.appUpdateSpecification.nodes&&this.appUpdateSpecification.nodes.length&&(this.isPrivateApp=!0),this.appUpdateSpecification.nodes.forEach((async t=>{const e=this.enterprisePublicKeys.find((e=>e.nodeip===t));if(!e){const e=await this.fetchEnterpriseKey(t);if(e){const s={nodeip:t.ip,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t));i||this.enterprisePublicKeys.push(s)}}})),this.enterpriseNodes||await this.getEnterpriseNodes(),this.selectedEnterpriseNodes=[],this.appUpdateSpecification.nodes.forEach((t=>{if(this.enterpriseNodes){const e=this.enterpriseNodes.find((e=>e.ip===t||t===`${e.txhash}:${e.outidx}`));e&&this.selectedEnterpriseNodes.push(e)}else this.showToast("danger","Failed to load Enterprise Node List")})))}}},async testAppInstall(t){if(this.downloading)return void this.showToast("danger","Test install/launch was already initiated");const e=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.downloading=!0,this.testError=!1,this.showToast("warning",`Testing ${t} installation, please wait`);const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}};let a;try{if(this.appUpdateSpecification.nodes.length>0){const e=this.appUpdateSpecification.nodes[Math.floor(Math.random()*this.appUpdateSpecification.nodes.length)],s=e.split(":")[0],o=Number(e.split(":")[1]||16127),n=`https://${s.replace(/\./g,"-")}-${o}.node.api.runonflux.io/apps/testappinstall/${t}`;a=await dc.get(n,i)}else a=await J.Z.justAPI().get(`/apps/testappinstall/${t}`,i);if("error"===a.data.status)this.testError=!0,this.showToast("danger",a.data.data.message||a.data.data);else{console.log(a),this.output=JSON.parse(`[${a.data.replace(/}{/g,"},{")}]`),console.log(this.output);for(let t=0;t{this.showToast("danger",t.message||t)}));console.log(s),"success"===s.data.status?(this.updateHash=s.data.data,console.log(this.updateHash),this.showToast("success",s.data.data.message||s.data.data)):this.showToast("danger",s.data.data.message||s.data.data);const i=await(0,Y.Z)();i&&(this.stripeEnabled=i.stripe,this.paypalEnabled=i.paypal),this.progressVisable=!1},async checkFluxCommunication(){const t=await J.Z.checkCommunication();"success"===t.data.status?this.fluxCommunication=!0:this.showToast("danger",t.data.data.message||t.data.data)},convertExpire(){if(!this.extendSubscription){const t=this.callBResponse.data.expire||22e3,e=this.callBResponse.data.height+t-this.daemonBlockCount;if(e<5e3)throw new Error("Your application will expire in less than one week, you need to extend subscription to be able to update specifications");return e}return this.expireOptions[this.expirePosition]?this.expireOptions[this.expirePosition].value:22e3},async checkFluxUpdateSpecificationsAndFormatMessage(){try{if(this.appRunningTill.new=7&&(this.constructNodes(),this.appUpdateSpecification.compose.forEach((t=>{if((t.repoauth||t.secrets)&&(e=!0,!this.appUpdateSpecification.nodes.length))throw new Error("Private repositories and secrets can only run on Enterprise Nodes")}))),e){this.showToast("info","Encrypting specifications, this will take a while...");const t=[];for(const e of this.appUpdateSpecification.nodes){const s=this.enterprisePublicKeys.find((t=>t.nodeip===e));if(s)t.push(s.nodekey);else{const s=await this.fetchEnterpriseKey(e);if(s){const i={nodeip:e.ip,nodekey:s},a=this.enterprisePublicKeys.find((t=>t.nodeip===e.ip));a||this.enterprisePublicKeys.push(i),t.push(s)}}}for(const e of this.appUpdateSpecification.compose){if(e.environmentParameters=e.environmentParameters.replace("\\“",'\\"'),e.commands=e.commands.replace("\\“",'\\"'),e.domains=e.domains.replace("\\“",'\\"'),e.secrets&&!e.secrets.startsWith("-----BEGIN PGP MESSAGE")){e.secrets=e.secrets.replace("\\“",'\\"');const s=await this.encryptMessage(e.secrets,t);if(!s)return;e.secrets=s}if(e.repoauth&&!e.repoauth.startsWith("-----BEGIN PGP MESSAGE")){const s=await this.encryptMessage(e.repoauth,t);if(!s)return;e.repoauth=s}}}e&&this.appUpdateSpecification.compose.forEach((t=>{if(t.secrets&&!t.secrets.startsWith("-----BEGIN PGP MESSAGE"))throw new Error("Encryption failed");if(t.repoauth&&!t.repoauth.startsWith("-----BEGIN PGP MESSAGE"))throw new Error("Encryption failed")})),t.version>=5&&(t.geolocation=this.generateGeolocations()),t.version>=6&&(await this.getDaemonBlockCount(),t.expire=this.convertExpire());const s=await J.Z.appUpdateVerification(t);if("error"===s.data.status)throw new Error(s.data.data.message||s.data.data);const i=s.data.data;this.appPricePerSpecs=0,this.appPricePerSpecsUSD=0,this.applicationPriceFluxDiscount="",this.applicationPriceFluxError=!1,this.freeUpdate=!1;const a=await J.Z.appPriceUSDandFlux(i);if("error"===a.data.status)throw new Error(a.data.data.message||a.data.data);this.appPricePerSpecsUSD=+a.data.data.usd,console.log(a.data.data),0===this.appPricePerSpecsUSD?this.freeUpdate=!0:Number.isNaN(+a.data.data.fluxDiscount)?(this.applicationPriceFluxError=!0,this.showToast("danger","Not possible to complete payment with Flux crypto currency")):(this.appPricePerSpecs=+a.data.data.flux,this.applicationPriceFluxDiscount=+a.data.data.fluxDiscount);const o=this.marketPlaceApps.find((t=>this.appUpdateSpecification.name.toLowerCase().startsWith(t.name.toLowerCase())));o&&(this.isMarketplaceApp=!0),this.timestamp=Date.now(),this.dataForAppUpdate=i,this.dataToSign=this.updatetype+this.version+JSON.stringify(i)+this.timestamp,this.progressVisable=!1}catch(t){this.progressVisable=!1,console.log(t.message),console.error(t),this.showToast("danger",t.message||t)}},async checkFluxCancelSubscriptionAndFormatMessage(){try{this.progressVisable=!0,this.operationTitle="Cancelling subscription...";const t=this.appUpdateSpecification;t.geolocation=this.generateGeolocations(),t.expire=100;const e=await J.Z.appUpdateVerification(t);if(this.progressVisable=!1,"error"===e.data.status)throw new Error(e.data.data.message||e.data.data);const s=e.data.data;this.timestamp=Date.now(),this.dataForAppUpdate=s,this.dataToSign=this.updatetype+this.version+JSON.stringify(s)+this.timestamp}catch(t){this.progressVisable=!1,console.log(t.message),console.error(t),this.showToast("danger",t.message||t)}},async appExecute(t=this.appSpecification.name){try{if(!this.appExec.cmd)return void this.showToast("danger","No commands specified");const e=this.appExec.env?this.appExec.env:"[]",{cmd:s}=this.appExec;this.commandExecuting=!0,console.log("here");const i={appname:t,cmd:fc(s),env:JSON.parse(e)},a=await this.executeLocalCommand("/apps/appexec/",i);console.log(a),"error"===a.data.status?this.showToast("danger",a.data.data.message||a.data.data):(this.commandExecuting=!1,this.callResponse.status=a.status,t.includes("_")?(this.callResponse.data&&Array.isArray(this.callResponse.data)||(this.callResponse.data=[]),this.callResponse.data.unshift({name:t,data:a.data})):this.callResponse.data=a.data)}catch(e){this.commandExecuting=!1,console.log(e),this.showToast("danger",e.message||e)}},async downloadApplicationLog(t){const e=this;this.downloaded="",this.total="";const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},responseType:"blob",onDownloadProgress(t){e.downloaded=t.loaded,e.total=t.total,e.downloaded===e.total&&setTimeout((()=>{e.downloaded="",e.total=""}),5e3)}};try{this.downloadingLog=!0;const e=await this.executeLocalCommand(`/apps/applogpolling/${t}/all`,null,i),s=await e.data.text(),a=JSON.parse(s);let o=a.logs;if(!Array.isArray(o))throw new Error("Log data is missing or is not in the expected format.");if(0===o.length)throw new Error("No logs available to download.");const n=/\u001b\[[0-9;]*[a-zA-Z]/g;if(o=o.map((t=>t.replace(n,""))),!this.displayTimestamps){const t=/^[^\s]+\s*/;o=o.map((e=>e.replace(t,"")))}const r=o.join("\n"),l=new Blob([r],{type:"text/plain"}),c=window.URL.createObjectURL(l),p=document.createElement("a");p.href=c,p.setAttribute("download","app.log"),document.body.appendChild(p),p.click(),this.downloadingLog=!1,window.URL.revokeObjectURL(c)}catch(a){this.downloadingLog=!1,console.error("Error occurred while handling logs:",a),this.showToast("danger",a)}},getAppIdentifier(t=this.appName){return t&&t.startsWith("zel")||t&&t.startsWith("flux")?t:"KadenaChainWebNode"===t||"FoldingAtHomeB"===t?`zel${t}`:`flux${t}`},getAppDockerNameIdentifier(t){const e=this.getAppIdentifier(t);return e&&e.startsWith("/")?e:`/${e}`},async getApplicationInspect(){const t=[];if(this.commandExecutingInspect=!0,this.appSpecification.version>=4)for(const e of this.appSpecification.compose){const s=await this.executeLocalCommand(`/apps/appinspect/${e.name}_${this.appSpecification.name}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else{const i={name:e.name,callData:s.data.data};t.push(i)}}else{const e=await this.executeLocalCommand(`/apps/appinspect/${this.appName}`);if("error"===e.data.status)this.showToast("danger",e.data.data.message||e.data.data);else{const s={name:this.appSpecification.name,callData:e.data.data};t.push(s)}console.log(e)}this.commandExecutingInspect=!1,this.callResponseInspect.status="success",this.callResponseInspect.data=t},async stopMonitoring(t,e=!1){let s;this.output=[],this.showToast("warning",`Stopping Monitoring of ${t}`),s=e?await this.executeLocalCommand(`/apps/stopmonitoring/${t}/true`):await this.executeLocalCommand(`/apps/stopmonitoring/${t}`),"success"===s.data.status?this.showToast("success",s.data.data.message||s.data.data):this.showToast("danger",s.data.data.message||s.data.data),console.log(s)},async startMonitoring(t){this.output=[],this.showToast("warning",`Starting Monitoring of ${t}`);const e=await this.executeLocalCommand(`/apps/startmonitoring/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),console.log(e)},async getApplicationChanges(){const t=[];if(this.commandExecutingChanges=!0,this.appSpecification.version>=4)for(const e of this.appSpecification.compose){const s=await this.executeLocalCommand(`/apps/appchanges/${e.name}_${this.appSpecification.name}`);if("error"===s.data.status)this.showToast("danger",s.data.data.message||s.data.data);else{const i={name:e.name,callData:s.data.data};t.push(i)}}else{const e=await this.executeLocalCommand(`/apps/appchanges/${this.appName}`);if("error"===e.data.status)this.showToast("danger",e.data.data.message||e.data.data);else{const s={name:this.appSpecification.name,callData:e.data.data};t.push(s)}console.log(e)}this.commandExecutingChanges=!1,this.callResponseChanges.status="success",this.callResponseChanges.data=t},async getInstancesForDropDown(){const t=await J.Z.getAppLocation(this.appName);if(this.selectedIp=null,console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data);else{if(this.masterIP=null,this.instances.data=[],this.instances.data=t.data.data,this.masterSlaveApp){const t=`https://${this.appName}.app.runonflux.io/fluxstatistics?scope=${this.appName}apprunonfluxio;json;norefresh`;let e=!1,s=await dc.get(t).catch((t=>{e=!0,console.log(`UImasterSlave: Failed to reach FDM with error: ${t}`),this.masterIP="Failed to Check"}));if(!e){if(s=s.data,s&&s.length>0){console.log("FDM_Data_Received");for(const t of s){const e=t.find((t=>1===t.id&&"Server"===t.objType&&"pxname"===t.field.name&&t.value.value.toLowerCase().startsWith(`${this.appName.toLowerCase()}apprunonfluxio`)));if(e){console.log("FDM_Data_Service_Found");const e=t.find((t=>1===t.id&&"Server"===t.objType&&"svname"===t.field.name));if(e)return console.log("FDM_Data_IP_Found"),this.masterIP=e.value.value.split(":")[0],console.log(this.masterIP),void(this.selectedIp||("16127"===e.value.value.split(":")[1]?this.selectedIp=e.value.value.split(":")[0]:this.selectedIp=e.value.value));break}}}this.masterIP||(this.masterIP="Defining New Primary In Progress"),this.selectedIp||(this.selectedIp=this.instances.data[0].ip)}}else this.selectedIp||(this.selectedIp=this.instances.data[0].ip);if(console.log(this.ipAccess),this.ipAccess){const t=this.ipAddress.replace("http://",""),e=16127===this.config.apiPort?t:`${t}:${this.config.apiPort}`,s=this.instances.data.filter((t=>t.ip===e));s.length>0&&(this.selectedIp=e)}else{const t=/https:\/\/(\d+-\d+-\d+-\d+)-(\d+)/,e=this.ipAddress.match(t);if(e){const t=e[1].replace(/-/g,"."),s=16127===this.config.apiPort?t:`${t}:${this.config.apiPort}`,i=this.instances.data.filter((t=>t.ip===s));i.length>0&&(this.selectedIp=s)}}this.instances.totalRows=this.instances.data.length}},async getApplicationLocations(){this.isBusy=!0;const t=await J.Z.getAppLocation(this.appName);if(console.log(t),"error"===t.data.status)this.showToast("danger",t.data.data.message||t.data.data);else{if(this.masterSlaveApp){const t=`https://${this.appName}.app.runonflux.io/fluxstatistics?scope=${this.appName};json;norefresh`;let e=!1;this.masterIP=null;let s=await dc.get(t).catch((t=>{e=!0,console.log(`UImasterSlave: Failed to reach FDM with error: ${t}`),this.masterIP="Failed to Check"}));if(!e){if(s=s.data,s&&s.length>0){console.log("FDM_Data_Received");for(const t of s){const e=t.find((t=>1===t.id&&"Server"===t.objType&&"pxname"===t.field.name&&t.value.value.toLowerCase().startsWith(`${this.appName.toLowerCase()}apprunonfluxio`)));if(e){console.log("FDM_Data_Service_Found");const e=t.find((t=>1===t.id&&"Server"===t.objType&&"svname"===t.field.name));e?(console.log("FDM_Data_IP_Found"),this.masterIP=e.value.value.split(":")[0],console.log(this.masterIP)):this.masterIP="Defining New Primary In Progress";break}}}this.masterIP||(this.masterIP="Defining New Primary In Progress")}}this.instances.data=[],this.instances.data=t.data.data;const e=this.instances.data;setTimeout((async()=>{for(const t of e){const e=t.ip.split(":")[0],s=t.ip.split(":")[1]||16127;let i=`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/flux/geolocation`;this.ipAccess&&(i=`http://${e}:${s}/flux/geolocation`);let a=!1;const o=await dc.get(i).catch((i=>{a=!0,console.log(`Error geting geolocation from ${e}:${s} : ${i}`),t.continent="N/A",t.country="N/A",t.region="N/A"}));!a&&"success"===o.data?.status&&o.data.data?.continent?(t.continent=o.data.data.continent,t.country=o.data.data.country,t.region=o.data.data.regionName):(t.continent="N/A",t.country="N/A",t.region="N/A")}}),5),this.instances.totalRows=this.instances.data.length,this.tableKey+=1,this.isBusy=!1}},async getAppOwner(){const t=await J.Z.getAppOwner(this.appName);console.log(t),"error"===t.data.status&&this.showToast("danger",t.data.data.message||t.data.data),this.selectedAppOwner=t.data.data},async stopApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Stopping ${t}...`;const e=await this.executeLocalCommand(`/apps/appstop/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1},async startApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Starting ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/appstart/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),3e3)},async restartApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Restarting ${t}...`;const e=await this.executeLocalCommand(`/apps/apprestart/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1},async pauseApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Pausing ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/apppause/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),2e3)},async unpauseApp(t){this.output=[],this.progressVisable=!0,this.operationTitle=`Unpausing ${t}...`,setTimeout((async()=>{const e=await this.executeLocalCommand(`/apps/appunpause/${t}`);"success"===e.data.status?this.showToast("success",e.data.data.message||e.data.data):this.showToast("danger",e.data.data.message||e.data.data),this.appsGetListAllApps(),console.log(e),this.progressVisable=!1}),2e3)},redeployAppSoft(t){this.redeployApp(t,!1)},redeployAppHard(t){this.redeployApp(t,!0)},async redeployApp(t,e){const s=this;this.output=[],this.downloadOutput={},this.downloadOutputReturned=!1,this.progressVisable=!0,this.operationTitle=`Redeploying ${t}...`;const i=localStorage.getItem("zelidauth"),a={headers:{zelidauth:i},onDownloadProgress(t){console.log(t.event.target.response),s.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},o=await this.executeLocalCommand(`/apps/redeploy/${t}/${e}`,null,a);this.progressVisable=!1,"error"===o.data.status?this.showToast("danger",o.data.data.message||o.data.data):(this.output=JSON.parse(`[${o.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data))},async removeApp(t){const e=this;this.output=[],this.progressVisable=!0,this.operationTitle=`Removing ${t}...`;const s=localStorage.getItem("zelidauth"),i={headers:{zelidauth:s},onDownloadProgress(t){console.log(t.event.target.response),e.output=JSON.parse(`[${t.event.target.response.replace(/}{/g,"},{")}]`)}},a=await this.executeLocalCommand(`/apps/appremove/${t}`,null,i);this.progressVisable=!1,"error"===a.data.status?this.showToast("danger",a.data.data.message||a.data.data):(this.output=JSON.parse(`[${a.data.replace(/}{/g,"},{")}]`),"error"===this.output[this.output.length-1].status?this.showToast("danger",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):"warning"===this.output[this.output.length-1].status?this.showToast("warning",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data):this.showToast("success",this.output[this.output.length-1].data.message||this.output[this.output.length-1].data),setTimeout((()=>{e.managedApplication=""}),5e3))},async getZelidAuthority(){const t=localStorage.getItem("zelidauth"),e=hc.parse(t),s=Date.now(),i=54e5,a=e?.loginPhrase?.substring(0,13)||0,o=+a+i,n=new Date(o).toLocaleString();console.log(`Current time: ${new Date(s).toLocaleString()}`),console.log(`Authorization will expire at: ${n}`),+a>0&&s{setTimeout(e,t)}))},async executeLocalCommand(t,e,s){try{const i=localStorage.getItem("zelidauth");let a=s;if(a||(a={headers:{zelidauth:i}}),this.getZelidAuthority(),!this.globalZelidAuthorized)throw new Error("Session expired. Please log into FluxOS again");const o=this.selectedIp.split(":")[0],n=this.selectedIp.split(":")[1]||16127;let r=null,l=`https://${o.replace(/\./g,"-")}-${n}.node.api.runonflux.io${t}`;return this.ipAccess&&(l=`http://${o}:${n}${t}`),r=e?await dc.post(l,e,a):await dc.get(l,a),r}catch(i){return this.showToast("danger",i.message||i),null}},async executeCommand(t,e,s,i){try{const a=localStorage.getItem("zelidauth"),o={headers:{zelidauth:a}};if(this.getZelidAuthority(),!this.globalZelidAuthorized)throw new Error("Session expired. Please log into FluxOS again");this.showToast("warning",s);let n=`/apps/${e}/${t}`;i&&(n+=`/${i}`),n+="/true";const r=await J.Z.justAPI().get(n,o);await this.delay(500),"success"===r.data.status?this.showToast("success",r.data.data.message||r.data.data):this.showToast("danger",r.data.data.message||r.data.data)}catch(a){this.showToast("danger",a.message||a)}},async stopAppGlobally(t){this.executeCommand(t,"appstop",`Stopping ${t} globally. This will take a while...`)},async startAppGlobally(t){this.executeCommand(t,"appstart",`Starting ${t} globally. This will take a while...`)},async restartAppGlobally(t){this.executeCommand(t,"apprestart",`Restarting ${t} globally. This will take a while...`)},async pauseAppGlobally(t){this.executeCommand(t,"apppause",`Pausing ${t} globally. This will take a while...`)},async unpauseAppGlobally(t){this.executeCommand(t,"appunpause",`Unpausing ${t} globally. This will take a while...`)},async redeployAppSoftGlobally(t){this.executeCommand(t,"redeploy",`Soft redeploying ${t} globally. This will take a while...`,"false")},async redeployAppHardGlobally(t){this.executeCommand(t,"redeploy",`Hard redeploying ${t} globally. This will take a while...`,"true")},async removeAppGlobally(t){this.executeCommand(t,"appremove",`Reinstalling ${t} globally. This will take a while...`,"true")},openApp(t,e,s){if(console.log(t,e,s),s&&e){const t=e,i=s,a=`http://${t}:${i}`;this.openSite(a)}else this.showToast("danger","Unable to open App :(, App does not have a port.")},getProperPort(t=this.appUpdateSpecification){if(t.port)return t.port;if(t.ports){const e="string"===typeof t.ports?JSON.parse(t.ports):t.ports;return e[0]}for(let e=0;e{console.log(e),"success"===e.status?t+=`${e.data.message||e.data}\r\n`:"Downloading"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:e.progressDetail,variant:"danger"}):"Verifying Checksum"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"warning"}):"Download complete"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"info"}):"Extracting"===e.status?(this.downloadOutputReturned=!0,this.downloadOutput[e.id]={id:e.id,detail:e.progressDetail,variant:"primary"}):"Pull complete"===e.status?this.downloadOutput[e.id]={id:e.id,detail:{current:1,total:1},variant:"success"}:"error"===e.status?t+=`Error: ${JSON.stringify(e.data)}\r\n`:t+=`${e.status}\r\n`})),t},showToast(t,e,s="InfoIcon"){this.$toast({component:V.Z,props:{title:e,icon:s,variant:t}})},decodeAsciiResponse(t){return"string"===typeof t?t.replace(/[^\x20-\x7E\t\r\n\v\f]/g,""):""},getContinent(t){const e=this.ensureObject(t),s=e.find((t=>t.startsWith("a")));if(s){const t=this.continentsOptions.find((t=>t.value===s.slice(1)));return t?t.text:"All"}return"All"},getCountry(t){const e=this.ensureObject(t),s=e.find((t=>t.startsWith("b")));if(s){const t=this.countriesOptions.find((t=>t.value===s.slice(1)));return t?t.text:"All"}return"All"},continentChanged(){if(this.selectedCountry=null,this.selectedContinent){const t=this.continentsOptions.find((t=>t.value===this.selectedContinent));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}else this.maxInstances=this.appUpdateSpecificationv5template.maxInstances,this.showToast("info","No geolocation set you can define up to maximum of 100 instances and up to the maximum hardware specs available on Flux network to your app.");this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},countryChanged(){if(this.selectedCountry){const t=this.countriesOptions.find((t=>t.value===this.selectedCountry));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}else{const t=this.continentsOptions.find((t=>t.value===this.selectedContinent));this.maxInstances=t.maxInstances,this.appUpdateSpecification.instances>this.maxInstances&&(this.appUpdateSpecification.instances=this.maxInstances),this.showToast("warning",`The node type may fluctuate based upon system requirements for your application. For better results in ${t.text}, please consider specifications more suited to ${t.nodeTier} hardware.`)}this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},getTimestamps(t){const e=[];return t.forEach((t=>{e.push(t.timestamp)})),e},chartOptions(t){const e={chart:{height:350,type:"area"},dataLabels:{enabled:!1},stroke:{curve:"smooth"},xaxis:{type:"timestamp",categories:t},tooltip:{x:{format:"dd/MM/yy HH:mm"}}};return e},decodeGeolocation(t){let e=!1;t.forEach((t=>{t.startsWith("b")&&(e=!0),t.startsWith("a")&&t.startsWith("ac")&&t.startsWith("a!c")&&(e=!0)}));let s=t;if(e){const e=t.find((t=>t.startsWith("a")&&t.startsWith("ac")&&t.startsWith("a!c"))),i=t.find((t=>t.startsWith("b")));let a=`ac${e.slice(1)}`;i&&(a+=`_${i.slice(1)}`),s=[a]}const i=s.filter((t=>t.startsWith("ac"))),a=s.filter((t=>t.startsWith("a!c")));for(let o=1;o{t.push({value:e.code,instances:e.available?100:0})})),gc.countries.forEach((e=>{t.push({value:`${e.continent}_${e.code}`,instances:e.available?100:0})}));const e=await dc.get("https://stats.runonflux.io/fluxinfo?projection=geo");if("success"===e.data.status){const s=e.data.data;s.length>5e3&&(t=[],s.forEach((e=>{if(e.geolocation&&e.geolocation.continentCode&&e.geolocation.regionName&&e.geolocation.countryCode){const s=e.geolocation.continentCode,i=`${s}_${e.geolocation.countryCode}`,a=`${i}_${e.geolocation.regionName}`,o=t.find((t=>t.value===s));o?o.instances+=1:t.push({value:s,instances:1});const n=t.find((t=>t.value===i));n?n.instances+=1:t.push({value:i,instances:1});const r=t.find((t=>t.value===a));r?r.instances+=1:t.push({value:a,instances:1})}})))}else this.showToast("info","Failed to get geolocation data from FluxStats, Using stored locations")}catch(e){console.log(e),this.showToast("info","Failed to get geolocation data from FluxStats, Using stored locations")}this.possibleLocations=t},continentsOptions(t){const e=[{value:t?"NONE":"ALL",text:t?"NONE":"ALL"}];return this.possibleLocations.filter((e=>e.instances>(t?-1:3))).forEach((t=>{if(!t.value.includes("_")){const s=gc.continents.find((e=>e.code===t.value));e.push({value:t.value,text:s?s.name:t.value})}})),e},countriesOptions(t,e){const s=[{value:"ALL",text:"ALL"}];return this.possibleLocations.filter((t=>t.instances>(e?-1:3))).forEach((e=>{if(!e.value.split("_")[2]&&e.value.startsWith(`${t}_`)){const t=gc.countries.find((t=>t.code===e.value.split("_")[1]));s.push({value:e.value.split("_")[1],text:t?t.name:e.value.split("_")[1]})}})),s},regionsOptions(t,e,s){const i=[{value:"ALL",text:"ALL"}];return this.possibleLocations.filter((t=>t.instances>(s?-1:3))).forEach((s=>{s.value.startsWith(`${t}_${e}_`)&&i.push({value:s.value.split("_")[2],text:s.value.split("_")[2]})})),i},generateGeolocations(){const t=[];for(let e=1;et.code===e))||{name:"ALL"};return`Continent: ${s.name||"Unkown"}`}if(t.startsWith("b")){const e=t.slice(1),s=gc.countries.find((t=>t.code===e))||{name:"ALL"};return`Country: ${s.name||"Unkown"}`}if(t.startsWith("ac")){const e=t.slice(2),s=e.split("_"),i=s[0],a=s[1],o=s[2],n=gc.continents.find((t=>t.code===i))||{name:"ALL"},r=gc.countries.find((t=>t.code===a))||{name:"ALL"};let l=`Allowed location: Continent: ${n.name}`;return a&&(l+=`, Country: ${r.name}`),o&&(l+=`, Region: ${o}`),l}if(t.startsWith("a!c")){const e=t.slice(3),s=e.split("_"),i=s[0],a=s[1],o=s[2],n=gc.continents.find((t=>t.code===i))||{name:"ALL"},r=gc.countries.find((t=>t.code===a))||{name:"ALL"};let l=`Forbidden location: Continent: ${n.name}`;return a&&(l+=`, Country: ${r.name}`),o&&(l+=`, Region: ${o}`),l}return"All locations allowed"},adjustMaxInstancesPossible(){const t=this.generateGeolocations(),e=t.filter((t=>t.startsWith("ac")));console.log(t);let s=0;e.forEach((t=>{const e=this.possibleLocations.find((e=>e.value===t.slice(2)));e&&(s+=e.instances),"ALL"===t&&(s+=100)})),e.length||(s+=100),console.log(s),s=s>3?s:3;const i=s>100?100:s;this.maxInstances=i,this.instancesLocked&&(this.maxInstances=this.appUpdateSpecification.instances)},constructAutomaticDomains(t,e,s=0){const i=JSON.parse(JSON.stringify(t)),a=e.toLowerCase();if(0===s){const t=[`${a}.app.runonflux.io`];for(let e=0;ee.ip===t));e>-1&&this.selectedEnterpriseNodes.splice(e,1)},async addFluxNode(t){try{const e=this.selectedEnterpriseNodes.find((e=>e.ip===t));if(console.log(t),!e){const e=this.enterpriseNodes.find((e=>e.ip===t));this.selectedEnterpriseNodes.push(e),console.log(this.selectedEnterpriseNodes);const s=this.enterprisePublicKeys.find((e=>e.nodeip===t));if(!s){const e=await this.fetchEnterpriseKey(t);if(e){const s={nodeip:t,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t));i||this.enterprisePublicKeys.push(s)}}}}catch(e){console.log(e)}},async autoSelectNodes(){const{instances:t}=this.appUpdateSpecification,e=+t+3,s=+t+Math.ceil(Math.max(7,.15*+t)),i=this.enterpriseNodes.filter((t=>!this.selectedEnterpriseNodes.includes(t))),a=[],o=i.filter((t=>t.enterprisePoints>0&&t.score>1e3));for(let n=0;nt.pubkey===o[n].pubkey)).length,i=a.filter((t=>t.pubkey===o[n].pubkey)).length;if(t+i=s)break}if(a.length{const e=this.selectedEnterpriseNodes.find((e=>e.ip===t.ip));if(!e){this.selectedEnterpriseNodes.push(t);const e=this.enterprisePublicKeys.find((e=>e.nodeip===t.ip));if(!e){const e=await this.fetchEnterpriseKey(t.ip);if(e){const s={nodeip:t.ip,nodekey:e},i=this.enterprisePublicKeys.find((e=>e.nodeip===t.ip));i||this.enterprisePublicKeys.push(s)}}}}))},constructNodes(){if(this.appUpdateSpecification.nodes=[],this.selectedEnterpriseNodes.forEach((t=>{this.appUpdateSpecification.nodes.push(t.ip)})),this.appUpdateSpecification.nodes.length>this.maximumEnterpriseNodes)throw new Error("Maximum of 120 Enterprise Nodes allowed")},async getEnterpriseNodes(){const t=sessionStorage.getItem("flux_enterprise_nodes");t&&(this.enterpriseNodes=JSON.parse(t),this.entNodesSelectTable.totalRows=this.enterpriseNodes.length);try{const t=await J.Z.getEnterpriseNodes();"error"===t.data.status?this.showToast("danger",t.data.data.message||t.data.data):(this.enterpriseNodes=t.data.data,this.entNodesSelectTable.totalRows=this.enterpriseNodes.length,sessionStorage.setItem("flux_enterprise_nodes",JSON.stringify(this.enterpriseNodes)))}catch(e){console.log(e)}},async getDaemonBlockCount(){const t=await Q.Z.getBlockCount();"success"===t.data.status&&(this.daemonBlockCount=t.data.data)},async fetchEnterpriseKey(t){try{const e=t.split(":")[0],s=Number(t.split(":")[1]||16127);let i=`https://${e.replace(/\./g,"-")}-${s}.node.api.runonflux.io/flux/pgp`;this.ipAccess&&(i=`http://${e}:${s}/flux/pgp`);const a=await dc.get(i);if("error"!==a.data.status){const t=a.data.data;return t}return this.showToast("danger",a.data.data.message||a.data.data),null}catch(e){return console.log(e),null}},async encryptMessage(t,e){try{const s=await Promise.all(e.map((t=>mc.readKey({armoredKey:t}))));console.log(e),console.log(t);const i=await mc.createMessage({text:t}),a=await mc.encrypt({message:i,encryptionKeys:s});return a}catch(s){return this.showToast("danger","Data encryption failed"),null}},async onSessionConnect(t){console.log(t);const e=await this.signClient.request({topic:t.topic,chainId:"eip155:1",request:{method:"personal_sign",params:[this.dataToSign,t.namespaces.eip155.accounts[0].split(":")[2]]}});console.log(e),this.signature=e},async initWalletConnect(){try{const t=await tt.ZP.init(rc);this.signClient=t;const e=t.session.getAll().length-1,s=t.session.getAll()[e];if(!s)throw new Error("WalletConnect session expired. Please log into FluxOS again");this.onSessionConnect(s)}catch(t){console.error(t),this.showToast("danger",t.message)}},async siwe(t,e){try{const s=`0x${oc.from(t,"utf8").toString("hex")}`,i=await pc.request({method:"personal_sign",params:[s,e]});console.log(i),this.signature=i}catch(s){console.error(s),this.showToast("danger",s.message)}},async initMetamask(){try{if(!pc)return void this.showToast("danger","Metamask not detected");let t;if(pc&&!pc.selectedAddress){const e=await pc.request({method:"eth_requestAccounts",params:[]});console.log(e),t=e[0]}else t=pc.selectedAddress;this.siwe(this.dataToSign,t)}catch(t){this.showToast("danger",t.message)}},async initSSP(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t=await window.ssp.request("sspwid_sign_message",{message:this.dataToSign});if("ERROR"===t.status)throw new Error(t.data||t.result);this.signature=t.signature}catch(t){this.showToast("danger",t.message)}},async initSSPpay(){try{if(!window.ssp)return void this.showToast("danger","SSP Wallet not installed");const t={message:this.updateHash,amount:(+this.appPricePerSpecs||0).toString(),address:this.deploymentAddress,chain:"flux"},e=await window.ssp.request("pay",t);if("ERROR"===e.status)throw new Error(e.data||e.result);this.showToast("success",`${e.data}: ${e.txid}`)}catch(t){this.showToast("danger",t.message)}},async initStripePay(t,e,s,i){try{this.fiatCheckoutURL="",this.checkoutLoading=!0;const o=localStorage.getItem("zelidauth"),n=hc.parse(o),r={zelid:n.zelid,signature:n.signature,loginPhrase:n.loginPhrase,details:{name:e,description:i,hash:t,price:s,productName:e,success_url:"https://home.runonflux.io/successcheckout",cancel_url:"https://home.runonflux.io",kpi:{origin:"FluxOS",marketplace:this.isMarketplaceApp,registration:!1}}},l=await dc.post(`${Y.M}/api/v1/stripe/checkout/create`,r);if("error"===l.data.status)return this.showToast("error","Failed to create stripe checkout"),void(this.checkoutLoading=!1);this.fiatCheckoutURL=l.data.data,this.checkoutLoading=!1;try{this.openSite(l.data.data)}catch(a){console.log(a),this.showToast("error","Failed to open Stripe checkout, pop-up blocked?")}}catch(a){console.log(a),this.showToast("error","Failed to create stripe checkout"),this.checkoutLoading=!1}},async initPaypalPay(t,e,s,i){try{this.fiatCheckoutURL="",this.checkoutLoading=!0;let o=null,n=await dc.get("https://api.ipify.org?format=json").catch((()=>{console.log("Error geting clientIp from api.ipify.org from")}));n&&n.data&&n.data.ip?o=n.data.ip:(n=await dc.get("https://ipinfo.io").catch((()=>{console.log("Error geting clientIp from ipinfo.io from")})),n&&n.data&&n.data.ip?o=n.data.ip:(n=await dc.get("https://api.ip2location.io").catch((()=>{console.log("Error geting clientIp from api.ip2location.io from")})),n&&n.data&&n.data.ip&&(o=n.data.ip)));const r=localStorage.getItem("zelidauth"),l=hc.parse(r),c={zelid:l.zelid,signature:l.signature,loginPhrase:l.loginPhrase,details:{clientIP:o,name:e,description:i,hash:t,price:s,productName:e,return_url:"home.runonflux.io/successcheckout",cancel_url:"home.runonflux.io",kpi:{origin:"FluxOS",marketplace:this.isMarketplaceApp,registration:!1}}},p=await dc.post(`${Y.M}/api/v1/paypal/checkout/create`,c);if("error"===p.data.status)return this.showToast("error","Failed to create PayPal checkout"),void(this.checkoutLoading=!1);this.fiatCheckoutURL=p.data.data,this.checkoutLoading=!1;try{this.openSite(p.data.data)}catch(a){console.log(a),this.showToast("error","Failed to open Paypal checkout, pop-up blocked?")}}catch(a){console.log(a),this.showToast("error","Failed to create PayPal checkout"),this.checkoutLoading=!1}},async getApplicationManagementAndStatus(){if(this.globalZelidAuthorized&&this.selectedIp){await this.appsGetListAllApps(),console.log(this.getAllAppsResponse);const t=this.getAllAppsResponse.data.find((t=>t.Names[0]===this.getAppDockerNameIdentifier()))||{},e={name:this.appName,state:t.State||"Unknown state",status:t.Status||"Unknown status"};this.appInfoObject.push(e),e.state=e.state.charAt(0).toUpperCase()+e.state.slice(1),e.status=e.status.charAt(0).toUpperCase()+e.status.slice(1);let s=`${e.name} - ${e.state} - ${e.status}`;if(this.appSpecification&&this.appSpecification.version>=4){s=`${this.appSpecification.name}:`;for(const t of this.appSpecification.compose){const e=this.getAllAppsResponse.data.find((e=>e.Names[0]===this.getAppDockerNameIdentifier(`${t.name}_${this.appSpecification.name}`)))||{},i={name:t.name,state:e.State||"Unknown state",status:e.Status||"Unknown status"};this.appInfoObject.push(i),i.state=i.state.charAt(0).toUpperCase()+i.state.slice(1),i.status=i.status.charAt(0).toUpperCase()+i.status.slice(1);const a=` ${i.name} - ${i.state} - ${i.status},`;s+=a}s=s.substring(0,s.length-1),s+=` - ${this.selectedIp}`}this.applicationManagementAndStatus=s}},selectedIpChanged(){this.getApplicationManagementAndStatus(),this.getInstalledApplicationSpecifics()},cleanData(){this.dataToSign="",this.timestamp="",this.signature="",this.updateHash="",this.output=[]}}},vc=bc;var yc=s(1001),xc=(0,yc.Z)(vc,i,a,!1,null,null,null);const wc=xc.exports},2272:(t,e,s)=>{"use strict";s.d(e,{Z:()=>f});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"flux-share-upload",style:t.cssProps},[e("b-row",[e("div",{staticClass:"flux-share-upload-drop text-center",attrs:{id:"dropTarget"},on:{drop:function(e){return e.preventDefault(),t.addFile.apply(null,arguments)},dragover:function(t){t.preventDefault()},click:t.selectFiles}},[e("v-icon",{attrs:{name:"cloud-upload-alt"}}),e("p",[t._v("Drop files here or "),e("em",[t._v("click to upload")])]),e("p",{staticClass:"upload-footer"},[t._v(" (File size is limited to 5GB) ")])],1),e("input",{ref:"fileselector",staticClass:"flux-share-upload-input",attrs:{id:"file-selector",type:"file",multiple:""},on:{change:t.handleFiles}}),e("b-col",{staticClass:"upload-column"},t._l(t.files,(function(s){return e("div",{key:s.file.name,staticClass:"upload-item",staticStyle:{"margin-bottom":"3px"}},[t._v(" "+t._s(s.file.name)+" ("+t._s(t.addAndConvertFileSizes(s.file.size))+") "),e("span",{staticClass:"delete text-white",attrs:{"aria-hidden":"true"}},[s.uploading?t._e():e("v-icon",{style:{color:t.determineColor(s.file.name)},attrs:{name:"trash-alt",disabled:s.uploading},on:{mouseenter:function(e){return t.handleHover(s.file.name,!0)},mouseleave:function(e){return t.handleHover(s.file.name,!1)},focusin:function(e){return t.handleHover(s.file.name,!0)},focusout:function(e){return t.handleHover(s.file.name,!1)},click:function(e){return t.removeFile(s)}}})],1),e("b-progress",{class:s.uploading||s.uploaded?"":"hidden",attrs:{value:s.progress,max:"100",striped:"",height:"5px"}})],1)})),0)],1),e("b-row",[e("b-col",{staticClass:"text-center",attrs:{xs:"12"}},[e("b-button",{staticClass:"delete mt-1",attrs:{variant:"primary",disabled:!t.filesToUpload,size:"sm","aria-label":"Close"},on:{click:function(e){return t.startUpload()}}},[t._v(" Upload Files ")])],1)],1)],1)},a=[],o=(s(70560),s(26253)),n=s(50725),r=s(45752),l=s(15193),c=s(68934),p=s(34547);const d={components:{BRow:o.T,BCol:n.l,BProgress:r.D,BButton:l.T,ToastificationContent:p.Z},props:{uploadFolder:{type:String,required:!0},headers:{type:Object,required:!0}},data(){return{isHovered:!1,hoverStates:{},files:[],primaryColor:c.j.primary,secondaryColor:c.j.secondary}},computed:{cssProps(){return{"--primary-color":this.primaryColor,"--secondary-color":this.secondaryColor}},filesToUpload(){return this.files.length>0&&this.files.some((t=>!t.uploading&&!t.uploaded&&0===t.progress))}},methods:{addAndConvertFileSizes(t,e="auto",s=2){const i={B:1,KB:1024,MB:1048576,GB:1073741824},a=(t,e)=>t/i[e.toUpperCase()],o=(t,e)=>{const i="B"===e?t.toFixed(0):t.toFixed(s);return`${i} ${e}`};let n;if(Array.isArray(t)&&t.length>0)n=+t.reduce(((t,e)=>t+(e.file_size||0)),0);else{if("number"!==typeof+t)return console.error("Invalid sizes parameter"),"N/A";n=+t}if(isNaN(n))return console.error("Total size is not a valid number"),"N/A";if("auto"===e){let t,e=n;return Object.keys(i).forEach((s=>{const i=a(n,s);i>=1&&(void 0===e||i{const e=this.files.some((e=>e.file.name===t.name));console.log(e),e?this.showToast("warning",`'${t.name}' is already in the upload queue`):this.files.push({file:t,uploading:!1,uploaded:!1,progress:0})}))},removeFile(t){this.files=this.files.filter((e=>e.file.name!==t.file.name))},startUpload(){console.log(this.uploadFolder),console.log(this.files),this.files.forEach((t=>{console.log(t),t.uploaded||t.uploading||this.upload(t)}))},upload(t){const e=this;if("undefined"===typeof XMLHttpRequest)return;const s=new XMLHttpRequest,i=this.uploadFolder;s.upload&&(s.upload.onprogress=function(e){console.log(e),e.total>0&&(e.percent=e.loaded/e.total*100),t.progress=e.percent});const a=new FormData;a.append(t.file.name,t.file),t.uploading=!0,s.onerror=function(s){console.log(s),e.showToast("danger",`An error occurred while uploading '${t.file.name}' - ${s}`),e.removeFile(t)},s.onload=function(){if(s.status<200||s.status>=300)return console.log("error"),console.log(s.status),e.showToast("danger",`An error occurred while uploading '${t.file.name}' - Status code: ${s.status}`),void e.removeFile(t);t.uploaded=!0,t.uploading=!1,e.$emit("complete"),e.removeFile(t),e.showToast("success",`'${t.file.name}' has been uploaded`)},s.open("post",i,!0);const o=this.headers||{},n=Object.keys(o);for(let r=0;r{"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var s=0;s=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,n=!0,l=!1;return{s:function(){s=s.call(t)},n:function(){var t=s.next();return n=t.done,t},e:function(t){l=!0,o=t},f:function(){try{n||null==s["return"]||s["return"]()}finally{if(l)throw o}}}}function r(t,e){if(t){if("string"===typeof t)return l(t,e);var s=Object.prototype.toString.call(t).slice(8,-1);return"Object"===s&&t.constructor&&(s=t.constructor.name),"Map"===s||"Set"===s?Array.from(t):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?l(t,e):void 0}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var s=0,i=new Array(e);s0?40*t+55:0,n=e>0?40*e+55:0,r=s>0?40*s+55:0;i[a]=m([o,n,r])}function u(t){var e=t.toString(16);while(e.length<2)e="0"+e;return e}function m(t){var e,s=[],i=n(t);try{for(i.s();!(e=i.n()).done;){var a=e.value;s.push(u(a))}}catch(o){i.e(o)}finally{i.f()}return"#"+s.join("")}function f(t,e,s,i){var a;return"text"===e?a=_(s,i):"display"===e?a=b(t,s,i):"xterm256Foreground"===e?a=k(t,i.colors[s]):"xterm256Background"===e?a=A(t,i.colors[s]):"rgb"===e&&(a=g(t,s)),a}function g(t,e){e=e.substring(2).slice(0,-1);var s=+e.substr(0,2),i=e.substring(5).split(";"),a=i.map((function(t){return("0"+Number(t).toString(16)).substr(-2)})).join("");return C(t,(38===s?"color:#":"background-color:#")+a)}function b(t,e,s){e=parseInt(e,10);var i,a={"-1":function(){return"
"},0:function(){return t.length&&v(t)},1:function(){return S(t,"b")},3:function(){return S(t,"i")},4:function(){return S(t,"u")},8:function(){return C(t,"display:none")},9:function(){return S(t,"strike")},22:function(){return C(t,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return T(t,"i")},24:function(){return T(t,"u")},39:function(){return k(t,s.fg)},49:function(){return A(t,s.bg)},53:function(){return C(t,"text-decoration:overline")}};return a[e]?i=a[e]():4"})).join("")}function y(t,e){for(var s=[],i=t;i<=e;i++)s.push(i);return s}function x(t){return function(e){return(null===t||e.category!==t)&&"all"!==t}}function w(t){t=parseInt(t,10);var e=null;return 0===t?e="all":1===t?e="bold":2")}function C(t,e){return S(t,"span",e)}function k(t,e){return S(t,"span","color:"+e)}function A(t,e){return S(t,"span","background-color:"+e)}function T(t,e){var s;if(t.slice(-1)[0]===e&&(s=t.pop()),s)return""}function P(t,e,s){var i=!1,a=3;function o(){return""}function r(t,e){return s("xterm256Foreground",e),""}function l(t,e){return s("xterm256Background",e),""}function c(t){return e.newline?s("display",-1):s("text",t),""}function p(t,e){i=!0,0===e.trim().length&&(e="0"),e=e.trimRight(";").split(";");var a,o=n(e);try{for(o.s();!(a=o.n()).done;){var r=a.value;s("display",r)}}catch(l){o.e(l)}finally{o.f()}return""}function d(t){return s("text",t),""}function h(t){return s("rgb",t),""}var u=[{pattern:/^\x08+/,sub:o},{pattern:/^\x1b\[[012]?K/,sub:o},{pattern:/^\x1b\[\(B/,sub:o},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:h},{pattern:/^\x1b\[38;5;(\d+)m/,sub:r},{pattern:/^\x1b\[48;5;(\d+)m/,sub:l},{pattern:/^\n/,sub:c},{pattern:/^\r+\n/,sub:c},{pattern:/^\r/,sub:c},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:p},{pattern:/^\x1b\[\d?J/,sub:o},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:o},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:o},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:d}];function m(e,s){s>a&&i||(i=!1,t=t.replace(e.pattern,e.sub))}var f=[],g=t,b=g.length;t:while(b>0){for(var v=0,y=0,x=u.length;y65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};function n(t){return t>=55296&&t<=57343||t>1114111?"�":(t in a.default&&(t=a.default[t]),o(t))}e["default"]=n},65746:function(t,e,s){"use strict";var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=void 0;var a=i(s(70663)),o=p(a.default),n=d(o);e.encodeXML=y(o);var r=i(s(60291)),l=p(r.default),c=d(l);function p(t){return Object.keys(t).sort().reduce((function(e,s){return e[t[s]]="&"+s+";",e}),{})}function d(t){for(var e=[],s=[],i=0,a=Object.keys(t);i1?u(t):t.charCodeAt(0)).toString(16).toUpperCase()+";"}function f(t,e){return function(s){return s.replace(e,(function(e){return t[e]})).replace(h,m)}}var g=new RegExp(n.source+"|"+h.source,"g");function b(t){return t.replace(g,m)}function v(t){return t.replace(n,m)}function y(t){return function(e){return e.replace(g,(function(e){return t[e]||m(e)}))}}e.escape=b,e.escapeUTF8=v},68320:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.decodeXMLStrict=e.decodeHTML5Strict=e.decodeHTML4Strict=e.decodeHTML5=e.decodeHTML4=e.decodeHTMLStrict=e.decodeHTML=e.decodeXML=e.encodeHTML5=e.encodeHTML4=e.escapeUTF8=e.escape=e.encodeNonAsciiHTML=e.encodeHTML=e.encodeXML=e.encode=e.decodeStrict=e.decode=void 0;var i=s(89995),a=s(65746);function o(t,e){return(!e||e<=0?i.decodeXML:i.decodeHTML)(t)}function n(t,e){return(!e||e<=0?i.decodeXML:i.decodeHTMLStrict)(t)}function r(t,e){return(!e||e<=0?a.encodeXML:a.encodeHTML)(t)}e.decode=o,e.decodeStrict=n,e.encode=r;var l=s(65746);Object.defineProperty(e,"encodeXML",{enumerable:!0,get:function(){return l.encodeXML}}),Object.defineProperty(e,"encodeHTML",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(e,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return l.encodeNonAsciiHTML}}),Object.defineProperty(e,"escape",{enumerable:!0,get:function(){return l.escape}}),Object.defineProperty(e,"escapeUTF8",{enumerable:!0,get:function(){return l.escapeUTF8}}),Object.defineProperty(e,"encodeHTML4",{enumerable:!0,get:function(){return l.encodeHTML}}),Object.defineProperty(e,"encodeHTML5",{enumerable:!0,get:function(){return l.encodeHTML}});var c=s(89995);Object.defineProperty(e,"decodeXML",{enumerable:!0,get:function(){return c.decodeXML}}),Object.defineProperty(e,"decodeHTML",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTMLStrict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML4",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTML5",{enumerable:!0,get:function(){return c.decodeHTML}}),Object.defineProperty(e,"decodeHTML4Strict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeHTML5Strict",{enumerable:!0,get:function(){return c.decodeHTMLStrict}}),Object.defineProperty(e,"decodeXMLStrict",{enumerable:!0,get:function(){return c.decodeXML}})},56761:t=>{(function(){"use strict";t.exports=function(t,e,s){for(var i=e||/\s/g,a=!1,o=!1,n=[],r=[],l=t.split(""),c=0;c0?(r.push(n.join("")),n=[]):e&&r.push(p):(!0===s&&n.push(p),o=!o):(!0===s&&n.push(p),a=!a)}return n.length>0?r.push(n.join("")):e&&r.push(""),r}})()},12617:t=>{!function(e,s){t.exports=s()}(self,(()=>(()=>{"use strict";var t={};return(()=>{var e=t;Object.defineProperty(e,"__esModule",{value:!0}),e.FitAddon=void 0,e.FitAddon=class{activate(t){this._terminal=t}dispose(){}fit(){const t=this.proposeDimensions();if(!t||!this._terminal||isNaN(t.cols)||isNaN(t.rows))return;const e=this._terminal._core;this._terminal.rows===t.rows&&this._terminal.cols===t.cols||(e._renderService.clear(),this._terminal.resize(t.cols,t.rows))}proposeDimensions(){if(!this._terminal)return;if(!this._terminal.element||!this._terminal.element.parentElement)return;const t=this._terminal._core,e=t._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;const s=0===this._terminal.options.scrollback?0:t.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),a=parseInt(i.getPropertyValue("height")),o=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),r=a-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),l=o-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-s;return{cols:Math.max(2,Math.floor(l/e.css.cell.width)),rows:Math.max(1,Math.floor(r/e.css.cell.height))}}}})(),t})()))},12286:function(t){!function(e,s){t.exports=s()}(0,(()=>(()=>{"use strict";var t={930:(t,e,s)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ColorContrastCache=void 0;const i=s(485);e.ColorContrastCache=class{constructor(){this._color=new i.TwoKeyMap,this._css=new i.TwoKeyMap}setCss(t,e,s){this._css.set(t,e,s)}getCss(t,e){return this._css.get(t,e)}setColor(t,e,s){this._color.set(t,e,s)}getColor(t,e){return this._color.get(t,e)}clear(){this._color.clear(),this._css.clear()}}},997:function(t,e,s){var i=this&&this.__decorate||function(t,e,s,i){var a,o=arguments.length,n=o<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,s,i);else for(var r=t.length-1;r>=0;r--)(a=t[r])&&(n=(o<3?a(n):o>3?a(e,s,n):a(e,s))||n);return o>3&&n&&Object.defineProperty(e,s,n),n},a=this&&this.__param||function(t,e){return function(s,i){e(s,i,t)}};Object.defineProperty(e,"__esModule",{value:!0}),e.ThemeService=e.DEFAULT_ANSI_COLORS=void 0;const o=s(930),n=s(160),r=s(345),l=s(859),c=s(97),p=n.css.toColor("#ffffff"),d=n.css.toColor("#000000"),h=n.css.toColor("#ffffff"),u=n.css.toColor("#000000"),m={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};e.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const t=[n.css.toColor("#2e3436"),n.css.toColor("#cc0000"),n.css.toColor("#4e9a06"),n.css.toColor("#c4a000"),n.css.toColor("#3465a4"),n.css.toColor("#75507b"),n.css.toColor("#06989a"),n.css.toColor("#d3d7cf"),n.css.toColor("#555753"),n.css.toColor("#ef2929"),n.css.toColor("#8ae234"),n.css.toColor("#fce94f"),n.css.toColor("#729fcf"),n.css.toColor("#ad7fa8"),n.css.toColor("#34e2e2"),n.css.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let s=0;s<216;s++){const i=e[s/36%6|0],a=e[s/6%6|0],o=e[s%6];t.push({css:n.channels.toCss(i,a,o),rgba:n.channels.toRgba(i,a,o)})}for(let s=0;s<24;s++){const e=8+10*s;t.push({css:n.channels.toCss(e,e,e),rgba:n.channels.toRgba(e,e,e)})}return t})());let f=e.ThemeService=class extends l.Disposable{get colors(){return this._colors}constructor(t){super(),this._optionsService=t,this._contrastCache=new o.ColorContrastCache,this._halfContrastCache=new o.ColorContrastCache,this._onChangeColors=this.register(new r.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:p,background:d,cursor:h,cursorAccent:u,selectionForeground:void 0,selectionBackgroundTransparent:m,selectionBackgroundOpaque:n.color.blend(d,m),selectionInactiveBackgroundTransparent:m,selectionInactiveBackgroundOpaque:n.color.blend(d,m),ansi:e.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio",(()=>this._contrastCache.clear()))),this.register(this._optionsService.onSpecificOptionChange("theme",(()=>this._setTheme(this._optionsService.rawOptions.theme))))}_setTheme(t={}){const s=this._colors;if(s.foreground=g(t.foreground,p),s.background=g(t.background,d),s.cursor=g(t.cursor,h),s.cursorAccent=g(t.cursorAccent,u),s.selectionBackgroundTransparent=g(t.selectionBackground,m),s.selectionBackgroundOpaque=n.color.blend(s.background,s.selectionBackgroundTransparent),s.selectionInactiveBackgroundTransparent=g(t.selectionInactiveBackground,s.selectionBackgroundTransparent),s.selectionInactiveBackgroundOpaque=n.color.blend(s.background,s.selectionInactiveBackgroundTransparent),s.selectionForeground=t.selectionForeground?g(t.selectionForeground,n.NULL_COLOR):void 0,s.selectionForeground===n.NULL_COLOR&&(s.selectionForeground=void 0),n.color.isOpaque(s.selectionBackgroundTransparent)){const t=.3;s.selectionBackgroundTransparent=n.color.opacity(s.selectionBackgroundTransparent,t)}if(n.color.isOpaque(s.selectionInactiveBackgroundTransparent)){const t=.3;s.selectionInactiveBackgroundTransparent=n.color.opacity(s.selectionInactiveBackgroundTransparent,t)}if(s.ansi=e.DEFAULT_ANSI_COLORS.slice(),s.ansi[0]=g(t.black,e.DEFAULT_ANSI_COLORS[0]),s.ansi[1]=g(t.red,e.DEFAULT_ANSI_COLORS[1]),s.ansi[2]=g(t.green,e.DEFAULT_ANSI_COLORS[2]),s.ansi[3]=g(t.yellow,e.DEFAULT_ANSI_COLORS[3]),s.ansi[4]=g(t.blue,e.DEFAULT_ANSI_COLORS[4]),s.ansi[5]=g(t.magenta,e.DEFAULT_ANSI_COLORS[5]),s.ansi[6]=g(t.cyan,e.DEFAULT_ANSI_COLORS[6]),s.ansi[7]=g(t.white,e.DEFAULT_ANSI_COLORS[7]),s.ansi[8]=g(t.brightBlack,e.DEFAULT_ANSI_COLORS[8]),s.ansi[9]=g(t.brightRed,e.DEFAULT_ANSI_COLORS[9]),s.ansi[10]=g(t.brightGreen,e.DEFAULT_ANSI_COLORS[10]),s.ansi[11]=g(t.brightYellow,e.DEFAULT_ANSI_COLORS[11]),s.ansi[12]=g(t.brightBlue,e.DEFAULT_ANSI_COLORS[12]),s.ansi[13]=g(t.brightMagenta,e.DEFAULT_ANSI_COLORS[13]),s.ansi[14]=g(t.brightCyan,e.DEFAULT_ANSI_COLORS[14]),s.ansi[15]=g(t.brightWhite,e.DEFAULT_ANSI_COLORS[15]),t.extendedAnsi){const i=Math.min(s.ansi.length-16,t.extendedAnsi.length);for(let a=0;a{Object.defineProperty(e,"__esModule",{value:!0}),e.contrastRatio=e.toPaddedHex=e.rgba=e.rgb=e.css=e.color=e.channels=e.NULL_COLOR=void 0;const i=s(399);let a=0,o=0,n=0,r=0;var l,c,p,d,h;function u(t){const e=t.toString(16);return e.length<2?"0"+e:e}function m(t,e){return t>>0}}(l||(e.channels=l={})),function(t){function e(t,e){return r=Math.round(255*e),[a,o,n]=h.toChannels(t.rgba),{css:l.toCss(a,o,n,r),rgba:l.toRgba(a,o,n,r)}}t.blend=function(t,e){if(r=(255&e.rgba)/255,1===r)return{css:e.css,rgba:e.rgba};const s=e.rgba>>24&255,i=e.rgba>>16&255,c=e.rgba>>8&255,p=t.rgba>>24&255,d=t.rgba>>16&255,h=t.rgba>>8&255;return a=p+Math.round((s-p)*r),o=d+Math.round((i-d)*r),n=h+Math.round((c-h)*r),{css:l.toCss(a,o,n),rgba:l.toRgba(a,o,n)}},t.isOpaque=function(t){return 255==(255&t.rgba)},t.ensureContrastRatio=function(t,e,s){const i=h.ensureContrastRatio(t.rgba,e.rgba,s);if(i)return h.toColor(i>>24&255,i>>16&255,i>>8&255)},t.opaque=function(t){const e=(255|t.rgba)>>>0;return[a,o,n]=h.toChannels(e),{css:l.toCss(a,o,n),rgba:e}},t.opacity=e,t.multiplyOpacity=function(t,s){return r=255&t.rgba,e(t,r*s/255)},t.toColorRGB=function(t){return[t.rgba>>24&255,t.rgba>>16&255,t.rgba>>8&255]}}(c||(e.color=c={})),function(t){let e,s;if(!i.isNode){const t=document.createElement("canvas");t.width=1,t.height=1;const i=t.getContext("2d",{willReadFrequently:!0});i&&(e=i,e.globalCompositeOperation="copy",s=e.createLinearGradient(0,0,1,1))}t.toColor=function(t){if(t.match(/#[\da-f]{3,8}/i))switch(t.length){case 4:return a=parseInt(t.slice(1,2).repeat(2),16),o=parseInt(t.slice(2,3).repeat(2),16),n=parseInt(t.slice(3,4).repeat(2),16),h.toColor(a,o,n);case 5:return a=parseInt(t.slice(1,2).repeat(2),16),o=parseInt(t.slice(2,3).repeat(2),16),n=parseInt(t.slice(3,4).repeat(2),16),r=parseInt(t.slice(4,5).repeat(2),16),h.toColor(a,o,n,r);case 7:return{css:t,rgba:(parseInt(t.slice(1),16)<<8|255)>>>0};case 9:return{css:t,rgba:parseInt(t.slice(1),16)>>>0}}const i=t.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(i)return a=parseInt(i[1]),o=parseInt(i[2]),n=parseInt(i[3]),r=Math.round(255*(void 0===i[5]?1:parseFloat(i[5]))),h.toColor(a,o,n,r);if(!e||!s)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=s,e.fillStyle=t,"string"!=typeof e.fillStyle)throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[a,o,n,r]=e.getImageData(0,0,1,1).data,255!==r)throw new Error("css.toColor: Unsupported css format");return{rgba:l.toRgba(a,o,n,r),css:t}}}(p||(e.css=p={})),function(t){function e(t,e,s){const i=t/255,a=e/255,o=s/255;return.2126*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))+.7152*(a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))+.0722*(o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4))}t.relativeLuminance=function(t){return e(t>>16&255,t>>8&255,255&t)},t.relativeLuminance2=e}(d||(e.rgb=d={})),function(t){function e(t,e,s){const i=t>>24&255,a=t>>16&255,o=t>>8&255;let n=e>>24&255,r=e>>16&255,l=e>>8&255,c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));for(;c0||r>0||l>0);)n-=Math.max(0,Math.ceil(.1*n)),r-=Math.max(0,Math.ceil(.1*r)),l-=Math.max(0,Math.ceil(.1*l)),c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));return(n<<24|r<<16|l<<8|255)>>>0}function s(t,e,s){const i=t>>24&255,a=t>>16&255,o=t>>8&255;let n=e>>24&255,r=e>>16&255,l=e>>8&255,c=m(d.relativeLuminance2(n,r,l),d.relativeLuminance2(i,a,o));for(;c>>0}t.ensureContrastRatio=function(t,i,a){const o=d.relativeLuminance(t>>8),n=d.relativeLuminance(i>>8);if(m(o,n)>8));if(rm(o,d.relativeLuminance(e>>8))?n:e}return n}const r=s(t,i,a),l=m(o,d.relativeLuminance(r>>8));if(lm(o,d.relativeLuminance(s>>8))?r:s}return r}},t.reduceLuminance=e,t.increaseLuminance=s,t.toChannels=function(t){return[t>>24&255,t>>16&255,t>>8&255,255&t]},t.toColor=function(t,e,s,i){return{css:l.toCss(t,e,s,i),rgba:l.toRgba(t,e,s,i)}}}(h||(e.rgba=h={})),e.toPaddedHex=u,e.contrastRatio=m},345:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.forwardEvent=e.EventEmitter=void 0,e.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=t=>(this._listeners.push(t),{dispose:()=>{if(!this._disposed)for(let e=0;ee.fire(t)))}},859:(t,e)=>{function s(t){for(const e of t)e.dispose();t.length=0}Object.defineProperty(e,"__esModule",{value:!0}),e.getDisposeArrayDisposable=e.disposeArray=e.toDisposable=e.MutableDisposable=e.Disposable=void 0,e.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const t of this._disposables)t.dispose();this._disposables.length=0}register(t){return this._disposables.push(t),t}unregister(t){const e=this._disposables.indexOf(t);-1!==e&&this._disposables.splice(e,1)}},e.MutableDisposable=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(t){var e;this._isDisposed||t===this._value||(null===(e=this._value)||void 0===e||e.dispose(),this._value=t)}clear(){this.value=void 0}dispose(){var t;this._isDisposed=!0,null===(t=this._value)||void 0===t||t.dispose(),this._value=void 0}},e.toDisposable=function(t){return{dispose:t}},e.disposeArray=s,e.getDisposeArrayDisposable=function(t){return{dispose:()=>s(t)}}},485:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FourKeyMap=e.TwoKeyMap=void 0;class s{constructor(){this._data={}}set(t,e,s){this._data[t]||(this._data[t]={}),this._data[t][e]=s}get(t,e){return this._data[t]?this._data[t][e]:void 0}clear(){this._data={}}}e.TwoKeyMap=s,e.FourKeyMap=class{constructor(){this._data=new s}set(t,e,i,a,o){this._data.get(t,e)||this._data.set(t,e,new s),this._data.get(t,e).set(i,a,o)}get(t,e,s,i){var a;return null===(a=this._data.get(t,e))||void 0===a?void 0:a.get(s,i)}clear(){this._data.clear()}}},399:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isChromeOS=e.isLinux=e.isWindows=e.isIphone=e.isIpad=e.isMac=e.getSafariVersion=e.isSafari=e.isLegacyEdge=e.isFirefox=e.isNode=void 0,e.isNode="undefined"==typeof navigator;const s=e.isNode?"node":navigator.userAgent,i=e.isNode?"node":navigator.platform;e.isFirefox=s.includes("Firefox"),e.isLegacyEdge=s.includes("Edge"),e.isSafari=/^((?!chrome|android).)*safari/i.test(s),e.getSafariVersion=function(){if(!e.isSafari)return 0;const t=s.match(/Version\/(\d+)/);return null===t||t.length<2?0:parseInt(t[1])},e.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(i),e.isIpad="iPad"===i,e.isIphone="iPhone"===i,e.isWindows=["Windows","Win16","Win32","WinCE"].includes(i),e.isLinux=i.indexOf("Linux")>=0,e.isChromeOS=/\bCrOS\b/.test(s)},726:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createDecorator=e.getServiceDependencies=e.serviceRegistry=void 0;const s="di$target",i="di$dependencies";e.serviceRegistry=new Map,e.getServiceDependencies=function(t){return t[i]||[]},e.createDecorator=function(t){if(e.serviceRegistry.has(t))return e.serviceRegistry.get(t);const a=function(t,e,o){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");!function(t,e,a){e[s]===e?e[i].push({id:t,index:a}):(e[i]=[{id:t,index:a}],e[s]=e)}(a,t,o)};return a.toString=()=>t,e.serviceRegistry.set(t,a),a}},97:(t,e,s)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.IDecorationService=e.IUnicodeService=e.IOscLinkService=e.IOptionsService=e.ILogService=e.LogLevelEnum=e.IInstantiationService=e.ICharsetService=e.ICoreService=e.ICoreMouseService=e.IBufferService=void 0;const i=s(726);var a;e.IBufferService=(0,i.createDecorator)("BufferService"),e.ICoreMouseService=(0,i.createDecorator)("CoreMouseService"),e.ICoreService=(0,i.createDecorator)("CoreService"),e.ICharsetService=(0,i.createDecorator)("CharsetService"),e.IInstantiationService=(0,i.createDecorator)("InstantiationService"),function(t){t[t.TRACE=0]="TRACE",t[t.DEBUG=1]="DEBUG",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.OFF=5]="OFF"}(a||(e.LogLevelEnum=a={})),e.ILogService=(0,i.createDecorator)("LogService"),e.IOptionsService=(0,i.createDecorator)("OptionsService"),e.IOscLinkService=(0,i.createDecorator)("OscLinkService"),e.IUnicodeService=(0,i.createDecorator)("UnicodeService"),e.IDecorationService=(0,i.createDecorator)("DecorationService")}},e={};function s(i){var a=e[i];if(void 0!==a)return a.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,s),o.exports}var i={};return(()=>{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.HTMLSerializeHandler=t.SerializeAddon=void 0;const e=s(997);function a(t,e,s){return Math.max(e,Math.min(t,s))}class o{constructor(t){this._buffer=t}serialize(t){const e=this._buffer.getNullCell(),s=this._buffer.getNullCell();let i=e;const a=t.start.x,o=t.end.x,n=t.start.y,r=t.end.y;this._beforeSerialize(o-a,a,o);for(let l=a;l<=o;l++){const a=this._buffer.getLine(l);if(a){const o=l!==t.start.x?0:n,c=l!==t.end.x?a.length:r;for(let t=o;t0&&!r(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`[${this._nullCellCount}X`);let i="";if(!e){t-this._firstRow>=this._terminal.rows&&(null===(s=this._buffer.getLine(this._cursorStyleRow))||void 0===s||s.getCell(this._cursorStyleCol,this._backgroundCell));const e=this._buffer.getLine(t),a=this._buffer.getLine(t+1);if(a.isWrapped){i="";const s=e.getCell(e.length-1,this._thisRowLastChar),o=e.getCell(e.length-2,this._thisRowLastSecondChar),n=a.getCell(0,this._nextRowFirstChar),l=n.getWidth()>1;let c=!1;(n.getChars()&&l?this._nullCellCount<=1:this._nullCellCount<=0)&&((s.getChars()||0===s.getWidth())&&r(s,n)&&(c=!0),l&&(o.getChars()||0===o.getWidth())&&r(s,n)&&r(o,n)&&(c=!0)),c||(i="-".repeat(this._nullCellCount+1),i+="",this._nullCellCount>0&&(i+="",i+=`[${e.length-this._nullCellCount}C`,i+=`[${this._nullCellCount}X`,i+=`[${e.length-this._nullCellCount}D`,i+=""),this._lastContentCursorRow=t+1,this._lastContentCursorCol=0,this._lastCursorRow=t+1,this._lastCursorCol=0)}else i="\r\n",this._lastCursorRow=t+1,this._lastCursorCol=0}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=i,this._currentRow="",this._nullCellCount=0}_diffStyle(t,e){const s=[],i=!n(t,e),a=!r(t,e),o=!l(t,e);if(i||a||o)if(t.isAttributeDefault())e.isAttributeDefault()||s.push(0);else{if(i){const e=t.getFgColor();t.isFgRGB()?s.push(38,2,e>>>16&255,e>>>8&255,255&e):t.isFgPalette()?e>=16?s.push(38,5,e):s.push(8&e?90+(7&e):30+(7&e)):s.push(39)}if(a){const e=t.getBgColor();t.isBgRGB()?s.push(48,2,e>>>16&255,e>>>8&255,255&e):t.isBgPalette()?e>=16?s.push(48,5,e):s.push(8&e?100+(7&e):40+(7&e)):s.push(49)}o&&(t.isInverse()!==e.isInverse()&&s.push(t.isInverse()?7:27),t.isBold()!==e.isBold()&&s.push(t.isBold()?1:22),t.isUnderline()!==e.isUnderline()&&s.push(t.isUnderline()?4:24),t.isOverline()!==e.isOverline()&&s.push(t.isOverline()?53:55),t.isBlink()!==e.isBlink()&&s.push(t.isBlink()?5:25),t.isInvisible()!==e.isInvisible()&&s.push(t.isInvisible()?8:28),t.isItalic()!==e.isItalic()&&s.push(t.isItalic()?3:23),t.isDim()!==e.isDim()&&s.push(t.isDim()?2:22),t.isStrikethrough()!==e.isStrikethrough()&&s.push(t.isStrikethrough()?9:29))}return s}_nextCell(t,e,s,i){if(0===t.getWidth())return;const a=""===t.getChars(),o=this._diffStyle(t,this._cursorStyle);if(a?!r(this._cursorStyle,t):o.length>0){this._nullCellCount>0&&(r(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`[${this._nullCellCount}X`),this._currentRow+=`[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=s,this._lastContentCursorCol=this._lastCursorCol=i,this._currentRow+=`[${o.join(";")}m`;const t=this._buffer.getLine(s);void 0!==t&&(t.getCell(i,this._cursorStyle),this._cursorStyleRow=s,this._cursorStyleCol=i)}a?this._nullCellCount+=t.getWidth():(this._nullCellCount>0&&(r(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`[${this._nullCellCount}X`),this._currentRow+=`[${this._nullCellCount}C`,this._nullCellCount=0),this._currentRow+=t.getChars(),this._lastContentCursorRow=this._lastCursorRow=s,this._lastContentCursorCol=this._lastCursorCol=i+t.getWidth())}_serializeString(){let t=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(t=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let e="";for(let r=0;r0?e+=`[${a}B`:a<0&&(e+=`[${-a}A`),(t=>{t>0?e+=`[${t}C`:t<0&&(e+=`[${-t}D`)})(i-this._lastCursorCol));const o=this._terminal._core._inputHandler._curAttrData,n=this._diffStyle(o,this._cursorStyle);return n.length>0&&(e+=`[${n.join(";")}m`),e}}t.SerializeAddon=class{activate(t){this._terminal=t}_serializeBuffer(t,e,s){const i=e.length,o=new c(e,t),n=void 0===s?i:a(s+t.rows,0,i);return o.serialize({start:{x:i-n,y:0},end:{x:i-1,y:t.cols}})}_serializeBufferAsHTML(t,e){var s,i;const o=t.buffer.active,n=new p(o,t,e);if(null===(s=e.onlySelection)||void 0===s||!s){const s=o.length,i=e.scrollback,r=void 0===i?s:a(i+t.rows,0,s);return n.serialize({start:{x:s-r,y:0},end:{x:s-1,y:t.cols}})}const r=null===(i=this._terminal)||void 0===i?void 0:i.getSelectionPosition();return void 0!==r?n.serialize({start:{x:r.start.y,y:r.start.x},end:{x:r.end.y,y:r.end.x}}):""}_serializeModes(t){let e="";const s=t.modes;if(s.applicationCursorKeysMode&&(e+="[?1h"),s.applicationKeypadMode&&(e+="[?66h"),s.bracketedPasteMode&&(e+="[?2004h"),s.insertMode&&(e+=""),s.originMode&&(e+="[?6h"),s.reverseWraparoundMode&&(e+="[?45h"),s.sendFocusMode&&(e+="[?1004h"),!1===s.wraparoundMode&&(e+="[?7l"),"none"!==s.mouseTrackingMode)switch(s.mouseTrackingMode){case"x10":e+="[?9h";break;case"vt200":e+="[?1000h";break;case"drag":e+="[?1002h";break;case"any":e+="[?1003h"}return e}serialize(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=this._serializeBuffer(this._terminal,this._terminal.buffer.normal,null==t?void 0:t.scrollback);return(null==t?void 0:t.excludeAltBuffer)||"alternate"!==this._terminal.buffer.active.type||(e+=`[?1049h${this._serializeBuffer(this._terminal,this._terminal.buffer.alternate,void 0)}`),(null==t?void 0:t.excludeModes)||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(t){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,t||{})}dispose(){}};class p extends o{constructor(t,s,i){super(t),this._terminal=s,this._options=i,this._currentRow="",this._htmlContent="",s._core._themeService?this._ansiColors=s._core._themeService.colors.ansi:this._ansiColors=e.DEFAULT_ANSI_COLORS}_padStart(t,e,s){return e>>=0,s=null!=s?s:" ",t.length>e?t:((e-=t.length)>s.length&&(s+=s.repeat(e/s.length)),s.slice(0,e)+t)}_beforeSerialize(t,e,s){var i,a,o,n,r;this._htmlContent+="\x3c!--StartFragment--\x3e
";let l="#000000",c="#ffffff";null!==(i=this._options.includeGlobalBackground)&&void 0!==i&&i&&(l=null!==(o=null===(a=this._terminal.options.theme)||void 0===a?void 0:a.foreground)&&void 0!==o?o:"#ffffff",c=null!==(r=null===(n=this._terminal.options.theme)||void 0===n?void 0:n.background)&&void 0!==r?r:"#000000");const p=[];p.push("color: "+l+";"),p.push("background-color: "+c+";"),p.push("font-family: "+this._terminal.options.fontFamily+";"),p.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="
"}_afterSerialize(){this._htmlContent+="
",this._htmlContent+="
\x3c!--EndFragment--\x3e"}_rowEnd(t,e){this._htmlContent+="
"+this._currentRow+"
",this._currentRow=""}_getHexColor(t,e){const s=e?t.getFgColor():t.getBgColor();return(e?t.isFgRGB():t.isBgRGB())?[s>>16&255,s>>8&255,255&s].map((t=>this._padStart(t.toString(16),2,"0"))).join(""):(e?t.isFgPalette():t.isBgPalette())?this._ansiColors[s].css:void 0}_diffStyle(t,e){const s=[],i=!n(t,e),a=!r(t,e),o=!l(t,e);if(i||a||o){const e=this._getHexColor(t,!0);e&&s.push("color: "+e+";");const i=this._getHexColor(t,!1);return i&&s.push("background-color: "+i+";"),t.isInverse()&&s.push("color: #000000; background-color: #BFBFBF;"),t.isBold()&&s.push("font-weight: bold;"),t.isUnderline()&&t.isOverline()?s.push("text-decoration: overline underline;"):t.isUnderline()?s.push("text-decoration: underline;"):t.isOverline()&&s.push("text-decoration: overline;"),t.isBlink()&&s.push("text-decoration: blink;"),t.isInvisible()&&s.push("visibility: hidden;"),t.isItalic()&&s.push("font-style: italic;"),t.isDim()&&s.push("opacity: 0.5;"),t.isStrikethrough()&&s.push("text-decoration: line-through;"),s}}_nextCell(t,e,s,i){if(0===t.getWidth())return;const a=""===t.getChars(),o=this._diffStyle(t,e);o&&(this._currentRow+=0===o.length?"
":""),this._currentRow+=a?" ":t.getChars()}_serializeString(){return this._htmlContent}}t.HTMLSerializeHandler=p})(),i})()))},32993:function(t){!function(e,s){t.exports=s()}(0,(()=>(()=>{"use strict";var t={433:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeV11=void 0;const s=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],i=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],a=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],o=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]];let n;function r(t,e){let s,i=0,a=e.length-1;if(te[a][1])return!1;for(;a>=i;)if(s=i+a>>1,t>e[s][1])i=s+1;else{if(!(t{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.Unicode11Addon=void 0;const e=s(433);t.Unicode11Addon=class{activate(t){t.unicode.register(new e.UnicodeV11)}dispose(){}}})(),i})()))},67511:t=>{!function(e,s){t.exports=s()}(self,(()=>(()=>{"use strict";var t={6:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LinkComputer=e.WebLinkProvider=void 0,e.WebLinkProvider=class{constructor(t,e,s,i={}){this._terminal=t,this._regex=e,this._handler=s,this._options=i}provideLinks(t,e){const i=s.computeLink(t,this._regex,this._terminal,this._handler);e(this._addCallbacks(i))}_addCallbacks(t){return t.map((t=>(t.leave=this._options.leave,t.hover=(e,s)=>{if(this._options.hover){const{range:i}=t;this._options.hover(e,s,i)}},t)))}};class s{static computeLink(t,e,i,a){const o=new RegExp(e.source,(e.flags||"")+"g"),[n,r]=s._getWindowedLineStrings(t-1,i),l=n.join("");let c;const p=[];for(;c=o.exec(l);){const e=c[0];try{const t=new URL(e),s=decodeURI(t.toString());if(e!==s&&e+"/"!==s)continue}catch(t){continue}const[o,n]=s._mapStrIdx(i,r,0,c.index),[l,d]=s._mapStrIdx(i,o,n,e.length);if(-1===o||-1===n||-1===l||-1===d)continue;const h={start:{x:n+1,y:o+1},end:{x:d,y:l+1}};p.push({range:h,text:e,activate:a})}return p}static _getWindowedLineStrings(t,e){let s,i=t,a=t,o=0,n="";const r=[];if(s=e.buffer.active.getLine(t)){const t=s.translateToString(!0);if(s.isWrapped&&" "!==t[0]){for(o=0;(s=e.buffer.active.getLine(--i))&&o<2048&&(n=s.translateToString(!0),o+=n.length,r.push(n),s.isWrapped&&-1===n.indexOf(" ")););r.reverse()}for(r.push(t),o=0;(s=e.buffer.active.getLine(++a))&&s.isWrapped&&o<2048&&(n=s.translateToString(!0),o+=n.length,r.push(n),-1===n.indexOf(" ")););}return[r,i]}static _mapStrIdx(t,e,s,i){const a=t.buffer.active,o=a.getNullCell();let n=s;for(;i;){const t=a.getLine(e);if(!t)return[-1,-1];for(let s=n;s{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.WebLinksAddon=void 0;const e=s(6),a=/https?:[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;function o(t,e){const s=window.open();if(s){try{s.opener=null}catch(t){}s.location.href=e}else console.warn("Opening link blocked as opener could not be cleared")}t.WebLinksAddon=class{constructor(t=o,e={}){this._handler=t,this._options=e}activate(t){this._terminal=t;const s=this._options,i=s.urlRegex||a;this._linkProvider=this._terminal.registerLinkProvider(new e.WebLinkProvider(this._terminal,i,this._handler,s))}dispose(){var t;null===(t=this._linkProvider)||void 0===t||t.dispose()}}})(),i})()))},94961:t=>{"use strict";t.exports=JSON.parse('{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}')},60291:t=>{"use strict";t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},48491:t=>{"use strict";t.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"­","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}')},70663:t=>{"use strict";t.exports=JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}')}}]); \ No newline at end of file diff --git a/HomeUI/dist/js/index.js b/HomeUI/dist/js/index.js index bdb9a5ca7..83b636545 100644 --- a/HomeUI/dist/js/index.js +++ b/HomeUI/dist/js/index.js @@ -1 +1 @@ -(()=>{var e={86713:(e,t,a)=>{"use strict";a.r(t)},49630:(e,t,a)=>{"use strict";a.r(t)},37307:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});var n=a(20144),o=a(73507);function i(){const e=(0,n.computed)({get:()=>o.Z.state.verticalMenu.isVerticalMenuCollapsed,set:e=>{o.Z.commit("verticalMenu/UPDATE_VERTICAL_MENU_COLLAPSED",e)}}),t=(0,n.computed)({get:()=>o.Z.state.flux.xdaoOpen,set:e=>{o.Z.commit("flux/setXDAOOpen",e)}}),a=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.isRTL,set:e=>{o.Z.commit("appConfig/TOGGLE_RTL",e)}}),i=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.skin,set:e=>{o.Z.commit("appConfig/UPDATE_SKIN",e)}}),r=(0,n.computed)((()=>"bordered"===i.value?"bordered-layout":"semi-dark"===i.value?"semi-dark-layout":null)),s=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.routerTransition,set:e=>{o.Z.commit("appConfig/UPDATE_ROUTER_TRANSITION",e)}}),l=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.type,set:e=>{o.Z.commit("appConfig/UPDATE_LAYOUT_TYPE",e)}});(0,n.watch)(l,(e=>{"horizontal"===e&&"semi-dark"===i.value&&(i.value="light")}));const d=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.contentWidth,set:e=>{o.Z.commit("appConfig/UPDATE_CONTENT_WIDTH",e)}}),c=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.menu.hidden,set:e=>{o.Z.commit("appConfig/UPDATE_NAV_MENU_HIDDEN",e)}}),m=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.menu.collapsed,set:e=>{o.Z.commit("appConfig/UPDATE_MENU_COLLAPSED",e)}}),p=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.navbar.backgroundColor,set:e=>{o.Z.commit("appConfig/UPDATE_NAVBAR_CONFIG",{backgroundColor:e})}}),u=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.navbar.type,set:e=>{o.Z.commit("appConfig/UPDATE_NAVBAR_CONFIG",{type:e})}}),b=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.footer.type,set:e=>{o.Z.commit("appConfig/UPDATE_FOOTER_CONFIG",{type:e})}});return{isVerticalMenuCollapsed:e,isRTL:a,skin:i,skinClasses:r,routerTransition:s,navbarBackgroundColor:p,navbarType:u,footerType:b,layoutType:l,contentWidth:d,isNavMenuHidden:c,isNavMenuCollapsed:m,xdaoOpenProposals:t}}},82162:e=>{const t=[{name:"Games",variant:"success",icon:"gamepad"},{name:"Productivity",variant:"danger",icon:"file-alt"},{name:"Hosting",variant:"success",icon:"server"},{name:"Blockchain",variant:"success",icon:"coins"},{name:"Blockbook",variant:"success",icon:"book"},{name:"Front-end",variant:"success",icon:"desktop"},{name:"RPC Node",variant:"success",icon:"satellite-dish"},{name:"Masternode",variant:"success",icon:"wallet"}],a={name:"App",variant:"success",icon:"cog"};e.exports={categories:t,defaultCategory:a}},69699:(e,t,a)=>{"use strict";var n=a(20144),o=a(77354),i=a(48648),r=a(68793),s=a(54016),l=a(51205),d=a(33017),c=a(27856),m=a.n(c),p=a(24019),u=a(73507),b=function(){var e=this,t=e._self._c;return t("div",{staticClass:"h-100",class:[e.skinClasses],attrs:{id:"app"}},[t(e.layout,{tag:"component"},[t("router-view")],1),e.enableScrollToTop?t("scroll-to-top"):e._e()],1)},g=[],h=function(){var e=this,t=e._self._c;return t("div",{staticClass:"btn-scroll-to-top",class:{show:e.y>250}},[t("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"btn-icon",attrs:{variant:"primary"},on:{click:e.scrollToTop}},[t("feather-icon",{attrs:{icon:"ArrowUpIcon",size:"16"}})],1)],1)},f=[],x=a(52829),v=a(15193),k=a(20266);const A={directives:{Ripple:k.Z},components:{BButton:v.T},setup(){const{y:e}=(0,x.baj)(),t=()=>{const e=document.documentElement;e.scrollTo({top:0,behavior:"smooth"})};return{y:e,scrollToTop:t}}},y=A;var T=a(1001),C=(0,T.Z)(y,h,f,!1,null,"4d172cb1",null);const P=C.exports;var D=a(68934),w=a(41905),B=a(37307),E=a(34369);const N=a(80129),S=()=>Promise.all([a.e(6301),a.e(7218),a.e(2755),a.e(460),a.e(5486)]).then(a.bind(a,57591)),Z=()=>a.e(2791).then(a.bind(a,82791)),L={components:{LayoutVertical:S,LayoutFull:Z,ScrollToTop:P},setup(){const{skin:e,skinClasses:t}=(0,B.Z)(),{enableScrollToTop:a}=D.$themeConfig.layout;"dark"===e.value&&document.body.classList.add("dark-layout"),(0,w.provideToast)({hideProgressBar:!0,closeOnClick:!1,closeButton:!1,icon:!1,timeout:3e3,transition:"Vue-Toastification__fade"}),u.Z.commit("app/UPDATE_WINDOW_WIDTH",window.innerWidth);const{width:o}=(0,x.iPe)();return(0,n.watch)(o,(e=>{u.Z.commit("app/UPDATE_WINDOW_WIDTH",e)})),{skinClasses:t,enableScrollToTop:a}},computed:{layout(){return"full"===this.$route.meta.layout?"layout-full":`layout-${this.contentLayoutType}`},contentLayoutType(){return this.$store.state.appConfig.layout.type}},beforeCreate(){const e=["primary","secondary","success","info","warning","danger","light","dark"];for(let n=0,o=e.length;n16100)){const e=+t+1;this.$store.commit("flux/setFluxPort",e)}},getZelIdLoginPhrase(){E.Z.loginPhrase().then((e=>{console.log(e),"error"===e.data.status?"MongoNetworkError"===e.data.data.name?this.errorMessage="Failed to connect to MongoDB.":JSON.stringify(e.data.data).includes("CONN")?this.getEmergencyLoginPhrase():this.errorMessage=e.data.data.message:this.loginPhrase=e.data.data})).catch((e=>{console.log(e),this.errorMessage="Error connecting to Flux Backend"}))},getEmergencyLoginPhrase(){E.Z.emergencyLoginPhrase().then((e=>{console.log(e),"error"===e.data.status?this.errorMessage=e.data.data.message:this.loginPhrase=e.data.data})).catch((e=>{console.log(e),this.errorMessage="Error connecting to Flux Backend"}))},activeLoginPhrases(){const e=localStorage.getItem("zelidauth"),t=N.parse(e);console.log(t),E.Z.activeLoginPhrases(e).then((e=>{console.log(e),e.data.status})).catch((e=>{console.log(e),console.log(e.code)}))}}},O=L;var I=(0,T.Z)(O,b,g,!1,null,null,null);const M=I.exports;var R=a(9101);const F={name:"FeatherIcon",functional:!0,props:{icon:{required:!0,type:[String,Object]},size:{type:String,default:"14"},badge:{type:[String,Object,Number],default:null},badgeClasses:{type:[String,Object,Array],default:"badge-primary"}},render(e,{props:t,data:a}){const n=e(R[t.icon],{props:{size:t.size},...a});if(!t.badge)return n;const o=e("span",{staticClass:"badge badge-up badge-pill",class:t.badgeClasses},[t.badge]);return e("span",{staticClass:"feather-icon position-relative"},[n,o])}},z=F;var U,G,_=(0,T.Z)(z,U,G,!1,null,null,null);const V=_.exports;var W=a(97754);a(44784);n["default"].component(V.name,V),n["default"].component("VIcon",W.Z);var j=a(87066);const Y=j.Z.create({});n["default"].prototype.$http=Y;var H=a(72433);n["default"].use(H.ZP);var Q=a(41151);n["default"].use(Q["default"],{hideProgressBar:!0,closeOnClick:!1,closeButton:!1,icon:!1,timeout:3e3,transition:"Vue-Toastification__fade"}),n["default"].use(o.R,{breakpoints:["xs","sm","md","lg","xl","xxl"]}),n["default"].use(i.A6),n["default"].use(r.m$),n["default"].use(s.k),n["default"].use(l.XG7),n["default"].use(d.A7),n["default"].directive("sane-html",((e,t)=>{e.innerHTML=m().sanitize(t.value)})),a(86713),a(49630),n["default"].config.productionTip=!1,new n["default"]({router:p.Z,store:u.Z,render:e=>e(M)}).$mount("#app")},24019:(e,t,a)=>{"use strict";a.d(t,{Z:()=>E});var n=a(20144),o=a(78345),i=a(73507),r=a(34369);const s=[{path:"/dashboard/overview",name:"dashboard-overview",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(5988)]).then(a.bind(a,35988)),meta:{pageTitle:"Overview",breadcrumb:[{text:"Dashboard"},{text:"Overview",active:!0}]}},{path:"/dashboard/resources",name:"dashboard-resources",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(5216)]).then(a.bind(a,25216)),meta:{pageTitle:"Resources",breadcrumb:[{text:"Dashboard"},{text:"Resources",active:!0}]}},{path:"/dashboard/map",name:"dashboard-map",component:()=>Promise.all([a.e(5434),a.e(6567),a.e(6301),a.e(7218),a.e(4393),a.e(2355),a.e(2741)]).then(a.bind(a,32741)),meta:{pageTitle:"Map",breadcrumb:[{text:"Dashboard"},{text:"Map",active:!0}]}},{path:"/dashboard/rewards",name:"dashboard-rewards",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(8755)]).then(a.bind(a,68755)),meta:{pageTitle:"Rewards",breadcrumb:[{text:"Dashboard"},{text:"Rewards",active:!0}]}},{path:"/dashboard/economics",name:"dashboard-economics",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(8755)]).then(a.bind(a,68755)),meta:{pageTitle:"Rewards",breadcrumb:[{text:"Dashboard"},{text:"Rewards",active:!0}]}},{path:"/dashboard/list",name:"dashboard-list",component:()=>Promise.all([a.e(7218),a.e(6666)]).then(a.bind(a,46666)),meta:{pageTitle:"List",breadcrumb:[{text:"Dashboard"},{text:"List",active:!0}]}}],l=[{path:"/daemon/control/getinfo",name:"daemon-control-getinfo",component:()=>a.e(5213).then(a.bind(a,35213)),meta:{pageTitle:"Get Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Get Info",active:!0}]}},{path:"/daemon/control/help",name:"daemon-control-help",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(1966)]).then(a.bind(a,67647)),meta:{pageTitle:"Help",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Help",active:!0}]}},{path:"/daemon/control/rescanblockchain",name:"daemon-control-rescanblockchain",component:()=>a.e(6626).then(a.bind(a,86626)),meta:{pageTitle:"Rescan Blockchain",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Rescan Blockchain",active:!0}],privilege:["admin"]}},{path:"/daemon/control/reindexblockchain",name:"daemon-control-reindexblockchain",component:()=>a.e(6223).then(a.bind(a,16223)),meta:{pageTitle:"Reindex Blockchain",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Reindex Blockchain",active:!0}],privilege:["admin"]}},{path:"/daemon/control/start",name:"daemon-control-start",component:()=>a.e(3404).then(a.bind(a,43404)),meta:{pageTitle:"Start",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Start",active:!0}],privilege:["admin","fluxteam"]}},{path:"/daemon/control/stop",name:"daemon-control-stop",component:()=>a.e(1313).then(a.bind(a,91313)),meta:{pageTitle:"Stop",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Stop",active:!0}],privilege:["admin"]}},{path:"/daemon/control/restart",name:"daemon-control-restart",component:()=>a.e(9389).then(a.bind(a,39389)),meta:{pageTitle:"Restart",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Restart",active:!0}],privilege:["admin","fluxteam"]}}],d=[{path:"/daemon/fluxnode/getnodestatus",name:"daemon-fluxnode-getstatus",component:()=>a.e(1145).then(a.bind(a,81145)),meta:{pageTitle:"Node Status",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get Node Status",active:!0}]}},{path:"/daemon/fluxnode/listfluxnodes",name:"daemon-fluxnode-listfluxnodes",component:()=>Promise.all([a.e(6301),a.e(7365)]).then(a.bind(a,67365)),meta:{pageTitle:"List FluxNodes",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"List FluxNodes",active:!0}]}},{path:"/daemon/fluxnode/viewfluxnodelist",name:"daemon-fluxnode-viewfluxnodelist",component:()=>Promise.all([a.e(6301),a.e(7249)]).then(a.bind(a,77249)),meta:{pageTitle:"View Deterministic FluxNodes",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"View FluxNode List",active:!0}]}},{path:"/daemon/fluxnode/getfluxnodecount",name:"daemon-fluxnode-getfluxnodecount",component:()=>a.e(4671).then(a.bind(a,14671)),meta:{pageTitle:"Get FluxNode Count",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get FluxNode Count",active:!0}]}},{path:"/daemon/fluxnode/getstartlist",name:"daemon-fluxnode-getstartlist",component:()=>Promise.all([a.e(6301),a.e(2743)]).then(a.bind(a,32743)),meta:{pageTitle:"Get Start List",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get Start List",active:!0}]}},{path:"/daemon/fluxnode/getdoslist",name:"daemon-fluxnode-getdoslist",component:()=>Promise.all([a.e(6301),a.e(3196)]).then(a.bind(a,43196)),meta:{pageTitle:"Get DOS List",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get DOS List",active:!0}]}},{path:"/daemon/fluxnode/currentwinner",name:"daemon-fluxnode-currentwinner",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(8390)]).then(a.bind(a,81403)),meta:{pageTitle:"Current Winner",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Current Winner",active:!0}]}}],c=[{path:"/daemon/benchmarks/getbenchmarks",name:"daemon-benchmarks-getbenchmarks",component:()=>a.e(7463).then(a.bind(a,7463)),meta:{pageTitle:"Get Benchmarks",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Get Benchmarks",active:!0}]}},{path:"/daemon/benchmarks/getstatus",name:"daemon-benchmarks-getstatus",component:()=>a.e(6147).then(a.bind(a,96147)),meta:{pageTitle:"Get Bench Status",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Get Status",active:!0}]}},{path:"/daemon/benchmarks/startbenchmark",name:"daemon-benchmarks-start",component:()=>a.e(9816).then(a.bind(a,59816)),meta:{pageTitle:"Start Benchmark",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Start Benchmark",active:!0}],privilege:["admin","fluxteam"]}},{path:"/daemon/benchmarks/stopbenchmark",name:"daemon-benchmarks-stop",component:()=>a.e(9353).then(a.bind(a,39353)),meta:{pageTitle:"Stop Benchmark",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Stop Benchmark",active:!0}],privilege:["admin","fluxteam"]}}],m=[{path:"/daemon/blockchain/getblockchaininfo",name:"daemon-blockchain-getchaininfo",component:()=>a.e(1115).then(a.bind(a,61115)),meta:{pageTitle:"Get Blockchain Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Blockchain Info",active:!0}]}}],p=[{path:"/daemon/mining/getmininginfo",name:"daemon-mining-getmininginfo",component:()=>a.e(5497).then(a.bind(a,85497)),meta:{pageTitle:"Get Mining Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Mining Info",active:!0}]}}],u=[{path:"/daemon/network/getnetworkinfo",name:"daemon-network-getnetworkinfo",component:()=>a.e(4764).then(a.bind(a,84764)),meta:{pageTitle:"Get Network Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Network Info",active:!0}]}}],b=[{path:"/daemon/transaction/getrawtransaction",name:"daemon-transaction-getrawtransaction",component:()=>a.e(8910).then(a.bind(a,28910)),meta:{pageTitle:"Get Raw Transaction",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Raw Transaction",active:!0}]}}],g=[{path:"/daemon/validateaddress",name:"daemon-util-validateaddress",component:()=>a.e(237).then(a.bind(a,60237)),meta:{pageTitle:"Validate Address",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Validate Address",active:!0}]}}],h=[{path:"/daemon/getwalletinfo",name:"daemon-wallet-getwalletinfo",component:()=>a.e(5528).then(a.bind(a,95528)),meta:{pageTitle:"Get Wallet Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Wallet Info",active:!0}],privilege:["user","admin","fluxteam"]}}],f=[...l,...d,...c,...m,...p,...u,...b,...g,...h,{path:"/daemon/debug",name:"daemon-debug",component:()=>Promise.all([a.e(6301),a.e(9853)]).then(a.bind(a,59853)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}],x=[{path:"/benchmark/control/help",name:"benchmark-control-help",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(7966)]).then(a.bind(a,34917)),meta:{pageTitle:"Help",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Help",active:!0}]}},{path:"/benchmark/control/start",name:"benchmark-control-start",component:()=>a.e(5038).then(a.bind(a,45038)),meta:{pageTitle:"Start",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Start",active:!0}],privilege:["admin","fluxteam"]}},{path:"/benchmark/control/stop",name:"benchmark-control-stop",component:()=>a.e(6518).then(a.bind(a,36518)),meta:{pageTitle:"Stop",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Stop",active:!0}],privilege:["admin"]}},{path:"/benchmark/control/restart",name:"benchmark-control-restart",component:()=>a.e(7031).then(a.bind(a,7031)),meta:{pageTitle:"Restart",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Restart",active:!0}],privilege:["admin","fluxteam"]}}],v=[{path:"/benchmark/fluxnode/getbenchmarks",name:"benchmark-fluxnode-getbenchmarks",component:()=>a.e(1573).then(a.bind(a,1573)),meta:{pageTitle:"Get Benchmarks",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"FluxNode"},{text:"Get Benchmarks",active:!0}]}},{path:"/benchmark/fluxnode/getinfo",name:"benchmark-fluxnode-getinfo",component:()=>a.e(6262).then(a.bind(a,16262)),meta:{pageTitle:"Get Info",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"FluxNode"},{text:"Get Info",active:!0}]}}],k=[{path:"/benchmark/benchmarks/getstatus",name:"benchmark-benchmarks-getstatus",component:()=>a.e(9875).then(a.bind(a,59875)),meta:{pageTitle:"Get Status",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Get Status",active:!0}]}},{path:"/benchmark/benchmarks/restartbenchmarks",name:"benchmark-benchmarks-restartbenchmarks",component:()=>a.e(3678).then(a.bind(a,63678)),meta:{pageTitle:"Restart Node Benchmarks",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Restart Node Benchmarks",active:!0}],privilege:["admin","fluxteam"]}},{path:"/benchmark/benchmarks/signtransaction",name:"benchmark-benchmarks-signtransaction",component:()=>a.e(62).then(a.bind(a,20062)),meta:{pageTitle:"Sign FluxNode Transaction",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Sign Transaction",active:!0}],privilege:["admin"]}}],A=[...x,...v,...k,{path:"/benchmark/debug",name:"benchmark-debug",component:()=>Promise.all([a.e(6301),a.e(7550)]).then(a.bind(a,37550)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}],y=[{path:"/flux/nodestatus",name:"flux-nodestatus",component:()=>a.e(7583).then(a.bind(a,87583)),meta:{pageTitle:"Node Status",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Node Status",active:!0}]}},{path:"/flux/fluxnetwork",name:"flux-fluxnetwork",component:()=>a.e(3904).then(a.bind(a,63904)),meta:{pageTitle:"Flux Network",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Flux Network",active:!0}]}},{path:"/flux/debug",name:"flux-debug",component:()=>Promise.all([a.e(6301),a.e(3920),a.e(1540)]).then(a.bind(a,1540)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}];var T=a(82162);const C=[{path:"/apps/myapps",name:"apps-myapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(7890),a.e(7806)]).then(a.bind(a,76567)),meta:{pageTitle:"Applications",breadcrumb:[{text:"Applications"},{text:"Management",active:!0}]}},{path:"/apps/globalapps",name:"apps-globalapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(7890),a.e(4210)]).then(a.bind(a,99589)),meta:{pageTitle:"Applications",breadcrumb:[{text:"Applications"},{text:"Global Apps",active:!0}]}},{path:"/apps/registerapp/:appspecs?",name:"apps-registerapp",component:()=>Promise.all([a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(2755),a.e(1530),a.e(7353),a.e(4323)]).then(a.bind(a,41219)),meta:{pageTitle:"Register New App",breadcrumb:[{text:"Applications"},{text:"Register New App",active:!0}]}},{path:"/apps/marketplace",name:"apps-marketplace",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application"}},{path:"/apps/marketplace/:filter",name:"apps-marketplace-filter",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application",navActiveLink:"apps-marketplace"},beforeEnter(e,t,a){const n=T.categories.map((e=>e.name.toLowerCase()));n.includes(e.params.filter)?a():a({name:"error-404"})}},{path:"https://titan.runonflux.io",name:"apps-marketplace-sharednodes",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application",navActiveLink:"apps-marketplace"}}],P=[{path:"/apps/localapps",name:"apps-localapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(7890),a.e(3610)]).then(a.bind(a,69180)),meta:{pageTitle:"Local Apps",breadcrumb:[{text:"Administration"},{text:"Local Apps",active:!0}]}},{path:"/fluxadmin/loggedsessions",name:"fluxadmin-loggedsessions",component:()=>a.e(5061).then(a.bind(a,15061)),meta:{pageTitle:"Logged Sessions",breadcrumb:[{text:"Administration"},{text:"Logged Sessions",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/manageflux",name:"fluxadmin-manageflux",component:()=>a.e(6777).then(a.bind(a,96777)),meta:{pageTitle:"Manage Flux",breadcrumb:[{text:"Administration"},{text:"Manage Flux",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/managedaemon",name:"fluxadmin-managedaemon",component:()=>a.e(6481).then(a.bind(a,56481)),meta:{pageTitle:"Manage Daemon",breadcrumb:[{text:"Administration"},{text:"Manage Daemon",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/managebenchmark",name:"fluxadmin-managebenchmark",component:()=>a.e(1994).then(a.bind(a,71994)),meta:{pageTitle:"Manage Benchmark",breadcrumb:[{text:"Administration"},{text:"Manage Benchmark",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/manageusers",name:"fluxadmin-manageusers",component:()=>a.e(3383).then(a.bind(a,43383)),meta:{pageTitle:"Manage Users",breadcrumb:[{text:"Administration"},{text:"Manage Users",active:!0}],privilege:["admin","fluxteam"]}},{path:"/apps/fluxsharestorage",name:"apps-fluxsharestorage",component:()=>Promise.all([a.e(6301),a.e(5)]).then(a.bind(a,10005)),meta:{pageTitle:"My FluxShare Storage",breadcrumb:[{text:"Administration"},{text:"My FluxShare Storage",active:!0}],privilege:["admin"]}}],D=[{path:"/xdao-app",name:"xdao-app",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application"}},{path:"/xdao-app/:filter",name:"xdao-app-filter",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application",navActiveLink:"xdao-app"},beforeEnter(e,t,a){["open","passed","unpaid","rejected"].includes(e.params.filter)?a():a({name:"error-404"})}},{path:"/xdao-app/tag/:tag",name:"xdao-app-tag",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application",navActiveLink:"xdao-app"},beforeEnter(e,t,a){["team","low","medium","high","update"].includes(e.params.tag)?a():a({name:"error-404"})}}],w=a(80129);n["default"].use(o.ZP);const B=new o.ZP({mode:"history",base:"/",scrollBehavior(){return{x:0,y:0}},routes:[{path:"/",name:"home",component:()=>Promise.all([a.e(601),a.e(4884),a.e(1601),a.e(6301),a.e(2755),a.e(1530),a.e(6407),a.e(5713)]).then(a.bind(a,50715)),meta:{pageTitle:"Home",breadcrumb:[{text:"Home",active:!0}]}},{path:"/explorer",name:"explorer",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(3041)]).then(a.bind(a,266)),meta:{pageTitle:"Explorer",breadcrumb:[{text:"Administration"},{text:"Explorer",active:!0}]}},...s,...f,...A,...y,...C,...P,...D,{path:"/successcheckout",name:"successcheckout",component:()=>a.e(2295).then(a.bind(a,42295)),meta:{layout:"full"}},{path:"/error-404",name:"error-404",component:()=>a.e(4661).then(a.bind(a,84661)),meta:{layout:"full"}},{path:"*",redirect:"error-404"}]});B.beforeEach((async(e,t,a)=>{const n=localStorage.getItem("zelidauth"),o=w.parse(n);if(i.Z.commit("flux/setPrivilege","none"),o&&o.zelid&&o.signature&&o.loginPhrase)try{const e=await r.Z.checkUserLogged(o.zelid,o.signature,o.loginPhrase),t=e.data.data.message;i.Z.commit("flux/setPrivilege",t),"none"===t&&localStorage.removeItem("zelidauth")}catch(s){console.log(s)}e.meta&&e.meta.privilege?e.meta.privilege.some((e=>e===i.Z.state.flux.privilege))?a():a("/"):a()})),B.afterEach((()=>{const e=document.getElementById("loading-bg");e&&(e.style.display="none")}));const E=B},80914:(e,t,a)=>{"use strict";a.d(t,{S:()=>c,Z:()=>m});var n=a(87066);const o=a(58971),{protocol:i,hostname:r,port:s}=window.location;let l="";l+=i,l+="//";const d=/[A-Za-z]/g;if(r.split("-")[4]){const e=r.split("-"),t=e[4].split("."),a=+t[0]+1;t[0]=a.toString(),t[2]="api",e[4]="",l+=e.join("-"),l+=t.join(".")}else if(r.match(d)){const e=r.split(".");e[0]="api",l+=e.join(".")}else l+=r,l+=":",l+=+s+1;const c=n.Z.CancelToken.source(),m=()=>n.Z.create({baseURL:o.get("backendURL")||l})},34369:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});var n=a(80914);const o=a(80129),i={loginPhrase(){return(0,n.Z)().get("/id/loginphrase")},emergencyLoginPhrase(){return(0,n.Z)().get("/id/emergencyphrase")},verifyLogin(e){return(0,n.Z)().post("/id/verifylogin",o.stringify(e))},loggedSessions(e){return(0,n.Z)().get(`/id/loggedsessions?timestamp=${Date.now()}`,{headers:{zelidauth:e}})},loggedUsers(e){return(0,n.Z)().get(`/id/loggedusers?timestamp=${Date.now()}`,{headers:{zelidauth:e}})},activeLoginPhrases(e){return(0,n.Z)().get("/id/activeloginphrases",{headers:{zelidauth:e}})},logoutCurrentSession(e){return(0,n.Z)().get("/id/logoutcurrentsession",{headers:{zelidauth:e}})},logoutSpecificSession(e,t){const a={loginPhrase:t},i={headers:{zelidauth:e}};return(0,n.Z)().post("/id/logoutspecificsession",o.stringify(a),i)},logoutAllSessions(e){return(0,n.Z)().get("/id/logoutallsessions",{headers:{zelidauth:e}})},logoutAllUsers(e){return(0,n.Z)().get("/id/logoutallusers",{headers:{zelidauth:e}})},checkUserLogged(e,t,a){const i={zelid:e,signature:t,loginPhrase:a};return(0,n.Z)().post("/id/checkprivilege",o.stringify(i))}}},73507:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var n=a(20144),o=a(20629),i=a(68934);const r={namespaced:!0,state:{windowWidth:0,shallShowOverlay:!1},getters:{currentBreakPoint:e=>{const{windowWidth:t}=e;return t>=i.n.xl?"xl":t>=i.n.lg?"lg":t>=i.n.md?"md":t>=i.n.sm?"sm":"xs"}},mutations:{UPDATE_WINDOW_WIDTH(e,t){e.windowWidth=t},TOGGLE_OVERLAY(e,t){e.shallShowOverlay=void 0!==t?t:!e.shallShowOverlay}},actions:{}},s={namespaced:!0,state:{layout:{isRTL:i.$themeConfig.layout.isRTL,skin:localStorage.getItem("vuexy-skin")||i.$themeConfig.layout.skin,routerTransition:i.$themeConfig.layout.routerTransition,type:i.$themeConfig.layout.type,contentWidth:i.$themeConfig.layout.contentWidth,menu:{hidden:i.$themeConfig.layout.menu.hidden,collapsed:"true"===localStorage.getItem("menu-itemsCollapsed")||i.$themeConfig.layout.menu.itemsCollapsed},navbar:{type:i.$themeConfig.layout.navbar.type,backgroundColor:i.$themeConfig.layout.navbar.backgroundColor},footer:{type:i.$themeConfig.layout.footer.type}}},getters:{},mutations:{TOGGLE_RTL(e){e.layout.isRTL=!e.layout.isRTL,document.documentElement.setAttribute("dir",e.layout.isRTL?"rtl":"ltr")},UPDATE_SKIN(e,t){e.layout.skin=t,localStorage.setItem("vuexy-skin",t),"dark"===t?document.body.classList.add("dark-layout"):document.body.className.match("dark-layout")&&document.body.classList.remove("dark-layout")},UPDATE_ROUTER_TRANSITION(e,t){e.layout.routerTransition=t},UPDATE_LAYOUT_TYPE(e,t){e.layout.type=t},UPDATE_CONTENT_WIDTH(e,t){e.layout.contentWidth=t},UPDATE_NAV_MENU_HIDDEN(e,t){e.layout.menu.hidden=t},UPDATE_NAVBAR_CONFIG(e,t){Object.assign(e.layout.navbar,t)},UPDATE_FOOTER_CONFIG(e,t){Object.assign(e.layout.footer,t)},UPDATE_MENU_COLLAPSED(e,t){e.layout.menu.collapsed=t,localStorage.setItem("menu-itemsCollapsed",t)}},actions:{}},l={namespaced:!0,state:{isVerticalMenuCollapsed:"true"===localStorage.getItem("menu-isCollapsed")||i.$themeConfig.layout.menu.isCollapsed},getters:{},mutations:{UPDATE_VERTICAL_MENU_COLLAPSED(e,t){e.isVerticalMenuCollapsed=t,localStorage.setItem("menu-isCollapsed",t)}},actions:{}};var d=a(90325),c=a.n(d);const m={namespaced:!0,state:{userconfig:{zelid:"",externalip:""},config:{apiPort:c().server.apiport,fluxTeamFluxID:c().fluxTeamFluxID,fluxSupportTeamFluxID:c().fluxSupportTeamFluxID},privilege:"none",zelid:"",fluxVersion:"",xdaoOpen:0},getters:{xdaoOpen(e){return e.xdaoOpen}},mutations:{setPrivilege(e,t){e.privilege=t},setZelid(e,t){e.zelid=t},setFluxVersion(e,t){e.fluxVersion=t},setUserZelid(e,t){e.userconfig.zelid=t},setUserIp(e,t){e.userconfig.externalip=t},setFluxPort(e,t){e.config.apiPort=t},setXDAOOpen(e,t){e.xdaoOpen=t}},actions:{}};n["default"].use(o.ZP);const p=new o.ZP.Store({modules:{app:r,appConfig:s,verticalMenu:l,flux:m},strict:{NODE_ENV:"production",BASE_URL:"/"}.DEV})},68934:(e,t,a)=>{"use strict";a.d(t,{$themeConfig:()=>i,j:()=>n,n:()=>o});const n={},o={},i={app:{appName:"FluxOS",appLogoImageDark:a(98927),appLogoImage:a(62606)},layout:{isRTL:!1,skin:"dark",routerTransition:"zoom-fade",type:"vertical",contentWidth:"full",menu:{hidden:!1,isCollapsed:!1,itemsCollapsed:!0},navbar:{type:"sticky",backgroundColor:""},footer:{type:"static"},customizer:!0,enableScrollToTop:!0}}},90325:(e,t,a)=>{let n=a(65796);const o=n.initial.development||!1;e.exports={development:o,loglevel:"debug",server:{allowedPorts:[16127,16137,16147,16157,16167,16177,16187,16197],apiport:16127,fluxNodeServiceAddress:"169.254.43.43"},database:{url:"127.0.0.1",port:27017,local:{database:"zelfluxlocal",collections:{loggedUsers:"loggedusers",activeLoginPhrases:"activeloginphrases",activeSignatures:"activesignatures"}},daemon:{database:"zelcashdata",collections:{scannedHeight:"scannedheight",utxoIndex:"utxoindex",addressTransactionIndex:"addresstransactionindex",fluxTransactions:"zelnodetransactions",appsHashes:"zelappshashes",coinbaseFusionIndex:"coinbasefusionindex"}},appslocal:{database:"localzelapps",collections:{appsInformation:"zelappsinformation"}},appsglobal:{database:"globalzelapps",collections:{appsMessages:"zelappsmessages",appsInformation:"zelappsinformation",appsTemporaryMessages:"zelappstemporarymessages",appsLocations:"zelappslocation"}},chainparams:{database:"chainparams",collections:{chainMessages:"chainmessages"}},fluxshare:{database:"zelshare",collections:{shared:"shared"}}},benchmark:{port:16225,rpcport:16224,porttestnet:26225,rpcporttestnet:26224},daemon:{chainValidHeight:1062e3,port:16125,rpcport:16124,porttestnet:26125,rpcporttestnet:26124,zmqport:16123},minimumFluxBenchAllowedVersion:"4.0.0",minimumFluxOSAllowedVersion:"5.4.0",minimumSyncthingAllowedVersion:"1.27.6",minimumDockerAllowedVersion:"26.1.2",fluxTeamFluxID:"1hjy4bCYBJr4mny4zCE85J94RXa8W6q37",fluxSupportTeamFluxID:"16iJqiVbHptCx87q6XQwNpKdgEZnFtKcyP",deterministicNodesStart:558e3,messagesBroadcastRefactorStart:1751250,fluxapps:{price:[{height:-1,cpu:3,ram:1,hdd:.5,minPrice:1,port:2,scope:6,staticip:3},{height:983e3,cpu:.3,ram:.1,hdd:.05,minPrice:.1,port:2,scope:6,staticip:3},{height:1004e3,cpu:.06,ram:.02,hdd:.01,minPrice:.01,port:2,scope:6,staticip:3},{height:1288e3,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:2,scope:6,staticip:3},{height:1594832,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:1.5,scope:6,staticip:3},{height:1597156,cpu:.03,ram:.01,hdd:.004,minPrice:.01,port:.4,scope:.8,staticip:.4}],fluxUSDRate:.6,usdprice:{height:-1,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:2,scope:4,staticip:2,fluxmultiplier:.95,multiplier:1,minUSDPrice:.99},appSpecsEnforcementHeights:{1:0,2:0,3:983e3,4:1004e3,5:1142e3,6:13e5,7:o?139e4:142e4},address:"t1LUs6quf7TB2zVZmexqPQdnqmrFMGZGjV6",addressMultisig:"t3aGJvdtd8NR6GrnqnRuVEzH6MbrXuJFLUX",addressMultisigB:"t3NryfAQLGeFs9jEoeqsxmBN2QLRaRKFLUX",addressDevelopment:"t1Mzja9iJcEYeW5B4m4s1tJG8M42odFZ16A",multisigAddressChange:167e4,fluxAppRequestV2:167e4,epochstart:694e3,publicepochstart:705e3,portMin:31e3,portMax:39999,portBlockheightChange:o?139e4:142e4,portMinNew:1,portMaxNew:65535,bannedPorts:["16100-16299","26100-26299","30000-30099",8384,27017,22,23,25,3389,5900,5800,161,512,513,5901,3388,4444,123,53],enterprisePorts:["0-1023",8080,8081,8443,6667],upnpBannedPorts:[],maxImageSize:2e9,minimumInstances:3,maximumInstances:100,minOutgoing:8,minUniqueIpsOutgoing:7,minIncoming:4,minUniqueIpsIncoming:3,minUpTime:1800,installation:{probability:100,delay:120},removal:{probability:25,delay:300},redeploy:{probability:2,delay:30,composedDelay:5},blocksLasting:22e3,minBlocksAllowance:5e3,newMinBlocksAllowance:100,newMinBlocksAllowanceBlock:1630040,maxBlocksAllowance:264e3,blocksAllowanceInterval:1e3,removeBlocksAllowanceIntervalBlock:1625e3,ownerAppAllowance:1e3,temporaryAppAllowance:200,expireFluxAppsPeriod:100,updateFluxAppsPeriod:9,removeFluxAppsPeriod:11,reconstructAppMessagesHashPeriod:3600,benchUpnpPeriod:6480,hddFileSystemMinimum:10,defaultSwap:2,applyMinimumPriceOn3Instances:1691e3},lockedSystemResources:{cpu:10,ram:2e3,hdd:60,extrahdd:20},fluxSpecifics:{cpu:{cumulus:40,nimbus:80,stratus:160},ram:{cumulus:7e3,nimbus:3e4,stratus:61e3},hdd:{cumulus:220,nimbus:440,stratus:880},collateral:{cumulusold:1e4,nimbusold:25e3,stratusold:1e5,cumulus:1e3,nimbus:12500,stratus:4e4}},syncthing:{ip:"127.0.0.1",port:8384},enterprisePublicKeys:["045bd4f81d7bda582141793463edb58e0f3228a873bd6b6680b78586db2969f51dfeda672eae65e64ca814316f77557012d02c73db7876764f5eddb6b6d9d02b5b","042ebcb3a94fe66b9ded6e456871346d6984502bbadf14ed07644e0eb91f8cc0b1f07632c428e1e6793f372d9c303d680de80ae0499d51095676cabf68599e9591","040a0f94fdbd670a4514a7366e8b5f7fbfb264c6ca6ea7d3f37147410b62a50525d1ed1ac83dac029de9203b9cabcf18a01b82e499ba36ea51594fd799999b2a26","04092edca3ed2d2b744a1d93e504568e9d861f38232023835202c155afa9f74e3779c926745a4157a7897ca6dca30aa78aa26e4ee11101ce20db9fc79b686de5f0","045964031bb8818521b99f16d2614f1bc8a9968184c9c38dc09cf95b744dae0f603ff3bbecc7845d952901ebabeb343cdcde3c4325274901768dfb102b9a34f5d6","0459f5c058481d557fb63580bfbf21f3791a2f3a62a62c99b435fd8db1d59e21353bdae35cfe00adaf7c4f2f0d400afc698e9c58ee6a3894c20706b3db7da83750","040ecac42ff4468fa8ae094e125fb8ae67c1a588e7b218ac0a9d270bba882c19db656b7b5d99b1af0fe96c34475545088a5bd87efb9a771174bcdd7fb499dd7ca3","04a52af6e9688fcb9d47096f8a15db67131f9b0bbfb50c28fd22028d9fba18f4e9bd3293b43ed64634dbba11688b4e37f1f8e65629b6a204df352d3ecfb174b9f5","04ce029f9d17da47809cbde46e0ea2eace185f79f98e5718cb4ddc3d84bfd742cd3e3951388fcd2771238ab323fe22d53c3dced2a30326ead0447b10f7db0a829b","04dbbf2ba07d28b0010f4faa0537d963b3481b5d8e7ec0de29f311264a4ab074d4d579aca1c2aa3eb31e96f439a6d6bbf72393584049923f342ed4762f13fe7be4","043c4fe1606c543ca28f107245166321fae026300747a608db94deecbcd2d945f86b29c52a33416464e7823a6c2e3e45c26733f6378be973959cbf9ee4bff79e66","04a898a0bc768ad0b8456b4da7c1e653a715477926fefb47ef20d8bd841854ddf4e1f59c1c3d55f0088eaca53b850e6ab03d0bd00d0b5a70d17ffbc0554b6188d5","0455a20efde6a0685fa15b020e694674170376bc7c23d203e96fb927717db38011b87c36b2f81c5cf68123c5567abf2b29788231966ea4c43c4f5cb759e4c5cdbb","04c765d054bcded999c404145c7396725df81973fe803b3da5e9455173410743f43e20294e17bb41adff8b4ff1ab5540b8bcd98521b438840b6a38e904eb0b247f","03cf1d8b708ca7f5979accb4d0dba35a90391e3dfc4422cf12670c929bb58d16ac","03e29783936a36b396c28706494dbfd35f3d087f2addeb3df32e451f71bf9a53f3"]}},65796:e=>{e.exports={initial:{ipaddress:"94.16.104.218",zelid:"1K6nyw2VjV6jEN1f1CkbKn9htWnYkQabbR",kadena:"kadena:k:b3d922d1a57793651a1e0d951ef1671a10833e170810d3520388628cdc082fce?chainid=0",testnet:!1,development:!1,apiport:NaN,pgpPrivateKey:"-----BEGIN PGP PRIVATE KEY BLOCK-----\n\nxVgEZHmg8RYJKwYBBAHaRw8BAQdAvezm7p0lvhM4yOpOSre0cB9W7LCVQ/dM\nzISJD+qJNM8AAP9aHyinNqZkJt6F4siUloUVJt6rOgGCn0e/D3icC2Yisg73\nzXQzMWE5ZjY0ZDNmYzRlZmFlZTQzNzYxM2UzN2NiMmYxZDYzYjRjOTA5N2U5\nZDhlZDhjODFmOTkzNzllM2RkNDY0OjAgPDFLNm55dzJWalY2akVOMWYxQ2ti\nS245aHRXbllrUWFiYlJAcnVub25mbHV4LmlvPsKMBBAWCgA+BYJkeaDxBAsJ\nBwgJkLG9++fl7XbxAxUICgQWAAIBAhkBApsDAh4BFiEEtOdwyqWbs8NNu6s0\nsb375+XtdvEAAEnoAQD2BWD7do+fMVeBbV82fIOhz2qdnDaYAprrihDz6vwb\nTwEAnPMIC4p9iaptWru9Qa2uu3rJsnNmKoiEl1wfFQe+BwfHXQRkeaDxEgor\nBgEEAZdVAQUBAQdA8E0WJLyldJfrFik2vBRQe6kaukdzzTEn7pdoxsd98RUD\nAQgHAAD/ShBVjfSyN5gHdY7AuJaAfqqERyTSkc+hCcSc07cY6zgRYMJ4BBgW\nCAAqBYJkeaDxCZCxvfvn5e128QKbDBYhBLTncMqlm7PDTburNLG9++fl7Xbx\nAADU2QD/TGxJcV7wrgHSJtXxl7ySaYKS/SFgIhF2uQzeS3CwIoYBANyqyX+C\nda2lr4gzAcmnyJGGAK9U60WK4Ppw50lxPP8G\n=A9AK\n-----END PGP PRIVATE KEY BLOCK-----\n",pgpPublicKey:"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nxjMEZHmg8RYJKwYBBAHaRw8BAQdAvezm7p0lvhM4yOpOSre0cB9W7LCVQ/dM\nzISJD+qJNM/NdDMxYTlmNjRkM2ZjNGVmYWVlNDM3NjEzZTM3Y2IyZjFkNjNi\nNGM5MDk3ZTlkOGVkOGM4MWY5OTM3OWUzZGQ0NjQ6MCA8MUs2bnl3MlZqVjZq\nRU4xZjFDa2JLbjlodFduWWtRYWJiUkBydW5vbmZsdXguaW8+wowEEBYKAD4F\ngmR5oPEECwkHCAmQsb375+XtdvEDFQgKBBYAAgECGQECmwMCHgEWIQS053DK\npZuzw027qzSxvfvn5e128QAASegBAPYFYPt2j58xV4FtXzZ8g6HPap2cNpgC\nmuuKEPPq/BtPAQCc8wgLin2Jqm1au71Bra67esmyc2YqiISXXB8VB74HB844\nBGR5oPESCisGAQQBl1UBBQEBB0DwTRYkvKV0l+sWKTa8FFB7qRq6R3PNMSfu\nl2jGx33xFQMBCAfCeAQYFggAKgWCZHmg8QmQsb375+XtdvECmwwWIQS053DK\npZuzw027qzSxvfvn5e128QAA1NkA/0xsSXFe8K4B0ibV8Ze8kmmCkv0hYCIR\ndrkM3ktwsCKGAQDcqsl/gnWtpa+IMwHJp8iRhgCvVOtFiuD6cOdJcTz/Bg==\n=V9QD\n-----END PGP PUBLIC KEY BLOCK-----\n"}}},98927:(e,t,a)=>{"use strict";e.exports=a.p+"img/logo.svg"},62606:(e,t,a)=>{"use strict";e.exports=a.p+"img/logo_light.svg"},24654:()=>{}},t={};function a(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=e,(()=>{a.amdD=function(){throw new Error("define cannot be used indirect")}})(),(()=>{var e=[];a.O=(t,n,o,i)=>{if(!n){var r=1/0;for(c=0;c=i)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(s=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[n,o,i]}})(),(()=>{a.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return a.d(t,{a:t}),t}})(),(()=>{a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[]))})(),(()=>{a.u=e=>"js/"+({601:"walletconnect",1601:"stablelib",1973:"xterm",2137:"vueJsonViewer",4884:"metamask",5434:"apexcharts",5997:"clipboard",6567:"leaflet",8749:"openpgp"}[e]||e)+".js"})(),(()=>{a.miniCssF=e=>"css/"+e+".css"})(),(()=>{a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="flux:";a.l=(n,o,i,r)=>{if(e[n])e[n].push(o);else{var s,l;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c{s.onerror=s.onload=null,clearTimeout(u);var o=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((e=>e(a))),t)return t(a)},u=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),l&&document.head.appendChild(s)}}})(),(()=>{a.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e)})(),(()=>{a.p="/"})(),(()=>{if("undefined"!==typeof document){var e=(e,t,a,n,o)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css";var r=a=>{if(i.onerror=i.onload=null,"load"===a.type)n();else{var r=a&&("load"===a.type?"missing":a.type),s=a&&a.target&&a.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=r,l.request=s,i.parentNode&&i.parentNode.removeChild(i),o(l)}};return i.onerror=i.onload=r,i.href=t,a?a.parentNode.insertBefore(i,a.nextSibling):document.head.appendChild(i),i},t=(e,t)=>{for(var a=document.getElementsByTagName("link"),n=0;nnew Promise(((o,i)=>{var r=a.miniCssF(n),s=a.p+r;if(t(r,s))return o();e(n,s,null,o,i)})),o={4826:0};a.f.miniCss=(e,t)=>{var a={5:1,62:1,237:1,1115:1,1145:1,1313:1,1540:1,1573:1,1966:1,1994:1,2295:1,2355:1,2741:1,2743:1,3041:1,3196:1,3383:1,3404:1,3610:1,3678:1,3904:1,4210:1,4323:1,4661:1,4671:1,4764:1,5038:1,5061:1,5213:1,5216:1,5486:1,5497:1,5528:1,5713:1,5988:1,6147:1,6223:1,6262:1,6289:1,6407:1,6481:1,6518:1,6626:1,6777:1,7031:1,7249:1,7365:1,7463:1,7550:1,7583:1,7806:1,7917:1,7966:1,8390:1,8755:1,8910:1,9353:1,9389:1,9816:1,9853:1,9875:1};o[e]?t.push(o[e]):0!==o[e]&&a[e]&&t.push(o[e]=n(e).then((()=>{o[e]=0}),(t=>{throw delete o[e],t})))}}})(),(()=>{var e={4826:0};a.f.j=(t,n)=>{var o=a.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else{var i=new Promise(((a,n)=>o=e[t]=[a,n]));n.push(o[2]=i);var r=a.p+a.u(t),s=new Error,l=n=>{if(a.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var i=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+r+")",s.name="ChunkLoadError",s.type=i,s.request=r,o[1](s)}};a.l(r,l,"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[r,s,l]=n,d=0;if(r.some((t=>0!==e[t]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(l)var c=l(a)}for(t&&t(n);da(69699)));n=a.O(n)})(); \ No newline at end of file +(()=>{var e={86713:(e,t,a)=>{"use strict";a.r(t)},49630:(e,t,a)=>{"use strict";a.r(t)},37307:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});var n=a(20144),o=a(73507);function i(){const e=(0,n.computed)({get:()=>o.Z.state.verticalMenu.isVerticalMenuCollapsed,set:e=>{o.Z.commit("verticalMenu/UPDATE_VERTICAL_MENU_COLLAPSED",e)}}),t=(0,n.computed)({get:()=>o.Z.state.flux.xdaoOpen,set:e=>{o.Z.commit("flux/setXDAOOpen",e)}}),a=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.isRTL,set:e=>{o.Z.commit("appConfig/TOGGLE_RTL",e)}}),i=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.skin,set:e=>{o.Z.commit("appConfig/UPDATE_SKIN",e)}}),r=(0,n.computed)((()=>"bordered"===i.value?"bordered-layout":"semi-dark"===i.value?"semi-dark-layout":null)),s=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.routerTransition,set:e=>{o.Z.commit("appConfig/UPDATE_ROUTER_TRANSITION",e)}}),l=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.type,set:e=>{o.Z.commit("appConfig/UPDATE_LAYOUT_TYPE",e)}});(0,n.watch)(l,(e=>{"horizontal"===e&&"semi-dark"===i.value&&(i.value="light")}));const d=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.contentWidth,set:e=>{o.Z.commit("appConfig/UPDATE_CONTENT_WIDTH",e)}}),c=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.menu.hidden,set:e=>{o.Z.commit("appConfig/UPDATE_NAV_MENU_HIDDEN",e)}}),m=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.menu.collapsed,set:e=>{o.Z.commit("appConfig/UPDATE_MENU_COLLAPSED",e)}}),p=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.navbar.backgroundColor,set:e=>{o.Z.commit("appConfig/UPDATE_NAVBAR_CONFIG",{backgroundColor:e})}}),u=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.navbar.type,set:e=>{o.Z.commit("appConfig/UPDATE_NAVBAR_CONFIG",{type:e})}}),b=(0,n.computed)({get:()=>o.Z.state.appConfig.layout.footer.type,set:e=>{o.Z.commit("appConfig/UPDATE_FOOTER_CONFIG",{type:e})}});return{isVerticalMenuCollapsed:e,isRTL:a,skin:i,skinClasses:r,routerTransition:s,navbarBackgroundColor:p,navbarType:u,footerType:b,layoutType:l,contentWidth:d,isNavMenuHidden:c,isNavMenuCollapsed:m,xdaoOpenProposals:t}}},82162:e=>{const t=[{name:"Games",variant:"success",icon:"gamepad"},{name:"Productivity",variant:"danger",icon:"file-alt"},{name:"Hosting",variant:"success",icon:"server"},{name:"Blockchain",variant:"success",icon:"coins"},{name:"Blockbook",variant:"success",icon:"book"},{name:"Front-end",variant:"success",icon:"desktop"},{name:"RPC Node",variant:"success",icon:"satellite-dish"},{name:"Masternode",variant:"success",icon:"wallet"}],a={name:"App",variant:"success",icon:"cog"};e.exports={categories:t,defaultCategory:a}},69699:(e,t,a)=>{"use strict";var n=a(20144),o=a(77354),i=a(48648),r=a(68793),s=a(54016),l=a(51205),d=a(33017),c=a(27856),m=a.n(c),p=a(24019),u=a(73507),b=function(){var e=this,t=e._self._c;return t("div",{staticClass:"h-100",class:[e.skinClasses],attrs:{id:"app"}},[t(e.layout,{tag:"component"},[t("router-view")],1),e.enableScrollToTop?t("scroll-to-top"):e._e()],1)},g=[],h=function(){var e=this,t=e._self._c;return t("div",{staticClass:"btn-scroll-to-top",class:{show:e.y>250}},[t("b-button",{directives:[{name:"ripple",rawName:"v-ripple.400",value:"rgba(255, 255, 255, 0.15)",expression:"'rgba(255, 255, 255, 0.15)'",modifiers:{400:!0}}],staticClass:"btn-icon",attrs:{variant:"primary"},on:{click:e.scrollToTop}},[t("feather-icon",{attrs:{icon:"ArrowUpIcon",size:"16"}})],1)],1)},f=[],x=a(52829),v=a(15193),k=a(20266);const A={directives:{Ripple:k.Z},components:{BButton:v.T},setup(){const{y:e}=(0,x.baj)(),t=()=>{const e=document.documentElement;e.scrollTo({top:0,behavior:"smooth"})};return{y:e,scrollToTop:t}}},y=A;var T=a(1001),C=(0,T.Z)(y,h,f,!1,null,"4d172cb1",null);const P=C.exports;var D=a(68934),w=a(41905),B=a(37307),E=a(34369);const N=a(80129),S=()=>Promise.all([a.e(6301),a.e(7218),a.e(2755),a.e(460),a.e(5486)]).then(a.bind(a,57591)),Z=()=>a.e(2791).then(a.bind(a,82791)),L={components:{LayoutVertical:S,LayoutFull:Z,ScrollToTop:P},setup(){const{skin:e,skinClasses:t}=(0,B.Z)(),{enableScrollToTop:a}=D.$themeConfig.layout;"dark"===e.value&&document.body.classList.add("dark-layout"),(0,w.provideToast)({hideProgressBar:!0,closeOnClick:!1,closeButton:!1,icon:!1,timeout:3e3,transition:"Vue-Toastification__fade"}),u.Z.commit("app/UPDATE_WINDOW_WIDTH",window.innerWidth);const{width:o}=(0,x.iPe)();return(0,n.watch)(o,(e=>{u.Z.commit("app/UPDATE_WINDOW_WIDTH",e)})),{skinClasses:t,enableScrollToTop:a}},computed:{layout(){return"full"===this.$route.meta.layout?"layout-full":`layout-${this.contentLayoutType}`},contentLayoutType(){return this.$store.state.appConfig.layout.type}},beforeCreate(){const e=["primary","secondary","success","info","warning","danger","light","dark"];for(let n=0,o=e.length;n16100)){const e=+t+1;this.$store.commit("flux/setFluxPort",e)}},getZelIdLoginPhrase(){E.Z.loginPhrase().then((e=>{console.log(e),"error"===e.data.status?"MongoNetworkError"===e.data.data.name?this.errorMessage="Failed to connect to MongoDB.":JSON.stringify(e.data.data).includes("CONN")?this.getEmergencyLoginPhrase():this.errorMessage=e.data.data.message:this.loginPhrase=e.data.data})).catch((e=>{console.log(e),this.errorMessage="Error connecting to Flux Backend"}))},getEmergencyLoginPhrase(){E.Z.emergencyLoginPhrase().then((e=>{console.log(e),"error"===e.data.status?this.errorMessage=e.data.data.message:this.loginPhrase=e.data.data})).catch((e=>{console.log(e),this.errorMessage="Error connecting to Flux Backend"}))},activeLoginPhrases(){const e=localStorage.getItem("zelidauth"),t=N.parse(e);console.log(t),E.Z.activeLoginPhrases(e).then((e=>{console.log(e),e.data.status})).catch((e=>{console.log(e),console.log(e.code)}))}}},O=L;var I=(0,T.Z)(O,b,g,!1,null,null,null);const M=I.exports;var R=a(9101);const F={name:"FeatherIcon",functional:!0,props:{icon:{required:!0,type:[String,Object]},size:{type:String,default:"14"},badge:{type:[String,Object,Number],default:null},badgeClasses:{type:[String,Object,Array],default:"badge-primary"}},render(e,{props:t,data:a}){const n=e(R[t.icon],{props:{size:t.size},...a});if(!t.badge)return n;const o=e("span",{staticClass:"badge badge-up badge-pill",class:t.badgeClasses},[t.badge]);return e("span",{staticClass:"feather-icon position-relative"},[n,o])}},z=F;var U,G,_=(0,T.Z)(z,U,G,!1,null,null,null);const V=_.exports;var W=a(97754);a(44784);n["default"].component(V.name,V),n["default"].component("VIcon",W.Z);var j=a(87066);const Y=j.Z.create({});n["default"].prototype.$http=Y;var H=a(72433);n["default"].use(H.ZP);var Q=a(41151);n["default"].use(Q["default"],{hideProgressBar:!0,closeOnClick:!1,closeButton:!1,icon:!1,timeout:3e3,transition:"Vue-Toastification__fade"}),n["default"].use(o.R,{breakpoints:["xs","sm","md","lg","xl","xxl"]}),n["default"].use(i.A6),n["default"].use(r.m$),n["default"].use(s.k),n["default"].use(l.XG7),n["default"].use(d.A7),n["default"].directive("sane-html",((e,t)=>{e.innerHTML=m().sanitize(t.value)})),a(86713),a(49630),n["default"].config.productionTip=!1,new n["default"]({router:p.Z,store:u.Z,render:e=>e(M)}).$mount("#app")},24019:(e,t,a)=>{"use strict";a.d(t,{Z:()=>E});var n=a(20144),o=a(78345),i=a(73507),r=a(34369);const s=[{path:"/dashboard/overview",name:"dashboard-overview",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(5988)]).then(a.bind(a,35988)),meta:{pageTitle:"Overview",breadcrumb:[{text:"Dashboard"},{text:"Overview",active:!0}]}},{path:"/dashboard/resources",name:"dashboard-resources",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(5216)]).then(a.bind(a,25216)),meta:{pageTitle:"Resources",breadcrumb:[{text:"Dashboard"},{text:"Resources",active:!0}]}},{path:"/dashboard/map",name:"dashboard-map",component:()=>Promise.all([a.e(5434),a.e(6567),a.e(6301),a.e(7218),a.e(4393),a.e(2355),a.e(2741)]).then(a.bind(a,32741)),meta:{pageTitle:"Map",breadcrumb:[{text:"Dashboard"},{text:"Map",active:!0}]}},{path:"/dashboard/rewards",name:"dashboard-rewards",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(8755)]).then(a.bind(a,68755)),meta:{pageTitle:"Rewards",breadcrumb:[{text:"Dashboard"},{text:"Rewards",active:!0}]}},{path:"/dashboard/economics",name:"dashboard-economics",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(8755)]).then(a.bind(a,68755)),meta:{pageTitle:"Rewards",breadcrumb:[{text:"Dashboard"},{text:"Rewards",active:!0}]}},{path:"/dashboard/list",name:"dashboard-list",component:()=>Promise.all([a.e(7218),a.e(6666)]).then(a.bind(a,46666)),meta:{pageTitle:"List",breadcrumb:[{text:"Dashboard"},{text:"List",active:!0}]}}],l=[{path:"/daemon/control/getinfo",name:"daemon-control-getinfo",component:()=>a.e(5213).then(a.bind(a,35213)),meta:{pageTitle:"Get Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Get Info",active:!0}]}},{path:"/daemon/control/help",name:"daemon-control-help",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(1966)]).then(a.bind(a,67647)),meta:{pageTitle:"Help",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Help",active:!0}]}},{path:"/daemon/control/rescanblockchain",name:"daemon-control-rescanblockchain",component:()=>a.e(6626).then(a.bind(a,86626)),meta:{pageTitle:"Rescan Blockchain",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Rescan Blockchain",active:!0}],privilege:["admin"]}},{path:"/daemon/control/reindexblockchain",name:"daemon-control-reindexblockchain",component:()=>a.e(6223).then(a.bind(a,16223)),meta:{pageTitle:"Reindex Blockchain",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Reindex Blockchain",active:!0}],privilege:["admin"]}},{path:"/daemon/control/start",name:"daemon-control-start",component:()=>a.e(3404).then(a.bind(a,43404)),meta:{pageTitle:"Start",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Start",active:!0}],privilege:["admin","fluxteam"]}},{path:"/daemon/control/stop",name:"daemon-control-stop",component:()=>a.e(1313).then(a.bind(a,91313)),meta:{pageTitle:"Stop",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Stop",active:!0}],privilege:["admin"]}},{path:"/daemon/control/restart",name:"daemon-control-restart",component:()=>a.e(9389).then(a.bind(a,39389)),meta:{pageTitle:"Restart",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Control"},{text:"Restart",active:!0}],privilege:["admin","fluxteam"]}}],d=[{path:"/daemon/fluxnode/getnodestatus",name:"daemon-fluxnode-getstatus",component:()=>a.e(1145).then(a.bind(a,81145)),meta:{pageTitle:"Node Status",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get Node Status",active:!0}]}},{path:"/daemon/fluxnode/listfluxnodes",name:"daemon-fluxnode-listfluxnodes",component:()=>Promise.all([a.e(6301),a.e(7365)]).then(a.bind(a,67365)),meta:{pageTitle:"List FluxNodes",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"List FluxNodes",active:!0}]}},{path:"/daemon/fluxnode/viewfluxnodelist",name:"daemon-fluxnode-viewfluxnodelist",component:()=>Promise.all([a.e(6301),a.e(7249)]).then(a.bind(a,77249)),meta:{pageTitle:"View Deterministic FluxNodes",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"View FluxNode List",active:!0}]}},{path:"/daemon/fluxnode/getfluxnodecount",name:"daemon-fluxnode-getfluxnodecount",component:()=>a.e(4671).then(a.bind(a,14671)),meta:{pageTitle:"Get FluxNode Count",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get FluxNode Count",active:!0}]}},{path:"/daemon/fluxnode/getstartlist",name:"daemon-fluxnode-getstartlist",component:()=>Promise.all([a.e(6301),a.e(2743)]).then(a.bind(a,32743)),meta:{pageTitle:"Get Start List",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get Start List",active:!0}]}},{path:"/daemon/fluxnode/getdoslist",name:"daemon-fluxnode-getdoslist",component:()=>Promise.all([a.e(6301),a.e(3196)]).then(a.bind(a,43196)),meta:{pageTitle:"Get DOS List",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Get DOS List",active:!0}]}},{path:"/daemon/fluxnode/currentwinner",name:"daemon-fluxnode-currentwinner",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(8390)]).then(a.bind(a,81403)),meta:{pageTitle:"Current Winner",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"FluxNode"},{text:"Current Winner",active:!0}]}}],c=[{path:"/daemon/benchmarks/getbenchmarks",name:"daemon-benchmarks-getbenchmarks",component:()=>a.e(7463).then(a.bind(a,7463)),meta:{pageTitle:"Get Benchmarks",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Get Benchmarks",active:!0}]}},{path:"/daemon/benchmarks/getstatus",name:"daemon-benchmarks-getstatus",component:()=>a.e(6147).then(a.bind(a,96147)),meta:{pageTitle:"Get Bench Status",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Get Status",active:!0}]}},{path:"/daemon/benchmarks/startbenchmark",name:"daemon-benchmarks-start",component:()=>a.e(9816).then(a.bind(a,59816)),meta:{pageTitle:"Start Benchmark",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Start Benchmark",active:!0}],privilege:["admin","fluxteam"]}},{path:"/daemon/benchmarks/stopbenchmark",name:"daemon-benchmarks-stop",component:()=>a.e(9353).then(a.bind(a,39353)),meta:{pageTitle:"Stop Benchmark",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Benchmarks"},{text:"Stop Benchmark",active:!0}],privilege:["admin","fluxteam"]}}],m=[{path:"/daemon/blockchain/getblockchaininfo",name:"daemon-blockchain-getchaininfo",component:()=>a.e(1115).then(a.bind(a,61115)),meta:{pageTitle:"Get Blockchain Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Blockchain Info",active:!0}]}}],p=[{path:"/daemon/mining/getmininginfo",name:"daemon-mining-getmininginfo",component:()=>a.e(5497).then(a.bind(a,85497)),meta:{pageTitle:"Get Mining Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Mining Info",active:!0}]}}],u=[{path:"/daemon/network/getnetworkinfo",name:"daemon-network-getnetworkinfo",component:()=>a.e(4764).then(a.bind(a,84764)),meta:{pageTitle:"Get Network Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Network Info",active:!0}]}}],b=[{path:"/daemon/transaction/getrawtransaction",name:"daemon-transaction-getrawtransaction",component:()=>a.e(8910).then(a.bind(a,28910)),meta:{pageTitle:"Get Raw Transaction",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Raw Transaction",active:!0}]}}],g=[{path:"/daemon/validateaddress",name:"daemon-util-validateaddress",component:()=>a.e(237).then(a.bind(a,60237)),meta:{pageTitle:"Validate Address",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Validate Address",active:!0}]}}],h=[{path:"/daemon/getwalletinfo",name:"daemon-wallet-getwalletinfo",component:()=>a.e(5528).then(a.bind(a,95528)),meta:{pageTitle:"Get Wallet Info",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Get Wallet Info",active:!0}],privilege:["user","admin","fluxteam"]}}],f=[...l,...d,...c,...m,...p,...u,...b,...g,...h,{path:"/daemon/debug",name:"daemon-debug",component:()=>Promise.all([a.e(6301),a.e(9853)]).then(a.bind(a,59853)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Daemon"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}],x=[{path:"/benchmark/control/help",name:"benchmark-control-help",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(7966)]).then(a.bind(a,34917)),meta:{pageTitle:"Help",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Help",active:!0}]}},{path:"/benchmark/control/start",name:"benchmark-control-start",component:()=>a.e(5038).then(a.bind(a,45038)),meta:{pageTitle:"Start",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Start",active:!0}],privilege:["admin","fluxteam"]}},{path:"/benchmark/control/stop",name:"benchmark-control-stop",component:()=>a.e(6518).then(a.bind(a,36518)),meta:{pageTitle:"Stop",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Stop",active:!0}],privilege:["admin"]}},{path:"/benchmark/control/restart",name:"benchmark-control-restart",component:()=>a.e(7031).then(a.bind(a,7031)),meta:{pageTitle:"Restart",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Control"},{text:"Restart",active:!0}],privilege:["admin","fluxteam"]}}],v=[{path:"/benchmark/fluxnode/getbenchmarks",name:"benchmark-fluxnode-getbenchmarks",component:()=>a.e(1573).then(a.bind(a,1573)),meta:{pageTitle:"Get Benchmarks",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"FluxNode"},{text:"Get Benchmarks",active:!0}]}},{path:"/benchmark/fluxnode/getinfo",name:"benchmark-fluxnode-getinfo",component:()=>a.e(6262).then(a.bind(a,16262)),meta:{pageTitle:"Get Info",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"FluxNode"},{text:"Get Info",active:!0}]}}],k=[{path:"/benchmark/benchmarks/getstatus",name:"benchmark-benchmarks-getstatus",component:()=>a.e(9875).then(a.bind(a,59875)),meta:{pageTitle:"Get Status",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Get Status",active:!0}]}},{path:"/benchmark/benchmarks/restartbenchmarks",name:"benchmark-benchmarks-restartbenchmarks",component:()=>a.e(3678).then(a.bind(a,63678)),meta:{pageTitle:"Restart Node Benchmarks",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Restart Node Benchmarks",active:!0}],privilege:["admin","fluxteam"]}},{path:"/benchmark/benchmarks/signtransaction",name:"benchmark-benchmarks-signtransaction",component:()=>a.e(62).then(a.bind(a,20062)),meta:{pageTitle:"Sign FluxNode Transaction",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Benchmarks"},{text:"Sign Transaction",active:!0}],privilege:["admin"]}}],A=[...x,...v,...k,{path:"/benchmark/debug",name:"benchmark-debug",component:()=>Promise.all([a.e(6301),a.e(7550)]).then(a.bind(a,37550)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Benchmark"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}],y=[{path:"/flux/nodestatus",name:"flux-nodestatus",component:()=>a.e(7583).then(a.bind(a,87583)),meta:{pageTitle:"Node Status",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Node Status",active:!0}]}},{path:"/flux/fluxnetwork",name:"flux-fluxnetwork",component:()=>a.e(3904).then(a.bind(a,63904)),meta:{pageTitle:"Flux Network",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Flux Network",active:!0}]}},{path:"/flux/debug",name:"flux-debug",component:()=>Promise.all([a.e(6301),a.e(3920),a.e(1540)]).then(a.bind(a,1540)),meta:{pageTitle:"Debug",breadcrumb:[{text:"Administration"},{text:"Flux"},{text:"Debug",active:!0}],privilege:["admin","fluxteam"]}}];var T=a(82162);const C=[{path:"/apps/myapps",name:"apps-myapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(8182),a.e(2152)]).then(a.bind(a,76567)),meta:{pageTitle:"Applications",breadcrumb:[{text:"Applications"},{text:"Management",active:!0}]}},{path:"/apps/globalapps",name:"apps-globalapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(8182),a.e(3707)]).then(a.bind(a,99589)),meta:{pageTitle:"Applications",breadcrumb:[{text:"Applications"},{text:"Global Apps",active:!0}]}},{path:"/apps/registerapp/:appspecs?",name:"apps-registerapp",component:()=>Promise.all([a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(2755),a.e(1530),a.e(7353),a.e(4323)]).then(a.bind(a,41219)),meta:{pageTitle:"Register New App",breadcrumb:[{text:"Applications"},{text:"Register New App",active:!0}]}},{path:"/apps/marketplace",name:"apps-marketplace",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application"}},{path:"/apps/marketplace/:filter",name:"apps-marketplace-filter",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application",navActiveLink:"apps-marketplace"},beforeEnter(e,t,a){const n=T.categories.map((e=>e.name.toLowerCase()));n.includes(e.params.filter)?a():a({name:"error-404"})}},{path:"https://titan.runonflux.io",name:"apps-marketplace-sharednodes",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(460),a.e(6407),a.e(6289)]).then(a.bind(a,80166)),meta:{contentRenderer:"sidebar-left",contentClass:"marketplace-application",navActiveLink:"apps-marketplace"}}],P=[{path:"/apps/localapps",name:"apps-localapps",component:()=>Promise.all([a.e(5434),a.e(601),a.e(4884),a.e(1601),a.e(8749),a.e(6567),a.e(1973),a.e(2137),a.e(5997),a.e(6301),a.e(7218),a.e(4393),a.e(2755),a.e(1530),a.e(2355),a.e(3920),a.e(7353),a.e(8182),a.e(1570)]).then(a.bind(a,69180)),meta:{pageTitle:"Local Apps",breadcrumb:[{text:"Administration"},{text:"Local Apps",active:!0}]}},{path:"/fluxadmin/loggedsessions",name:"fluxadmin-loggedsessions",component:()=>a.e(5061).then(a.bind(a,15061)),meta:{pageTitle:"Logged Sessions",breadcrumb:[{text:"Administration"},{text:"Logged Sessions",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/manageflux",name:"fluxadmin-manageflux",component:()=>a.e(6777).then(a.bind(a,96777)),meta:{pageTitle:"Manage Flux",breadcrumb:[{text:"Administration"},{text:"Manage Flux",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/managedaemon",name:"fluxadmin-managedaemon",component:()=>a.e(6481).then(a.bind(a,56481)),meta:{pageTitle:"Manage Daemon",breadcrumb:[{text:"Administration"},{text:"Manage Daemon",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/managebenchmark",name:"fluxadmin-managebenchmark",component:()=>a.e(1994).then(a.bind(a,71994)),meta:{pageTitle:"Manage Benchmark",breadcrumb:[{text:"Administration"},{text:"Manage Benchmark",active:!0}],privilege:["admin","fluxteam"]}},{path:"/fluxadmin/manageusers",name:"fluxadmin-manageusers",component:()=>a.e(3383).then(a.bind(a,43383)),meta:{pageTitle:"Manage Users",breadcrumb:[{text:"Administration"},{text:"Manage Users",active:!0}],privilege:["admin","fluxteam"]}},{path:"/apps/fluxsharestorage",name:"apps-fluxsharestorage",component:()=>Promise.all([a.e(6301),a.e(5)]).then(a.bind(a,10005)),meta:{pageTitle:"My FluxShare Storage",breadcrumb:[{text:"Administration"},{text:"My FluxShare Storage",active:!0}],privilege:["admin"]}}],D=[{path:"/xdao-app",name:"xdao-app",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application"}},{path:"/xdao-app/:filter",name:"xdao-app-filter",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application",navActiveLink:"xdao-app"},beforeEnter(e,t,a){["open","passed","unpaid","rejected"].includes(e.params.filter)?a():a({name:"error-404"})}},{path:"/xdao-app/tag/:tag",name:"xdao-app-tag",component:()=>Promise.all([a.e(5434),a.e(6301),a.e(7218),a.e(4393),a.e(460),a.e(7917)]).then(a.bind(a,37917)),meta:{contentRenderer:"sidebar-left",contentClass:"xdao-application",navActiveLink:"xdao-app"},beforeEnter(e,t,a){["team","low","medium","high","update"].includes(e.params.tag)?a():a({name:"error-404"})}}],w=a(80129);n["default"].use(o.ZP);const B=new o.ZP({mode:"history",base:"/",scrollBehavior(){return{x:0,y:0}},routes:[{path:"/",name:"home",component:()=>Promise.all([a.e(601),a.e(4884),a.e(1601),a.e(6301),a.e(2755),a.e(1530),a.e(6407),a.e(447)]).then(a.bind(a,66769)),meta:{pageTitle:"Home",breadcrumb:[{text:"Home",active:!0}]}},{path:"/explorer",name:"explorer",component:()=>Promise.all([a.e(6301),a.e(4156),a.e(3041)]).then(a.bind(a,266)),meta:{pageTitle:"Explorer",breadcrumb:[{text:"Administration"},{text:"Explorer",active:!0}]}},...s,...f,...A,...y,...C,...P,...D,{path:"/successcheckout",name:"successcheckout",component:()=>a.e(2295).then(a.bind(a,42295)),meta:{layout:"full"}},{path:"/error-404",name:"error-404",component:()=>a.e(4661).then(a.bind(a,84661)),meta:{layout:"full"}},{path:"*",redirect:"error-404"}]});B.beforeEach((async(e,t,a)=>{const n=localStorage.getItem("zelidauth"),o=w.parse(n);if(i.Z.commit("flux/setPrivilege","none"),o&&o.zelid&&o.signature&&o.loginPhrase)try{const e=await r.Z.checkUserLogged(o.zelid,o.signature,o.loginPhrase),t=e.data.data.message;i.Z.commit("flux/setPrivilege",t),"none"===t&&localStorage.removeItem("zelidauth")}catch(s){console.log(s)}e.meta&&e.meta.privilege?e.meta.privilege.some((e=>e===i.Z.state.flux.privilege))?a():a("/"):a()})),B.afterEach((()=>{const e=document.getElementById("loading-bg");e&&(e.style.display="none")}));const E=B},80914:(e,t,a)=>{"use strict";a.d(t,{S:()=>c,Z:()=>m});var n=a(87066);const o=a(58971),{protocol:i,hostname:r,port:s}=window.location;let l="";l+=i,l+="//";const d=/[A-Za-z]/g;if(r.split("-")[4]){const e=r.split("-"),t=e[4].split("."),a=+t[0]+1;t[0]=a.toString(),t[2]="api",e[4]="",l+=e.join("-"),l+=t.join(".")}else if(r.match(d)){const e=r.split(".");e[0]="api",l+=e.join(".")}else l+=r,l+=":",l+=+s+1;const c=n.Z.CancelToken.source(),m=()=>n.Z.create({baseURL:o.get("backendURL")||l})},34369:(e,t,a)=>{"use strict";a.d(t,{Z:()=>i});var n=a(80914);const o=a(80129),i={loginPhrase(){return(0,n.Z)().get("/id/loginphrase")},emergencyLoginPhrase(){return(0,n.Z)().get("/id/emergencyphrase")},verifyLogin(e){return(0,n.Z)().post("/id/verifylogin",o.stringify(e))},loggedSessions(e){return(0,n.Z)().get(`/id/loggedsessions?timestamp=${Date.now()}`,{headers:{zelidauth:e}})},loggedUsers(e){return(0,n.Z)().get(`/id/loggedusers?timestamp=${Date.now()}`,{headers:{zelidauth:e}})},activeLoginPhrases(e){return(0,n.Z)().get("/id/activeloginphrases",{headers:{zelidauth:e}})},logoutCurrentSession(e){return(0,n.Z)().get("/id/logoutcurrentsession",{headers:{zelidauth:e}})},logoutSpecificSession(e,t){const a={loginPhrase:t},i={headers:{zelidauth:e}};return(0,n.Z)().post("/id/logoutspecificsession",o.stringify(a),i)},logoutAllSessions(e){return(0,n.Z)().get("/id/logoutallsessions",{headers:{zelidauth:e}})},logoutAllUsers(e){return(0,n.Z)().get("/id/logoutallusers",{headers:{zelidauth:e}})},checkUserLogged(e,t,a){const i={zelid:e,signature:t,loginPhrase:a};return(0,n.Z)().post("/id/checkprivilege",o.stringify(i))}}},73507:(e,t,a)=>{"use strict";a.d(t,{Z:()=>p});var n=a(20144),o=a(20629),i=a(68934);const r={namespaced:!0,state:{windowWidth:0,shallShowOverlay:!1},getters:{currentBreakPoint:e=>{const{windowWidth:t}=e;return t>=i.n.xl?"xl":t>=i.n.lg?"lg":t>=i.n.md?"md":t>=i.n.sm?"sm":"xs"}},mutations:{UPDATE_WINDOW_WIDTH(e,t){e.windowWidth=t},TOGGLE_OVERLAY(e,t){e.shallShowOverlay=void 0!==t?t:!e.shallShowOverlay}},actions:{}},s={namespaced:!0,state:{layout:{isRTL:i.$themeConfig.layout.isRTL,skin:localStorage.getItem("vuexy-skin")||i.$themeConfig.layout.skin,routerTransition:i.$themeConfig.layout.routerTransition,type:i.$themeConfig.layout.type,contentWidth:i.$themeConfig.layout.contentWidth,menu:{hidden:i.$themeConfig.layout.menu.hidden,collapsed:"true"===localStorage.getItem("menu-itemsCollapsed")||i.$themeConfig.layout.menu.itemsCollapsed},navbar:{type:i.$themeConfig.layout.navbar.type,backgroundColor:i.$themeConfig.layout.navbar.backgroundColor},footer:{type:i.$themeConfig.layout.footer.type}}},getters:{},mutations:{TOGGLE_RTL(e){e.layout.isRTL=!e.layout.isRTL,document.documentElement.setAttribute("dir",e.layout.isRTL?"rtl":"ltr")},UPDATE_SKIN(e,t){e.layout.skin=t,localStorage.setItem("vuexy-skin",t),"dark"===t?document.body.classList.add("dark-layout"):document.body.className.match("dark-layout")&&document.body.classList.remove("dark-layout")},UPDATE_ROUTER_TRANSITION(e,t){e.layout.routerTransition=t},UPDATE_LAYOUT_TYPE(e,t){e.layout.type=t},UPDATE_CONTENT_WIDTH(e,t){e.layout.contentWidth=t},UPDATE_NAV_MENU_HIDDEN(e,t){e.layout.menu.hidden=t},UPDATE_NAVBAR_CONFIG(e,t){Object.assign(e.layout.navbar,t)},UPDATE_FOOTER_CONFIG(e,t){Object.assign(e.layout.footer,t)},UPDATE_MENU_COLLAPSED(e,t){e.layout.menu.collapsed=t,localStorage.setItem("menu-itemsCollapsed",t)}},actions:{}},l={namespaced:!0,state:{isVerticalMenuCollapsed:"true"===localStorage.getItem("menu-isCollapsed")||i.$themeConfig.layout.menu.isCollapsed},getters:{},mutations:{UPDATE_VERTICAL_MENU_COLLAPSED(e,t){e.isVerticalMenuCollapsed=t,localStorage.setItem("menu-isCollapsed",t)}},actions:{}};var d=a(90325),c=a.n(d);const m={namespaced:!0,state:{userconfig:{zelid:"",externalip:""},config:{apiPort:c().server.apiport,fluxTeamFluxID:c().fluxTeamFluxID,fluxSupportTeamFluxID:c().fluxSupportTeamFluxID},privilege:"none",zelid:"",fluxVersion:"",xdaoOpen:0},getters:{xdaoOpen(e){return e.xdaoOpen}},mutations:{setPrivilege(e,t){e.privilege=t},setZelid(e,t){e.zelid=t},setFluxVersion(e,t){e.fluxVersion=t},setUserZelid(e,t){e.userconfig.zelid=t},setUserIp(e,t){e.userconfig.externalip=t},setFluxPort(e,t){e.config.apiPort=t},setXDAOOpen(e,t){e.xdaoOpen=t}},actions:{}};n["default"].use(o.ZP);const p=new o.ZP.Store({modules:{app:r,appConfig:s,verticalMenu:l,flux:m},strict:{NODE_ENV:"production",BASE_URL:"/"}.DEV})},68934:(e,t,a)=>{"use strict";a.d(t,{$themeConfig:()=>i,j:()=>n,n:()=>o});const n={},o={},i={app:{appName:"FluxOS",appLogoImageDark:a(98927),appLogoImage:a(62606)},layout:{isRTL:!1,skin:"dark",routerTransition:"zoom-fade",type:"vertical",contentWidth:"full",menu:{hidden:!1,isCollapsed:!1,itemsCollapsed:!0},navbar:{type:"sticky",backgroundColor:""},footer:{type:"static"},customizer:!0,enableScrollToTop:!0}}},90325:(e,t,a)=>{let n=a(65796);const o=n.initial.development||!1;e.exports={development:o,loglevel:"debug",server:{allowedPorts:[16127,16137,16147,16157,16167,16177,16187,16197],apiport:16127,fluxNodeServiceAddress:"169.254.43.43"},database:{url:"127.0.0.1",port:27017,local:{database:"zelfluxlocal",collections:{loggedUsers:"loggedusers",activeLoginPhrases:"activeloginphrases",activeSignatures:"activesignatures"}},daemon:{database:"zelcashdata",collections:{scannedHeight:"scannedheight",utxoIndex:"utxoindex",addressTransactionIndex:"addresstransactionindex",fluxTransactions:"zelnodetransactions",appsHashes:"zelappshashes",coinbaseFusionIndex:"coinbasefusionindex"}},appslocal:{database:"localzelapps",collections:{appsInformation:"zelappsinformation"}},appsglobal:{database:"globalzelapps",collections:{appsMessages:"zelappsmessages",appsInformation:"zelappsinformation",appsTemporaryMessages:"zelappstemporarymessages",appsLocations:"zelappslocation"}},chainparams:{database:"chainparams",collections:{chainMessages:"chainmessages"}},fluxshare:{database:"zelshare",collections:{shared:"shared"}}},benchmark:{port:16225,rpcport:16224,porttestnet:26225,rpcporttestnet:26224},daemon:{chainValidHeight:1062e3,port:16125,rpcport:16124,porttestnet:26125,rpcporttestnet:26124,zmqport:16123},minimumFluxBenchAllowedVersion:"4.0.0",minimumFluxOSAllowedVersion:"5.4.0",minimumSyncthingAllowedVersion:"1.27.6",minimumDockerAllowedVersion:"26.1.2",fluxTeamFluxID:"1hjy4bCYBJr4mny4zCE85J94RXa8W6q37",fluxSupportTeamFluxID:"16iJqiVbHptCx87q6XQwNpKdgEZnFtKcyP",deterministicNodesStart:558e3,messagesBroadcastRefactorStart:1751250,fluxapps:{price:[{height:-1,cpu:3,ram:1,hdd:.5,minPrice:1,port:2,scope:6,staticip:3},{height:983e3,cpu:.3,ram:.1,hdd:.05,minPrice:.1,port:2,scope:6,staticip:3},{height:1004e3,cpu:.06,ram:.02,hdd:.01,minPrice:.01,port:2,scope:6,staticip:3},{height:1288e3,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:2,scope:6,staticip:3},{height:1594832,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:1.5,scope:6,staticip:3},{height:1597156,cpu:.03,ram:.01,hdd:.004,minPrice:.01,port:.4,scope:.8,staticip:.4}],fluxUSDRate:.6,usdprice:{height:-1,cpu:.15,ram:.05,hdd:.02,minPrice:.01,port:2,scope:4,staticip:2,fluxmultiplier:.95,multiplier:1,minUSDPrice:.99},appSpecsEnforcementHeights:{1:0,2:0,3:983e3,4:1004e3,5:1142e3,6:13e5,7:o?139e4:142e4},address:"t1LUs6quf7TB2zVZmexqPQdnqmrFMGZGjV6",addressMultisig:"t3aGJvdtd8NR6GrnqnRuVEzH6MbrXuJFLUX",addressMultisigB:"t3NryfAQLGeFs9jEoeqsxmBN2QLRaRKFLUX",addressDevelopment:"t1Mzja9iJcEYeW5B4m4s1tJG8M42odFZ16A",multisigAddressChange:167e4,fluxAppRequestV2:167e4,epochstart:694e3,publicepochstart:705e3,portMin:31e3,portMax:39999,portBlockheightChange:o?139e4:142e4,portMinNew:1,portMaxNew:65535,bannedPorts:["16100-16299","26100-26299","30000-30099",8384,27017,22,23,25,3389,5900,5800,161,512,513,5901,3388,4444,123,53],enterprisePorts:["0-1023",8080,8081,8443,6667],upnpBannedPorts:[],maxImageSize:2e9,minimumInstances:3,maximumInstances:100,minOutgoing:8,minUniqueIpsOutgoing:7,minIncoming:4,minUniqueIpsIncoming:3,minUpTime:1800,installation:{probability:100,delay:120},removal:{probability:25,delay:300},redeploy:{probability:2,delay:30,composedDelay:5},blocksLasting:22e3,minBlocksAllowance:5e3,newMinBlocksAllowance:100,newMinBlocksAllowanceBlock:1630040,maxBlocksAllowance:264e3,blocksAllowanceInterval:1e3,removeBlocksAllowanceIntervalBlock:1625e3,ownerAppAllowance:1e3,temporaryAppAllowance:200,expireFluxAppsPeriod:100,updateFluxAppsPeriod:9,removeFluxAppsPeriod:11,reconstructAppMessagesHashPeriod:3600,benchUpnpPeriod:6480,hddFileSystemMinimum:10,defaultSwap:2,applyMinimumPriceOn3Instances:1691e3},lockedSystemResources:{cpu:10,ram:2e3,hdd:60,extrahdd:20},fluxSpecifics:{cpu:{cumulus:40,nimbus:80,stratus:160},ram:{cumulus:7e3,nimbus:3e4,stratus:61e3},hdd:{cumulus:220,nimbus:440,stratus:880},collateral:{cumulusold:1e4,nimbusold:25e3,stratusold:1e5,cumulus:1e3,nimbus:12500,stratus:4e4}},syncthing:{ip:"127.0.0.1",port:8384},enterprisePublicKeys:["045bd4f81d7bda582141793463edb58e0f3228a873bd6b6680b78586db2969f51dfeda672eae65e64ca814316f77557012d02c73db7876764f5eddb6b6d9d02b5b","042ebcb3a94fe66b9ded6e456871346d6984502bbadf14ed07644e0eb91f8cc0b1f07632c428e1e6793f372d9c303d680de80ae0499d51095676cabf68599e9591","040a0f94fdbd670a4514a7366e8b5f7fbfb264c6ca6ea7d3f37147410b62a50525d1ed1ac83dac029de9203b9cabcf18a01b82e499ba36ea51594fd799999b2a26","04092edca3ed2d2b744a1d93e504568e9d861f38232023835202c155afa9f74e3779c926745a4157a7897ca6dca30aa78aa26e4ee11101ce20db9fc79b686de5f0","045964031bb8818521b99f16d2614f1bc8a9968184c9c38dc09cf95b744dae0f603ff3bbecc7845d952901ebabeb343cdcde3c4325274901768dfb102b9a34f5d6","0459f5c058481d557fb63580bfbf21f3791a2f3a62a62c99b435fd8db1d59e21353bdae35cfe00adaf7c4f2f0d400afc698e9c58ee6a3894c20706b3db7da83750","040ecac42ff4468fa8ae094e125fb8ae67c1a588e7b218ac0a9d270bba882c19db656b7b5d99b1af0fe96c34475545088a5bd87efb9a771174bcdd7fb499dd7ca3","04a52af6e9688fcb9d47096f8a15db67131f9b0bbfb50c28fd22028d9fba18f4e9bd3293b43ed64634dbba11688b4e37f1f8e65629b6a204df352d3ecfb174b9f5","04ce029f9d17da47809cbde46e0ea2eace185f79f98e5718cb4ddc3d84bfd742cd3e3951388fcd2771238ab323fe22d53c3dced2a30326ead0447b10f7db0a829b","04dbbf2ba07d28b0010f4faa0537d963b3481b5d8e7ec0de29f311264a4ab074d4d579aca1c2aa3eb31e96f439a6d6bbf72393584049923f342ed4762f13fe7be4","043c4fe1606c543ca28f107245166321fae026300747a608db94deecbcd2d945f86b29c52a33416464e7823a6c2e3e45c26733f6378be973959cbf9ee4bff79e66","04a898a0bc768ad0b8456b4da7c1e653a715477926fefb47ef20d8bd841854ddf4e1f59c1c3d55f0088eaca53b850e6ab03d0bd00d0b5a70d17ffbc0554b6188d5","0455a20efde6a0685fa15b020e694674170376bc7c23d203e96fb927717db38011b87c36b2f81c5cf68123c5567abf2b29788231966ea4c43c4f5cb759e4c5cdbb","04c765d054bcded999c404145c7396725df81973fe803b3da5e9455173410743f43e20294e17bb41adff8b4ff1ab5540b8bcd98521b438840b6a38e904eb0b247f","03cf1d8b708ca7f5979accb4d0dba35a90391e3dfc4422cf12670c929bb58d16ac","03e29783936a36b396c28706494dbfd35f3d087f2addeb3df32e451f71bf9a53f3"]}},65796:e=>{e.exports={initial:{ipaddress:"94.16.104.218",zelid:"1K6nyw2VjV6jEN1f1CkbKn9htWnYkQabbR",kadena:"kadena:k:b3d922d1a57793651a1e0d951ef1671a10833e170810d3520388628cdc082fce?chainid=0",testnet:!1,development:!1,apiport:NaN,pgpPrivateKey:"-----BEGIN PGP PRIVATE KEY BLOCK-----\n\nxVgEZHmg8RYJKwYBBAHaRw8BAQdAvezm7p0lvhM4yOpOSre0cB9W7LCVQ/dM\nzISJD+qJNM8AAP9aHyinNqZkJt6F4siUloUVJt6rOgGCn0e/D3icC2Yisg73\nzXQzMWE5ZjY0ZDNmYzRlZmFlZTQzNzYxM2UzN2NiMmYxZDYzYjRjOTA5N2U5\nZDhlZDhjODFmOTkzNzllM2RkNDY0OjAgPDFLNm55dzJWalY2akVOMWYxQ2ti\nS245aHRXbllrUWFiYlJAcnVub25mbHV4LmlvPsKMBBAWCgA+BYJkeaDxBAsJ\nBwgJkLG9++fl7XbxAxUICgQWAAIBAhkBApsDAh4BFiEEtOdwyqWbs8NNu6s0\nsb375+XtdvEAAEnoAQD2BWD7do+fMVeBbV82fIOhz2qdnDaYAprrihDz6vwb\nTwEAnPMIC4p9iaptWru9Qa2uu3rJsnNmKoiEl1wfFQe+BwfHXQRkeaDxEgor\nBgEEAZdVAQUBAQdA8E0WJLyldJfrFik2vBRQe6kaukdzzTEn7pdoxsd98RUD\nAQgHAAD/ShBVjfSyN5gHdY7AuJaAfqqERyTSkc+hCcSc07cY6zgRYMJ4BBgW\nCAAqBYJkeaDxCZCxvfvn5e128QKbDBYhBLTncMqlm7PDTburNLG9++fl7Xbx\nAADU2QD/TGxJcV7wrgHSJtXxl7ySaYKS/SFgIhF2uQzeS3CwIoYBANyqyX+C\nda2lr4gzAcmnyJGGAK9U60WK4Ppw50lxPP8G\n=A9AK\n-----END PGP PRIVATE KEY BLOCK-----\n",pgpPublicKey:"-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nxjMEZHmg8RYJKwYBBAHaRw8BAQdAvezm7p0lvhM4yOpOSre0cB9W7LCVQ/dM\nzISJD+qJNM/NdDMxYTlmNjRkM2ZjNGVmYWVlNDM3NjEzZTM3Y2IyZjFkNjNi\nNGM5MDk3ZTlkOGVkOGM4MWY5OTM3OWUzZGQ0NjQ6MCA8MUs2bnl3MlZqVjZq\nRU4xZjFDa2JLbjlodFduWWtRYWJiUkBydW5vbmZsdXguaW8+wowEEBYKAD4F\ngmR5oPEECwkHCAmQsb375+XtdvEDFQgKBBYAAgECGQECmwMCHgEWIQS053DK\npZuzw027qzSxvfvn5e128QAASegBAPYFYPt2j58xV4FtXzZ8g6HPap2cNpgC\nmuuKEPPq/BtPAQCc8wgLin2Jqm1au71Bra67esmyc2YqiISXXB8VB74HB844\nBGR5oPESCisGAQQBl1UBBQEBB0DwTRYkvKV0l+sWKTa8FFB7qRq6R3PNMSfu\nl2jGx33xFQMBCAfCeAQYFggAKgWCZHmg8QmQsb375+XtdvECmwwWIQS053DK\npZuzw027qzSxvfvn5e128QAA1NkA/0xsSXFe8K4B0ibV8Ze8kmmCkv0hYCIR\ndrkM3ktwsCKGAQDcqsl/gnWtpa+IMwHJp8iRhgCvVOtFiuD6cOdJcTz/Bg==\n=V9QD\n-----END PGP PUBLIC KEY BLOCK-----\n"}}},98927:(e,t,a)=>{"use strict";e.exports=a.p+"img/logo.svg"},62606:(e,t,a)=>{"use strict";e.exports=a.p+"img/logo_light.svg"},24654:()=>{}},t={};function a(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=e,(()=>{a.amdD=function(){throw new Error("define cannot be used indirect")}})(),(()=>{var e=[];a.O=(t,n,o,i)=>{if(!n){var r=1/0;for(c=0;c=i)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(s=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[n,o,i]}})(),(()=>{a.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return a.d(t,{a:t}),t}})(),(()=>{a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[]))})(),(()=>{a.u=e=>"js/"+({601:"walletconnect",1601:"stablelib",1973:"xterm",2137:"vueJsonViewer",4884:"metamask",5434:"apexcharts",5997:"clipboard",6567:"leaflet",8749:"openpgp"}[e]||e)+".js"})(),(()=>{a.miniCssF=e=>"css/"+e+".css"})(),(()=>{a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="flux:";a.l=(n,o,i,r)=>{if(e[n])e[n].push(o);else{var s,l;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c{s.onerror=s.onload=null,clearTimeout(u);var o=e[n];if(delete e[n],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((e=>e(a))),t)return t(a)},u=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),l&&document.head.appendChild(s)}}})(),(()=>{a.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e)})(),(()=>{a.p="/"})(),(()=>{if("undefined"!==typeof document){var e=(e,t,a,n,o)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css";var r=a=>{if(i.onerror=i.onload=null,"load"===a.type)n();else{var r=a&&("load"===a.type?"missing":a.type),s=a&&a.target&&a.target.href||t,l=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");l.code="CSS_CHUNK_LOAD_FAILED",l.type=r,l.request=s,i.parentNode&&i.parentNode.removeChild(i),o(l)}};return i.onerror=i.onload=r,i.href=t,a?a.parentNode.insertBefore(i,a.nextSibling):document.head.appendChild(i),i},t=(e,t)=>{for(var a=document.getElementsByTagName("link"),n=0;nnew Promise(((o,i)=>{var r=a.miniCssF(n),s=a.p+r;if(t(r,s))return o();e(n,s,null,o,i)})),o={4826:0};a.f.miniCss=(e,t)=>{var a={5:1,62:1,237:1,447:1,1115:1,1145:1,1313:1,1540:1,1570:1,1573:1,1966:1,1994:1,2152:1,2295:1,2355:1,2741:1,2743:1,3041:1,3196:1,3383:1,3404:1,3678:1,3707:1,3904:1,4323:1,4661:1,4671:1,4764:1,5038:1,5061:1,5213:1,5216:1,5486:1,5497:1,5528:1,5988:1,6147:1,6223:1,6262:1,6289:1,6407:1,6481:1,6518:1,6626:1,6777:1,7031:1,7249:1,7365:1,7463:1,7550:1,7583:1,7917:1,7966:1,8390:1,8755:1,8910:1,9353:1,9389:1,9816:1,9853:1,9875:1};o[e]?t.push(o[e]):0!==o[e]&&a[e]&&t.push(o[e]=n(e).then((()=>{o[e]=0}),(t=>{throw delete o[e],t})))}}})(),(()=>{var e={4826:0};a.f.j=(t,n)=>{var o=a.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else{var i=new Promise(((a,n)=>o=e[t]=[a,n]));n.push(o[2]=i);var r=a.p+a.u(t),s=new Error,l=n=>{if(a.o(e,t)&&(o=e[t],0!==o&&(e[t]=void 0),o)){var i=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+i+": "+r+")",s.name="ChunkLoadError",s.type=i,s.request=r,o[1](s)}};a.l(r,l,"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var o,i,[r,s,l]=n,d=0;if(r.some((t=>0!==e[t]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(l)var c=l(a)}for(t&&t(n);da(69699)));n=a.O(n)})(); \ No newline at end of file diff --git a/HomeUI/src/views/apps/Management.vue b/HomeUI/src/views/apps/Management.vue index 1bec262e8..02aa8a7a9 100644 --- a/HomeUI/src/views/apps/Management.vue +++ b/HomeUI/src/views/apps/Management.vue @@ -3459,7 +3459,7 @@ Warning: This will be executed on all your aplications instances accross the network Reinstall your application from the docker repo. Soft option, keeps data on the instance, Hard option deletes everything and gets installed like a fresh install. - If app uses syncthing it can takes up to 30 to be up and running. + Using hard option, if app uses syncthing it can takes up to 30m to be up and running on all instances.
{ - const statsTimestamp = new Date(stats.timestamp).getTime(); - return statsTimestamp >= cutoffTimestamp; - }); - filteredStats.forEach((stats) => { + statsData.forEach((stats) => { this.processStatsData(stats.data, stats.timestamp); }); } else { diff --git a/ZelBack/src/routes.js b/ZelBack/src/routes.js index 99eba7fa1..72bbbf126 100644 --- a/ZelBack/src/routes.js +++ b/ZelBack/src/routes.js @@ -1113,7 +1113,7 @@ module.exports = (app) => { app.get('/apps/appstats/:appname?', (req, res) => { appsService.appStats(req, res); }); - app.get('/apps/appmonitor/:appname?', (req, res) => { + app.get('/apps/appmonitor/:appname?/:range?', (req, res) => { appsService.appMonitor(req, res); }); app.get('/apps/appmonitorstream/:appname?', (req, res) => { diff --git a/ZelBack/src/services/appsService.js b/ZelBack/src/services/appsService.js index 67d06012f..95db0fa86 100644 --- a/ZelBack/src/services/appsService.js +++ b/ZelBack/src/services/appsService.js @@ -1072,20 +1072,37 @@ async function appStats(req, res) { */ async function appMonitor(req, res) { try { - let { appname } = req.params; + let { appname, range } = req.params; appname = appname || req.query.appname; + range = range || req.query.range || null; if (!appname) { throw new Error('No Flux App specified'); } + if (range !== null) { + range = parseInt(range, 10); + if (!Number.isInteger(range) || range <= 0) { + throw new Error('Invalid range value. It must be a positive integer or null.'); + } + } + const mainAppName = appname.split('_')[1] || appname; const authorized = await verificationHelper.verifyPrivilege('appownerabove', req, mainAppName); if (authorized === true) { if (appsMonitored[appname]) { - const response = appsMonitored[appname].statsStore; - const appResponse = messageHelper.createDataMessage(response); + let appStatsMonitoring = appsMonitored[appname].statsStore; + if (range) { + const now = Date.now(); + const cutoffTimestamp = now - range; + const hoursInMs = 24 * 60 * 60 * 1000; // 24 hours in milliseconds + appStatsMonitoring = appStatsMonitoring.filter((stats) => stats.timestamp >= cutoffTimestamp); + if (range > hoursInMs) { + appStatsMonitoring = appStatsMonitoring.filter((_, index, array) => index % 20 === 0 || index === array.length - 1); // keep always last entry + } + } + const appResponse = messageHelper.createDataMessage(appStatsMonitoring); res.json(appResponse); } else throw new Error('No data available'); } else { @@ -3755,6 +3772,7 @@ async function registerAppLocally(appSpecs, componentSpecs, res, test = false) { ip: myIP, broadcastedAt, runningSince: broadcastedAt, + osUptime: os.uptime(), }; // store it in local database first @@ -6638,6 +6656,9 @@ async function storeAppRunningMessage(message) { } else if (result && result.runningSince) { newAppRunningMessage.runningSince = result.runningSince; } + if (result.osUptime) { + newAppRunningMessage.osUptime = result.osUptime; + } const queryUpdate = { name: newAppRunningMessage.name, ip: newAppRunningMessage.ip }; const update = { $set: newAppRunningMessage }; const options = { @@ -6646,6 +6667,20 @@ async function storeAppRunningMessage(message) { // eslint-disable-next-line no-await-in-loop await dbHelper.updateOneInDatabase(database, globalAppsLocations, queryUpdate, update, options); } + + if (message.version === 2 && appsMessages.length === 0) { + const queryFind = { ip: message.ip }; + const projection = { _id: 0, runningSince: 1 }; + // we already have the exact same data + // eslint-disable-next-line no-await-in-loop + const result = await dbHelper.findInDatabase(database, globalAppsLocations, queryFind, projection); + if (result.length > 0) { + await dbHelper.removeDocumentsFromCollection(database, globalAppsLocations, queryFind); + } else { + return false; + } + } + if (messageNotOk) { return false; } @@ -8692,6 +8727,7 @@ async function appLocation(appname) { broadcastedAt: 1, expireAt: 1, runningSince: 1, + osUptime: 1, }, }; const results = await dbHelper.findInDatabase(database, globalAppsLocations, query, projection); @@ -8788,6 +8824,7 @@ async function getRunningAppIpList(ip) { // returns all apps running on this ip broadcastedAt: 1, expireAt: 1, runningSince: 1, + osUptime: 1, }, }; const results = await dbHelper.findInDatabase(database, globalAppsLocations, query, projection); @@ -8812,6 +8849,7 @@ async function getRunningAppList(appName) { broadcastedAt: 1, expireAt: 1, runningSince: 1, + osUptime: 1, }, }; const results = await dbHelper.findInDatabase(database, globalAppsLocations, query, projection); @@ -9013,6 +9051,7 @@ let firstExecutionAfterItsSynced = true; let fluxNodeWasAlreadyConfirmed = false; let fluxNodeWasNotConfirmedOnLastCheck = false; const appsToBeCheckedLater = []; +const appsSyncthingToBeCheckedLater = []; async function trySpawningGlobalApplication() { try { // how do we continue with this function? @@ -9127,12 +9166,19 @@ async function trySpawningGlobalApplication() { let appToRunAux = null; let minInstances = null; let appFromAppsToBeCheckedLater = false; + let appFromAppsSyncthingToBeCheckedLater = false; const appIndex = appsToBeCheckedLater.findIndex((app) => app.timeToCheck >= Date.now()); + const appSyncthingIndex = appsSyncthingToBeCheckedLater.findIndex((app) => app.timeToCheck >= Date.now()); if (appIndex >= 0) { appToRun = appsToBeCheckedLater[appIndex].appName; minInstances = appsToBeCheckedLater[appIndex].required; appsToBeCheckedLater.splice(appIndex, 1); appFromAppsToBeCheckedLater = true; + } else if (appSyncthingIndex >= 0) { + appToRun = appsSyncthingToBeCheckedLater[appSyncthingIndex].appName; + minInstances = appsSyncthingToBeCheckedLater[appSyncthingIndex].required; + appsSyncthingToBeCheckedLater.splice(appSyncthingIndex, 1); + appFromAppsSyncthingToBeCheckedLater = true; } else { const myNodeLocation = nodeFullGeolocation(); globalAppNamesLocation = globalAppNamesLocation.filter((app) => (app.geolocation.length === 0 || app.geolocation.find((loc) => `ac${myNodeLocation}`.startsWith(loc))) @@ -9275,13 +9321,38 @@ async function trySpawningGlobalApplication() { if (syncthingApp) { const myIpWithoutPort = myIP.split(':')[0]; const lastIndex = myIpWithoutPort.lastIndexOf('.'); - const sameIpRangeNode = runningAppList.find((location) => location.ip.includes(myIpWithoutPort.substring(0, lastIndex))); + const secondLastIndex = myIpWithoutPort.substring(0, lastIndex).lastIndexOf('.'); + const sameIpRangeNode = runningAppList.find((location) => location.ip.includes(myIpWithoutPort.substring(0, secondLastIndex))); if (sameIpRangeNode) { log.info(`trySpawningGlobalApplication - Application ${appToRun} uses syncthing and it is already spawned on Fluxnode with same ip range`); await serviceHelper.delay(30 * 60 * 1000); trySpawningGlobalApplication(); return; } + if (!appFromAppsToBeCheckedLater && !appFromAppsSyncthingToBeCheckedLater && runningAppList.length < 6) { + // check if there are connectivity to all nodes + // eslint-disable-next-line no-restricted-syntax + for (const node of runningAppList) { + const ip = node.ip.split(':')[0]; + const port = node.ip.split(':')[1] || 16127; + // eslint-disable-next-line no-await-in-loop + const isOpen = await fluxNetworkHelper.isPortOpen(ip, port); + if (!isOpen) { + log.info(`trySpawningGlobalApplication - Application ${appToRun} uses syncthing and instance running on ${ip}:${port} is not reachable, possible conenctivity issue, will be installed in 30m if remaining missing instances`); + const appToCheck = { + timeToCheck: Date.now() + 0.45 * 60 * 60 * 1000, + appName: appToRun, + required: minInstances, + }; + appsSyncthingToBeCheckedLater.push(appToCheck); + // eslint-disable-next-line no-await-in-loop + await serviceHelper.delay(30 * 60 * 1000); + trySpawningGlobalAppCache.delete(appToRun); + trySpawningGlobalApplication(); + return; + } + } + } } // ToDo: Move this to global @@ -9314,6 +9385,7 @@ async function trySpawningGlobalApplication() { if (!appFromAppsToBeCheckedLater && appToRunAux.nodes.length === 0) { const tier = await generalService.nodeTier(); const appHWrequirements = totalAppHWRequirements(appSpecifications, tier); + let delay = false; if (tier === 'bamf' && appHWrequirements.cpu < 3 && appHWrequirements.ram < 6000 && appHWrequirements.hdd < 150) { const appToCheck = { timeToCheck: Date.now() + 1.95 * 60 * 60 * 1000, @@ -9323,6 +9395,7 @@ async function trySpawningGlobalApplication() { log.info(`trySpawningGlobalApplication - App ${appToRun} specs are from cumulus, will check in around 2h if instances are still missing`); appsToBeCheckedLater.push(appToCheck); trySpawningGlobalAppCache.delete(appToRun); + delay = true; } else if (tier === 'bamf' && appHWrequirements.cpu < 7 && appHWrequirements.ram < 29000 && appHWrequirements.hdd < 370) { const appToCheck = { timeToCheck: Date.now() + 1.45 * 60 * 60 * 1000, @@ -9332,6 +9405,7 @@ async function trySpawningGlobalApplication() { log.info(`trySpawningGlobalApplication - App ${appToRun} specs are from nimbus, will check in around 1h30 if instances are still missing`); appsToBeCheckedLater.push(appToCheck); trySpawningGlobalAppCache.delete(appToRun); + delay = true; } else if (tier === 'super' && appHWrequirements.cpu < 3 && appHWrequirements.ram < 6000 && appHWrequirements.hdd < 150) { const appToCheck = { timeToCheck: Date.now() + 0.95 * 60 * 60 * 1000, @@ -9341,6 +9415,12 @@ async function trySpawningGlobalApplication() { log.info(`trySpawningGlobalApplication - App ${appToRun} specs are from cumulus, will check in around 1h if instances are still missing`); appsToBeCheckedLater.push(appToCheck); trySpawningGlobalAppCache.delete(appToRun); + delay = true; + } + if (delay) { + await serviceHelper.delay(30 * 60 * 1000); + trySpawningGlobalApplication(); + return; } } @@ -9408,6 +9488,7 @@ async function trySpawningGlobalApplication() { /** * To check and notify peers of running apps. Checks if apps are installed, stopped or running. */ +let checkAndNotifyPeersOfRunningAppsFirstRun = true; async function checkAndNotifyPeersOfRunningApps() { try { let isNodeConfirmed = false; @@ -9555,6 +9636,7 @@ async function checkAndNotifyPeersOfRunningApps() { ip: myIP, broadcastedAt: Date.now(), runningSince: runningOnMyNodeSince, + osUptime: os.uptime(), }; const app = { name: application.name, @@ -9584,6 +9666,7 @@ async function checkAndNotifyPeersOfRunningApps() { apps, ip: myIP, broadcastedAt: Date.now(), + osUptime: os.uptime(), }; // eslint-disable-next-line no-await-in-loop await fluxCommunicationMessagesSender.broadcastMessageToOutgoing(newAppRunningMessageV2); @@ -9593,6 +9676,28 @@ async function checkAndNotifyPeersOfRunningApps() { await fluxCommunicationMessagesSender.broadcastMessageToIncoming(newAppRunningMessageV2); // broadcast messages about running apps to all peers log.info(`App Running Message broadcasted ${JSON.stringify(newAppRunningMessageV2)}`); + } else if (installedAndRunning.length === 0 && checkAndNotifyPeersOfRunningAppsFirstRun) { + checkAndNotifyPeersOfRunningAppsFirstRun = false; + // we will broadcast a message that we are not running any app + // if multitoolbox option to reinstall fluxos or fix mongodb is executed all apps are removed from the node, once the node starts and it's confirmed + // should broadcast to the network what is running or not + // the nodes who receive the message will only rebroadcast if they had information about a app running on this node + const newAppRunningMessageV2 = { + type: 'fluxapprunning', + version: 2, + apps, + ip: myIP, + broadcastedAt: Date.now(), + osUptime: os.uptime(), + }; + // eslint-disable-next-line no-await-in-loop + await fluxCommunicationMessagesSender.broadcastMessageToOutgoing(newAppRunningMessageV2); + // eslint-disable-next-line no-await-in-loop + await serviceHelper.delay(500); + // eslint-disable-next-line no-await-in-loop + await fluxCommunicationMessagesSender.broadcastMessageToIncoming(newAppRunningMessageV2); + // broadcast messages about running apps to all peers + log.info(`No Apps Running Message broadcasted ${JSON.stringify(newAppRunningMessageV2)}`); } } catch (err) { log.error(err); @@ -11581,17 +11686,16 @@ async function syncthingApps() { // eslint-disable-next-line no-await-in-loop const folderError = await syncthingService.getFolderIdErrors(folder.id); if (folderError && folderError.status === 'success' && folderError.data.errors && folderError.data.errors.length > 0) { - log.error(`Errors detected on syncthing folderId:${folder.id} - folder index database is going to be reseted`); + log.error(`Errors detected on syncthing folderId:${folder.id} - app is going to be uninstalled`); log.error(folderError); - folder.paused = true; - // eslint-disable-next-line no-await-in-loop - await syncthingService.adjustConfigFolders('put', folder, folder.id); // systemResetFolder id requires the folder to be paused before execution + let appName = folder.id; + if (appName.contains('_')) { + appName = appName.split('_')[1]; + } // eslint-disable-next-line no-await-in-loop - const folderReset = await syncthingService.systemResetFolderId(folder.id); - log.error(folderReset); - folder.paused = false; + await removeAppLocally(appName, null, true, false, true); // eslint-disable-next-line no-await-in-loop - await syncthingService.adjustConfigFolders('put', folder, folder.id); + await serviceHelper.delay(5 * 1000); } } // check if restart is needed diff --git a/ZelBack/src/services/daemonService/daemonServiceTransactionRpcs.js b/ZelBack/src/services/daemonService/daemonServiceTransactionRpcs.js index 3cc264f39..c33a7d7ec 100644 --- a/ZelBack/src/services/daemonService/daemonServiceTransactionRpcs.js +++ b/ZelBack/src/services/daemonService/daemonServiceTransactionRpcs.js @@ -2,6 +2,7 @@ const serviceHelper = require('../serviceHelper'); const messageHelper = require('../messageHelper'); const daemonServiceUtils = require('./daemonServiceUtils'); const verificationHelper = require('../verificationHelper'); +const daemonServiceBlockchainRpcs = require('./daemonServiceBlockchainRpcs'); let response = messageHelper.createErrorMessage(); @@ -20,7 +21,7 @@ async function createRawTransaction(req, res) { addresses = addresses || req.query.addresses; let { locktime } = req.params; locktime = locktime || req.query.locktime || 0; - const blockcount = await daemonServiceUtils.getFluxdClient().getBlockCount().catch((error) => { + const blockcount = await daemonServiceBlockchainRpcs.getBlockCount().catch((error) => { response = messageHelper.createErrorMessage(error.message, error.name, error.code); }); if (!blockcount) { @@ -63,7 +64,7 @@ async function createRawTransactionPost(req, res) { let { addresses } = processedBody; let { locktime } = processedBody; locktime = locktime || 0; - const blockcount = await daemonServiceUtils.getFluxdClient().getBlockCount().catch((error) => { + const blockcount = await daemonServiceBlockchainRpcs.getBlockCount().catch((error) => { response = messageHelper.createErrorMessage(error.message, error.name, error.code); }); if (!blockcount) { diff --git a/ZelBack/src/services/explorerService.js b/ZelBack/src/services/explorerService.js index 606cf5c72..c37b09fa1 100644 --- a/ZelBack/src/services/explorerService.js +++ b/ZelBack/src/services/explorerService.js @@ -687,8 +687,6 @@ async function initiateBlockProcessor(restoreDatabase, deepRestore, reindexOrRes if (blockDifference < minBlockheightDifference) { await appsService.reindexGlobalAppsInformation(); } - } else { - await appsService.reindexGlobalAppsInformation(); } } const syncStatus = daemonServiceMiscRpcs.isDaemonSynced(); diff --git a/ZelBack/src/services/geolocationService.js b/ZelBack/src/services/geolocationService.js index 086303b33..03ca4c4cb 100644 --- a/ZelBack/src/services/geolocationService.js +++ b/ZelBack/src/services/geolocationService.js @@ -25,7 +25,7 @@ async function setNodeGeolocation() { log.info(`Checking geolocation of ${myIP}`); storedIp = myIP; // consider another service failover or stats db - const ipApiUrl = `http://ip-api.com/json/${myIP.split(':')[0]}?fields=status,continent,continentCode,country,countryCode,region,regionName,lat,lon,query,org,isp`; + const ipApiUrl = `http://ip-api.com/json/${myIP.split(':')[0]}?fields=status,continent,continentCode,country,countryCode,region,regionName,lat,lon,query,org,isp,proxy,hosting`; const ipRes = await serviceHelper.axiosGet(ipApiUrl); if (ipRes.data.status === 'success' && ipRes.data.query !== '') { storedGeolocation = { @@ -39,6 +39,7 @@ async function setNodeGeolocation() { lat: ipRes.data.lat, lon: ipRes.data.lon, org: ipRes.data.org || ipRes.data.isp, + static: ipRes.data.proxy || ipRes.data.hosting, }; } else { const statsApiUrl = `https://stats.runonflux.io/fluxlocation/${myIP.split(':')[0]}`; @@ -55,6 +56,7 @@ async function setNodeGeolocation() { lat: statsRes.data.data.lat, lon: statsRes.data.data.lon, org: statsRes.data.data.org, + static: statsRes.data.data.static, }; } else { throw new Error(`Geolocation of IP ${myIP} is unavailable`); @@ -62,11 +64,15 @@ async function setNodeGeolocation() { } } log.info(`Geolocation of ${myIP} is ${JSON.stringify(storedGeolocation)}`); - for (let i = 0; i < staticIpOrgs.length; i += 1) { - const org = staticIpOrgs[i]; - if (storedGeolocation.org.toLowerCase().includes(org)) { - staticIp = true; - break; + if (storedGeolocation.static) { + staticIp = true; + } else { + for (let i = 0; i < staticIpOrgs.length; i += 1) { + const org = staticIpOrgs[i]; + if (storedGeolocation.org.toLowerCase().includes(org)) { + staticIp = true; + break; + } } } execution += 1; diff --git a/package.json b/package.json index 600fcb9a1..b6d59d7a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flux", - "version": "5.37.0", + "version": "5.38.0", "description": "Flux, Your Gateway to a Decentralized World", "repository": { "type": "git",