diff --git a/src/app/pages/execute-system-test/execute-system-test.page.html b/src/app/pages/execute-system-test/execute-system-test.page.html index 24ddb08..642090f 100644 --- a/src/app/pages/execute-system-test/execute-system-test.page.html +++ b/src/app/pages/execute-system-test/execute-system-test.page.html @@ -1,11 +1,41 @@ - - - execute_system_test - - + - + - + + + + + {{systemTest.title}} + +
+ + {{systemTest.description}} + +
+ + @for (step of systemTest["steps"] ; track systemTest.title){ + + +

{{step.stepTitle}}

+

{{step.expectedResults}}

+
+ @if (step.isComplete){ + + + } + @if (!step.isComplete){ + + + } +
+ } +
+
+ Save +
+
+
+
diff --git a/src/app/pages/execute-system-test/execute-system-test.page.ts b/src/app/pages/execute-system-test/execute-system-test.page.ts index 95d3270..f2529a2 100644 --- a/src/app/pages/execute-system-test/execute-system-test.page.ts +++ b/src/app/pages/execute-system-test/execute-system-test.page.ts @@ -1,4 +1,9 @@ import { Component, OnInit } from '@angular/core'; +import {ActivatedRoute} from "@angular/router"; +import {SystemTest} from "../../interfaces/system-test"; +import {User} from "../../interfaces/user"; +import {SystemTestService} from "../../services/system-test.service"; +import {LoadingController} from "@ionic/angular"; @Component({ selector: 'app-execute-system-test', @@ -7,9 +12,109 @@ import { Component, OnInit } from '@angular/core'; }) export class ExecuteSystemTestPage implements OnInit { - constructor() { } + productObjective: string = ''; + productStep: string = ''; + testTitle: string = ''; + + systemTest:SystemTest = { + title: '', + description: '', + steps: [], + type: 'system-test', + state: false + } + + orgName: string = ''; + + constructor( + private activatedRoute: ActivatedRoute, + private systemTestService: SystemTestService, + private loadingCtrl: LoadingController + ) { } ngOnInit() { + this.getProductFromParams(); + this.getSystemTest(); + } + + ionViewWillEnter() { + this.getProductFromParams(); + this.getSystemTest(); + } + + /** + * This method gets the product and step from URL parameters. + */ + getProductFromParams() { + // Get product from URL params + this.activatedRoute.params.subscribe(params => { + this.productObjective = params['productObjective']; + this.productStep = params['step']; + this.testTitle = params['testTitle']; + }); + console.log(this.productObjective); + console.log(this.productStep); + console.log(this.testTitle); + } + + async getSystemTest() { + // Get User from local storage + const userString = localStorage.getItem('user'); + if (!userString) return + + const user: User = JSON.parse(userString); + this.orgName = user.orgName!; + + // Get system test from database + await this.systemTestService.getSystemTest(this.orgName, this.productObjective, this.productStep).then(r => { + this.systemTest = r.find((systemTest: { title: string; }) => systemTest.title === this.testTitle)!; + }); + } + + okClick(stepTitle: string) { + //Change the step state to true + this.systemTest.steps.find((step: { stepTitle: string; }) => step.stepTitle === stepTitle)!.isComplete = true; + console.log(this.systemTest); + } + + badClick(stepTitle: string) { + //Change the step state to false + this.systemTest.steps.find((step: { stepTitle: string; }) => step.stepTitle === stepTitle)!.isComplete = false; + console.log(this.systemTest); + } + + async save() { + await this.showLoading() + //check if all steps are complete + let isComplete = true; + this.systemTest.steps.forEach(step => { + if (!step.isComplete) { + isComplete = false; + } + }); + this.systemTest.state = isComplete + + // Save the system test + await this.systemTestService.saveSystemTest(this.orgName, this.productObjective, this.productStep, this.systemTest); + + await this.hideLoading() + + } + + /** + * Show a loading spinner. + */ + async showLoading() { + const loading = await this.loadingCtrl.create({ + }); + await loading.present(); + } + + /** + * Hide the loading spinner. + */ + async hideLoading() { + await this.loadingCtrl.dismiss(); } } diff --git a/src/app/pages/software-testing-chooser/software-testing-chooser.module.ts b/src/app/pages/software-testing-chooser/software-testing-chooser.module.ts index f1ae496..db45691 100644 --- a/src/app/pages/software-testing-chooser/software-testing-chooser.module.ts +++ b/src/app/pages/software-testing-chooser/software-testing-chooser.module.ts @@ -8,6 +8,8 @@ import { SoftwareTestingChooserPageRoutingModule } from './software-testing-choo import { SoftwareTestingChooserPage } from './software-testing-chooser.page'; import {ComponentsModule} from "../../components/components.module"; +import {NgxEchartsDirective} from "ngx-echarts"; +import {GraphPageRoutingModule} from "../graph-latency/graph-latency-routing.module"; @NgModule({ imports: [ @@ -15,7 +17,8 @@ import {ComponentsModule} from "../../components/components.module"; FormsModule, IonicModule, SoftwareTestingChooserPageRoutingModule, - ComponentsModule + ComponentsModule, + NgxEchartsDirective, ], declarations: [SoftwareTestingChooserPage] }) diff --git a/src/app/pages/software-testing-chooser/software-testing-chooser.page.html b/src/app/pages/software-testing-chooser/software-testing-chooser.page.html index 970ee63..e16e736 100644 --- a/src/app/pages/software-testing-chooser/software-testing-chooser.page.html +++ b/src/app/pages/software-testing-chooser/software-testing-chooser.page.html @@ -47,12 +47,59 @@

Choose a type of test.

- + + + + + +

Created tests for product step: {{productStep}}

+
+
+ + + +

Created tests for product step: {{productStep}}

+
+
+ -

Created tests for product step: {{productStep}}

+

System tests results for product step: {{productStep}}

+ + + + + Passed Tests + + +

{{passed}}

+
+
+
+ + + + Failed Tests + + +

{{ failed }}

+
+
+
+
+ + + + +
+
+
+
+
+
+ @@ -60,10 +107,14 @@

Choose a type of test.

{{ test.title }} - Execute Test + View Test Results + Execute Test + Delete Test
+ + diff --git a/src/app/pages/software-testing-chooser/software-testing-chooser.page.ts b/src/app/pages/software-testing-chooser/software-testing-chooser.page.ts index 385da51..8676a9f 100644 --- a/src/app/pages/software-testing-chooser/software-testing-chooser.page.ts +++ b/src/app/pages/software-testing-chooser/software-testing-chooser.page.ts @@ -4,6 +4,8 @@ import {Product} from "../../interfaces/product"; import {SystemTestService} from "../../services/system-test.service"; import {SystemTest} from "../../interfaces/system-test"; import {User} from "../../interfaces/user"; +import {LoadingController} from "@ionic/angular"; +import {EChartsOption} from "echarts"; @Component({ selector: 'app-software-testing-chooser', @@ -17,19 +19,54 @@ export class SoftwareTestingChooserPage implements OnInit { private user: User = {}; private orgName: string = ''; + passed: number = 0; + failed: number = 0; + + systemTestsChart: EChartsOption = { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['Passed', 'Failed'], + left: 'left' + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: [] // This will be populated with execution dates + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: 'Passed', + type: 'line', + data: [] // This will be populated with the number of passed tests + }, + { + name: 'Failed', + type: 'line', + data: [] // This will be populated with the number of failed tests + } + ] +}; + constructor( private activatedRoute: ActivatedRoute, private router: Router, - private systemTestService: SystemTestService + private systemTestService: SystemTestService, + private loadingCtrl: LoadingController ) { } ngOnInit() { } - ionViewWillEnter() { + async ionViewWillEnter() { this.getProductFromParams(); - this.getSystemTests(); - + await this.getSystemTests(); + await this.calculatePassed(); + await this.calculateGraphData(); } /** @@ -53,7 +90,8 @@ export class SoftwareTestingChooserPage implements OnInit { }]); } - getSystemTests() { + async getSystemTests() { + await this.showLoading() // Get User from local storage const userString = localStorage.getItem('user'); if (!userString) return; @@ -66,6 +104,8 @@ export class SoftwareTestingChooserPage implements OnInit { this.systemTestService.getSystemTest(this.orgName, this.productObjective, this.productStep).then(r => { this.systemTests = r; }); + + await this.hideLoading(); } @@ -73,4 +113,132 @@ export class SoftwareTestingChooserPage implements OnInit { this.getSystemTests(); $event.target.complete(); } + + navigateToExecuteTest(testTitle:string) { + this.router.navigate(['/execute-system-test', { + productObjective: this.productObjective, + step: this.productStep, + testTitle: testTitle + }]); + } + + async calculatePassed() { + await this.showLoading(); + + this.passed = 0; + this.failed = 0; + await this.systemTestService.getSystemTestHistoryByStep(this.orgName, this.productObjective, this.productStep).then(r => { + r.forEach((test: { state: boolean; }) => { + if (test.state) { + this.passed++; + } + else { + this.failed++; + } + }); + }); + + await this.hideLoading(); + } + + /** + * Show a loading spinner. + */ + async showLoading() { + const loading = await this.loadingCtrl.create({ + }); + await loading.present(); + } + + /** + * Hide the loading spinner. + */ + async hideLoading() { + await this.loadingCtrl.dismiss(); + } + + + async deleteTest(title: string) { + let systemTest = this.systemTests.find((systemTest: { title: string; }) => systemTest.title === title); + if (!systemTest) return; + await this.systemTestService.deleteSystemTest(this.orgName, this.productObjective, this.productStep,systemTest).then(async () => { + await this.getSystemTests(); + }); + await this.calculatePassed(); + await this.calculateGraphData(); + } + + + async calculateGraphData() { + await this.showLoading(); + // Get the system test history + await this.systemTestService.getSystemTestHistory(this.orgName, this.productObjective).then(r => { + // Filter the data to only include the system tests for the specified product step + const filteredData = Object.keys(r) + .filter(key => r[key].productStep === this.productStep) + .map(key => ({ timestamp: key, systemTest: r[key].systemTest })); + + // Sort the data by timestamp + // @ts-ignore + for (let i = 0; i < filteredData.length; i++) { + for (let j = 0; j < filteredData.length - 1; j++) { + if (new Date(filteredData[j].timestamp).getTime() > new Date(filteredData[j + 1].timestamp).getTime()) { + let temp = filteredData[j]; + filteredData[j] = filteredData[j + 1]; + filteredData[j + 1] = temp; + } + } + } + + // count the number of passed and failed tests for each date + let data = [ + ] + + for (let test of filteredData) { + let date = new Date(test.timestamp).toLocaleDateString(); + let passed = test.systemTest.state ? 1 : 0; + let failed = test.systemTest.state ? 0 : 1; + + let index = data.findIndex((d: { date: string; }) => d.date === date); + if (index === -1) { + data.push({ date, passed, failed }); + } + else { + data[index].passed += passed; + data[index].failed += failed; + } + } + + console.log(data); + + // Populate the chart data + this.systemTestsChart.xAxis = { + type: 'category', + boundaryGap: false, + data: data.map((d: { date: string; }) => d.date) + }; + this.systemTestsChart.series = [ + { + name: 'Passed', + type: 'line', + data: data.map((d: { passed: number; }) => d.passed) + }, + { + name: 'Failed', + type: 'line', + data: data.map((d: { failed: number; }) => d.failed) + } + ]; + + console.log(this.systemTestsChart.xAxis.data); + console.log(this.systemTestsChart.series[0].data); // Passed data + console.log(this.systemTestsChart.series[1].data); // Failed data + + this.systemTestsChart = { ...this.systemTestsChart }; + + + }); + await this.hideLoading(); + } + } diff --git a/src/app/services/system-test.service.ts b/src/app/services/system-test.service.ts index c04d132..e151e22 100644 --- a/src/app/services/system-test.service.ts +++ b/src/app/services/system-test.service.ts @@ -46,7 +46,74 @@ export class SystemTestService { } + async saveSystemTest(orgName: string, productObjective: string, productStep: string, systemTest: SystemTest) { + const docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'system_tests_history'); + // Get current date and time + const now = new Date(); + const timestamp = `${now.getDate()}/${now.getMonth()}/${now.getFullYear()} ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`; + const docSnap = await getDoc(docRef); + if (!docSnap.exists()) { + await setDoc(docRef, { [timestamp]: {systemTest, productStep} }); + } else { + let data = docSnap.data(); + data[timestamp] = {systemTest}; + data[timestamp].productStep = productStep; + await setDoc(docRef, data); + } + } + + async getSystemTestHistoryByStep(orgName: string, productObjective: string, productStep: string) { + const docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'system_tests_history'); + const docSnap = await getDoc(docRef); + if (docSnap.exists()) { + const data = docSnap.data(); + + // Filter the data to only include the system tests for the specified product step + const filteredData = Object.keys(data).filter(key => data[key].productStep === productStep).map(key => data[key].systemTest); + + return filteredData; + } + return []; + } + + async getSystemTestHistory(orgName: string, productObjective: string) { + const docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'system_tests_history'); + const docSnap = await getDoc(docRef); + if (docSnap.exists()) { + const data = docSnap.data(); + return data; + } + return {}; + } + + async deleteSystemTest(orgName: string, productObjective: string, productStep: string, systemTest: SystemTest) { + // Delete the system test from the system_tests collection + let docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'system_tests'); + let docSnap = await getDoc(docRef); + if (docSnap.exists()) { + let data = docSnap.data(); + let arr = data[productStep]; + let index = arr.indexOf(systemTest); + arr.splice(index, 1); + await setDoc(docRef, {[productStep]: arr}); + } + + // Delete the system test from the system_tests_history collection + docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'system_tests_history'); + docSnap = await getDoc(docRef); + if (docSnap.exists()) { + let data = docSnap.data(); + for (let key in data) { + console.log(data[key].systemTest.title); + if (data[key].systemTest.title === systemTest.title) { + delete data[key]; + } + } + await setDoc(docRef, data); + } + + } } diff --git a/www/1062.27a6fbe77a434259.js b/www/1062.27a6fbe77a434259.js deleted file mode 100644 index 64b22e4..0000000 --- a/www/1062.27a6fbe77a434259.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[1062],{5553:(E,c,n)=>{n.d(c,{h:()=>l});var r=n(177),d=n(7863),s=n(4438);let l=(()=>{var e;class m{}return(e=m).\u0275fac=function(i){return new(i||e)},e.\u0275mod=s.$C({type:e}),e.\u0275inj=s.G2t({imports:[r.MD,d.bv]}),m})()},1062:(E,c,n)=>{n.r(c),n.d(c,{ExecuteSystemTestPageModule:()=>P});var r=n(177),d=n(4341),s=n(7863),l=n(7650),e=n(4438),m=n(8453);const i=[{path:"",component:(()=>{var t;class o{constructor(){}ngOnInit(){}}return(t=o).\u0275fac=function(u){return new(u||t)},t.\u0275cmp=e.VBU({type:t,selectors:[["app-execute-system-test"]],decls:7,vars:3,consts:[[3,"translucent"],[3,"fullscreen"],[3,"title"]],template:function(u,T){1&u&&(e.j41(0,"ion-header",0)(1,"ion-toolbar")(2,"ion-title"),e.EFF(3,"execute_system_test"),e.k0s()()(),e.j41(4,"ion-content",1)(5,"ion-row"),e.nrm(6,"app-title",2),e.k0s()()),2&u&&(e.Y8G("translucent",!0),e.R7$(4),e.Y8G("fullscreen",!0),e.R7$(2),e.Y8G("title","Execute System Test"))},dependencies:[s.W9,s.eU,s.ln,s.BC,s.ai,m.W]}),o})()}];let g=(()=>{var t;class o{}return(t=o).\u0275fac=function(u){return new(u||t)},t.\u0275mod=e.$C({type:t}),t.\u0275inj=e.G2t({imports:[l.iI.forChild(i),l.iI]}),o})();var M=n(5553);let P=(()=>{var t;class o{}return(t=o).\u0275fac=function(u){return new(u||t)},t.\u0275mod=e.$C({type:t}),t.\u0275inj=e.G2t({imports:[r.MD,d.YN,s.bv,g,M.h]}),o})()}}]); \ No newline at end of file diff --git a/www/1062.8645b76ab9c621ba.js b/www/1062.8645b76ab9c621ba.js new file mode 100644 index 0000000..a83e473 --- /dev/null +++ b/www/1062.8645b76ab9c621ba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[1062],{5553:(y,p,i)=>{i.d(p,{h:()=>d});var c=i(177),T=i(7863),o=i(4438);let d=(()=>{var l;class e{}return(l=e).\u0275fac=function(m){return new(m||l)},l.\u0275mod=o.$C({type:l}),l.\u0275inj=o.G2t({imports:[c.MD,T.bv]}),e})()},3241:(y,p,i)=>{i.d(p,{p:()=>d});var c=i(4438),T=i(177),o=i(7863);let d=(()=>{var l;class e{constructor(m){this.location=m,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(l=e).\u0275fac=function(m){return new(m||l)(c.rXU(T.aZ))},l.\u0275cmp=c.VBU({type:l,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(m,g){1&m&&(c.j41(0,"ion-header",0)(1,"ion-toolbar"),c.nrm(2,"ion-menu-button",1),c.j41(3,"ion-icon",2),c.bIt("click",function(){return g.goBack()}),c.k0s(),c.j41(4,"ion-title"),c.EFF(5),c.k0s()()()),2&m&&(c.Y8G("translucent",!0),c.R7$(5),c.JRh(g.title))},dependencies:[o.eU,o.iq,o.MC,o.BC,o.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),e})()},1062:(y,p,i)=>{i.r(p),i.d(p,{ExecuteSystemTestPageModule:()=>x});var c=i(177),T=i(4341),o=i(7863),d=i(7650),l=i(467),e=i(4438),_=i(9274),m=i(8453),g=i(3241);function h(s,u){return this.systemTest.title}function f(s,u){if(1&s){const r=e.RV6();e.j41(0,"ion-icon",9),e.bIt("click",function(){e.eBV(r);const n=e.XpG().$implicit,a=e.XpG();return e.Njj(a.okClick(n.stepTitle))}),e.k0s(),e.j41(1,"ion-icon",10),e.bIt("click",function(){e.eBV(r);const n=e.XpG().$implicit,a=e.XpG();return e.Njj(a.badClick(n.stepTitle))}),e.k0s()}}function E(s,u){if(1&s){const r=e.RV6();e.j41(0,"ion-icon",11),e.bIt("click",function(){e.eBV(r);const n=e.XpG().$implicit,a=e.XpG();return e.Njj(a.okClick(n.stepTitle))}),e.k0s(),e.j41(1,"ion-icon",12),e.bIt("click",function(){e.eBV(r);const n=e.XpG().$implicit,a=e.XpG();return e.Njj(a.badClick(n.stepTitle))}),e.k0s()}}function v(s,u){if(1&s&&(e.j41(0,"ion-item")(1,"ion-label")(2,"h1"),e.EFF(3),e.k0s(),e.j41(4,"p"),e.EFF(5),e.k0s()(),e.DNE(6,f,2,0)(7,E,2,0),e.k0s()),2&s){const r=u.$implicit;e.R7$(3),e.JRh(r.stepTitle),e.R7$(2),e.JRh(r.expectedResults),e.R7$(),e.vxM(6,r.isComplete?6:-1),e.R7$(),e.vxM(7,r.isComplete?-1:7)}}const C=[{path:"",component:(()=>{var s;class u{constructor(t,n,a){this.activatedRoute=t,this.systemTestService=n,this.loadingCtrl=a,this.productObjective="",this.productStep="",this.testTitle="",this.systemTest={title:"",description:"",steps:[],type:"system-test",state:!1},this.orgName=""}ngOnInit(){this.getProductFromParams(),this.getSystemTest()}ionViewWillEnter(){this.getProductFromParams(),this.getSystemTest()}getProductFromParams(){this.activatedRoute.params.subscribe(t=>{this.productObjective=t.productObjective,this.productStep=t.step,this.testTitle=t.testTitle}),console.log(this.productObjective),console.log(this.productStep),console.log(this.testTitle)}getSystemTest(){var t=this;return(0,l.A)(function*(){const n=localStorage.getItem("user");if(!n)return;const a=JSON.parse(n);t.orgName=a.orgName,yield t.systemTestService.getSystemTest(t.orgName,t.productObjective,t.productStep).then(k=>{t.systemTest=k.find(R=>R.title===t.testTitle)})})()}okClick(t){this.systemTest.steps.find(n=>n.stepTitle===t).isComplete=!0,console.log(this.systemTest)}badClick(t){this.systemTest.steps.find(n=>n.stepTitle===t).isComplete=!1,console.log(this.systemTest)}save(){var t=this;return(0,l.A)(function*(){yield t.showLoading();let n=!0;t.systemTest.steps.forEach(a=>{a.isComplete||(n=!1)}),t.systemTest.state=n,yield t.systemTestService.saveSystemTest(t.orgName,t.productObjective,t.productStep,t.systemTest),yield t.hideLoading()})()}showLoading(){var t=this;return(0,l.A)(function*(){yield(yield t.loadingCtrl.create({})).present()})()}hideLoading(){var t=this;return(0,l.A)(function*(){yield t.loadingCtrl.dismiss()})()}}return(s=u).\u0275fac=function(t){return new(t||s)(e.rXU(d.nX),e.rXU(_.h),e.rXU(o.Xi))},s.\u0275cmp=e.VBU({type:s,selectors:[["app-execute-system-test"]],decls:21,vars:5,consts:[[3,"title"],[3,"fullscreen"],[1,"lg:m-10","md:m-10"],["size","12","size-md","12","size-lg","12",1,""],[1,"min-h-full","flex","flex-col","p-8"],[1,"p-2"],[1,"text-4xl","text-white","font-bold"],[1,"text-xl"],["color","primary","expand","block","fill","outline",3,"click"],["aria-hidden","true","name","checkmark-circle","slot","end","color","success",3,"click"],["aria-hidden","true","name","close-circle","slot","end",3,"click"],["aria-hidden","true","name","checkmark-circle","slot","end",3,"click"],["aria-hidden","true","name","close-circle","slot","end","color","danger",3,"click"]],template:function(t,n){1&t&&(e.nrm(0,"app-header-return",0),e.j41(1,"ion-content",1)(2,"ion-grid"),e.nrm(3,"app-title",0),e.j41(4,"ion-row",2)(5,"ion-col",3)(6,"ion-card",4)(7,"ion-card-title",5)(8,"ion-label",6),e.EFF(9),e.k0s()(),e.nrm(10,"br"),e.j41(11,"ion-card-title",5)(12,"ion-label",7),e.EFF(13),e.k0s()(),e.nrm(14,"br"),e.j41(15,"ion-list"),e.Z7z(16,v,8,4,"ion-item",null,h,!0),e.k0s(),e.nrm(18,"br"),e.j41(19,"ion-button",8),e.bIt("click",function(){return n.save()}),e.EFF(20,"Save"),e.k0s()()()()()()),2&t&&(e.Y8G("title","Execute System Test"),e.R7$(),e.Y8G("fullscreen",!0),e.R7$(2),e.Y8G("title","Execute System Test"),e.R7$(6),e.JRh(n.systemTest.title),e.R7$(4),e.JRh(n.systemTest.description),e.R7$(3),e.Dyx(n.systemTest.steps))},dependencies:[o.Jm,o.b_,o.tN,o.hU,o.W9,o.lO,o.iq,o.uz,o.he,o.nf,o.ln,m.W,g.p]}),u})()}];let P=(()=>{var s;class u{}return(s=u).\u0275fac=function(t){return new(t||s)},s.\u0275mod=e.$C({type:s}),s.\u0275inj=e.G2t({imports:[d.iI.forChild(C),d.iI]}),u})();var S=i(5553);let x=(()=>{var s;class u{}return(s=u).\u0275fac=function(t){return new(t||s)},s.\u0275mod=e.$C({type:s}),s.\u0275inj=e.G2t({imports:[c.MD,T.YN,o.bv,P,S.h]}),u})()}}]); \ No newline at end of file diff --git a/www/383.77457df574544b3d.js b/www/383.77457df574544b3d.js new file mode 100644 index 0000000..94fbeae --- /dev/null +++ b/www/383.77457df574544b3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[383],{5553:(F,f,n)=>{n.d(f,{h:()=>g});var l=n(177),T=n(7863),i=n(4438);let g=(()=>{var a;class e{}return(a=e).\u0275fac=function(p){return new(p||a)},a.\u0275mod=i.$C({type:a}),a.\u0275inj=i.G2t({imports:[l.MD,T.bv]}),e})()},3241:(F,f,n)=>{n.d(f,{p:()=>g});var l=n(4438),T=n(177),i=n(7863);let g=(()=>{var a;class e{constructor(p){this.location=p,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(a=e).\u0275fac=function(p){return new(p||a)(l.rXU(T.aZ))},a.\u0275cmp=l.VBU({type:a,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(p,C){1&p&&(l.j41(0,"ion-header",0)(1,"ion-toolbar"),l.nrm(2,"ion-menu-button",1),l.j41(3,"ion-icon",2),l.bIt("click",function(){return C.goBack()}),l.k0s(),l.j41(4,"ion-title"),l.EFF(5),l.k0s()()()),2&p&&(l.Y8G("translucent",!0),l.R7$(5),l.JRh(C.title))},dependencies:[i.eU,i.iq,i.MC,i.BC,i.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),e})()},383:(F,f,n)=>{n.r(f),n.d(f,{SoftwareTestingChooserPageModule:()=>b});var l=n(177),T=n(4341),i=n(7863),g=n(7650),a=n(467),e=n(4438),y=n(9274),p=n(8453),C=n(3241),_=n(2820);function E(r,h){if(1&r){const u=e.RV6();e.j41(0,"ion-col",19)(1,"ion-card")(2,"ion-card-header")(3,"ion-card-title"),e.EFF(4),e.k0s()(),e.j41(5,"ion-card-content")(6,"ion-button",20),e.bIt("click",function(){const s=e.eBV(u).$implicit,o=e.XpG();return e.Njj(o.navigateToExecuteTest(s.title))}),e.EFF(7,"View Test Results"),e.k0s(),e.j41(8,"ion-button",20),e.bIt("click",function(){const s=e.eBV(u).$implicit,o=e.XpG();return e.Njj(o.navigateToExecuteTest(s.title))}),e.EFF(9,"Execute Test"),e.k0s(),e.j41(10,"ion-button",21),e.bIt("click",function(){const s=e.eBV(u).$implicit,o=e.XpG();return e.Njj(o.deleteTest(s.title))}),e.EFF(11,"Delete Test"),e.k0s()()()()}if(2&r){const u=h.$implicit;e.R7$(4),e.JRh(u.title)}}const P=[{path:"",component:(()=>{var r;class h{constructor(t,s,o,d){this.activatedRoute=t,this.router=s,this.systemTestService=o,this.loadingCtrl=d,this.productStep="",this.systemTests=[],this.productObjective="",this.user={},this.orgName="",this.passed=0,this.failed=0,this.systemTestsChart={tooltip:{trigger:"axis"},legend:{data:["Passed","Failed"],left:"left"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[{name:"Passed",type:"line",data:[]},{name:"Failed",type:"line",data:[]}]}}ngOnInit(){}ionViewWillEnter(){var t=this;return(0,a.A)(function*(){t.getProductFromParams(),yield t.getSystemTests(),yield t.calculatePassed(),yield t.calculateGraphData()})()}getProductFromParams(){this.activatedRoute.params.subscribe(t=>{this.productObjective=t.productObjective,this.productStep=t.step}),console.log(this.productObjective),console.log(this.productStep)}navigateToCreateSystemTest(){this.router.navigate(["/create-system-test",{productObjective:this.productObjective,step:this.productStep}])}getSystemTests(){var t=this;return(0,a.A)(function*(){yield t.showLoading();const s=localStorage.getItem("user");s&&(t.user=JSON.parse(s),t.orgName=t.user.orgName,t.systemTestService.getSystemTest(t.orgName,t.productObjective,t.productStep).then(o=>{t.systemTests=o}),yield t.hideLoading())})()}doRefresh(t){this.getSystemTests(),t.target.complete()}navigateToExecuteTest(t){this.router.navigate(["/execute-system-test",{productObjective:this.productObjective,step:this.productStep,testTitle:t}])}calculatePassed(){var t=this;return(0,a.A)(function*(){yield t.showLoading(),t.passed=0,t.failed=0,yield t.systemTestService.getSystemTestHistoryByStep(t.orgName,t.productObjective,t.productStep).then(s=>{s.forEach(o=>{o.state?t.passed++:t.failed++})}),yield t.hideLoading()})()}showLoading(){var t=this;return(0,a.A)(function*(){yield(yield t.loadingCtrl.create({})).present()})()}hideLoading(){var t=this;return(0,a.A)(function*(){yield t.loadingCtrl.dismiss()})()}deleteTest(t){var s=this;return(0,a.A)(function*(){let o=s.systemTests.find(d=>d.title===t);o&&(yield s.systemTestService.deleteSystemTest(s.orgName,s.productObjective,s.productStep,o).then((0,a.A)(function*(){yield s.getSystemTests()})),yield s.calculatePassed(),yield s.calculateGraphData())})()}calculateGraphData(){var t=this;return(0,a.A)(function*(){yield t.showLoading(),yield t.systemTestService.getSystemTestHistory(t.orgName,t.productObjective).then(s=>{const o=Object.keys(s).filter(c=>s[c].productStep===t.productStep).map(c=>({timestamp:c,systemTest:s[c].systemTest}));for(let c=0;cnew Date(o[m+1].timestamp).getTime()){let v=o[m];o[m]=o[m+1],o[m+1]=v}let d=[];for(let c of o){let m=new Date(c.timestamp).toLocaleDateString(),v=c.systemTest.state?1:0,j=c.systemTest.state?0:1,S=d.findIndex(k=>k.date===m);-1===S?d.push({date:m,passed:v,failed:j}):(d[S].passed+=v,d[S].failed+=j)}console.log(d),t.systemTestsChart.xAxis={type:"category",boundaryGap:!1,data:d.map(c=>c.date)},t.systemTestsChart.series=[{name:"Passed",type:"line",data:d.map(c=>c.passed)},{name:"Failed",type:"line",data:d.map(c=>c.failed)}],console.log(t.systemTestsChart.xAxis.data),console.log(t.systemTestsChart.series[0].data),console.log(t.systemTestsChart.series[1].data),t.systemTestsChart={...t.systemTestsChart}}),yield t.hideLoading()})()}}return(r=h).\u0275fac=function(t){return new(t||r)(e.rXU(g.nX),e.rXU(g.Ix),e.rXU(y.h),e.rXU(i.Xi))},r.\u0275cmp=e.VBU({type:r,selectors:[["app-software-testing-chooser"]],decls:86,vars:13,consts:[[3,"title"],[3,"fullscreen"],["slot","fixed",3,"ionRefresh"],[1,"lg:m-10","md:m-10"],["size","12","size-md","4","size-lg","4",1,""],[1,"min-h-full","flex","flex-col","justify-between"],[1,"text-3xl","text-white"],[1,"text-white"],[1,"mt-auto"],["color","primary","expand","block","fill","outline"],["color","primary","expand","block","fill","outline",3,"click"],["size","6","size-md","6","size-lg","6",1,""],[1,"flex","flex-col","justify-center","items-center","text-green-600"],[1,"flex","flex-col","justify-center","items-center"],[1,"flex","flex-col","justify-center","items-center","text-red-800"],["size","12","size-md","12","size-lg","12",1,""],[1,"h-[25em]"],["echarts","",1,"demo-chart","h-full","w-full","p-4",3,"options"],["size","12","size-md","3","size-lg","3","class","",4,"ngFor","ngForOf"],["size","12","size-md","3","size-lg","3",1,""],["color","primary","expand","block",3,"click"],["color","danger","expand","block",3,"click"]],template:function(t,s){1&t&&(e.nrm(0,"app-header-return",0),e.j41(1,"ion-content",1)(2,"ion-refresher",2),e.bIt("ionRefresh",function(d){return s.doRefresh(d)}),e.nrm(3,"ion-refresher-content"),e.k0s(),e.j41(4,"ion-grid"),e.nrm(5,"app-title",0),e.j41(6,"ion-row",3)(7,"ion-col",4)(8,"H2"),e.EFF(9,"Choose a type of test."),e.k0s(),e.nrm(10,"p"),e.k0s()(),e.j41(11,"ion-row",3)(12,"ion-col",4)(13,"ion-card",5)(14,"ion-card-header")(15,"h1",6),e.EFF(16,"Unit Tests"),e.k0s()(),e.j41(17,"ion-card-content")(18,"p",7),e.EFF(19,"A unit test is the smallest and simplest form of software testing. These tests are employed to assess a separable unit of software, such as a class or function, for correctness independent of the larger software system that contains the unit. Unit tests are also employed as a form of specification to ensure that a function or module exactly performs the behavior required by the system. Unit tests are commonly used to introduce test-driven development concepts."),e.k0s()(),e.j41(20,"ion-card-content",8)(21,"ion-button",9),e.EFF(22,"Create Unit Test"),e.k0s()()()(),e.j41(23,"ion-col",4)(24,"ion-card",5)(25,"ion-card-header")(26,"h1",6),e.EFF(27,"Integration Tests"),e.k0s()(),e.j41(28,"ion-card-content")(29,"p",7),e.EFF(30,"Software components that pass individual unit tests are assembled into larger components. Engineers then run an integration test on an assembled component to verify that it functions correctly. Selenium, Playwright and Cypress are popular tools for integration testing."),e.k0s()(),e.j41(31,"ion-card-content",8)(32,"ion-button",9),e.EFF(33,"Create Integration Test"),e.k0s()()()(),e.j41(34,"ion-col",4)(35,"ion-card",5)(36,"ion-card-header")(37,"h1",6),e.EFF(38,"System Tests"),e.k0s()(),e.j41(39,"ion-card-content")(40,"p",7),e.EFF(41,"A system test is the largest scale test that engineers run for an undeployed system. All modules belonging to a specific component, such as a server that passed integration tests, are assembled into the system. Then the engineer tests the end-to-end functionality of the system."),e.k0s()(),e.j41(42,"ion-card-content",8)(43,"ion-button",10),e.bIt("click",function(){return s.navigateToCreateSystemTest()}),e.EFF(44,"Create System Test"),e.k0s()()()()()(),e.j41(45,"ion-grid"),e.nrm(46,"app-title",0),e.j41(47,"ion-row",3)(48,"ion-col",4)(49,"p"),e.EFF(50),e.k0s()()(),e.nrm(51,"app-title",0),e.j41(52,"ion-row",3)(53,"ion-col",4)(54,"p"),e.EFF(55),e.k0s()()(),e.nrm(56,"app-title",0),e.j41(57,"ion-row",3)(58,"ion-col",4)(59,"p"),e.EFF(60),e.k0s()()(),e.j41(61,"ion-row",3)(62,"ion-col",11)(63,"ion-card")(64,"ion-card-header")(65,"ion-card-title",12),e.EFF(66,"Passed Tests"),e.k0s()(),e.j41(67,"ion-card-content",13)(68,"h1"),e.EFF(69),e.k0s()()()(),e.j41(70,"ion-col",11)(71,"ion-card")(72,"ion-card-header")(73,"ion-card-title",14),e.EFF(74,"Failed Tests"),e.k0s()(),e.j41(75,"ion-card-content",13)(76,"h1"),e.EFF(77),e.k0s()()()()(),e.j41(78,"ion-row",3)(79,"ion-col",15)(80,"ion-card")(81,"ion-card-content",16),e.nrm(82,"div",17),e.k0s()()()()(),e.j41(83,"ion-grid")(84,"ion-row",3),e.DNE(85,E,12,1,"ion-col",18),e.k0s()()()),2&t&&(e.Y8G("title","Software Testing Chooser"),e.R7$(),e.Y8G("fullscreen",!0),e.R7$(4),e.Y8G("title","Software Testing Chooser"),e.R7$(41),e.Y8G("title","Unit Tests"),e.R7$(4),e.SpI("Created tests for product step: ",s.productStep,""),e.R7$(),e.Y8G("title","Integration Tests"),e.R7$(4),e.SpI("Created tests for product step: ",s.productStep,""),e.R7$(),e.Y8G("title","System Tests"),e.R7$(4),e.SpI("System tests results for product step: ",s.productStep,""),e.R7$(9),e.JRh(s.passed),e.R7$(8),e.JRh(s.failed),e.R7$(5),e.Y8G("options",s.systemTestsChart),e.R7$(3),e.Y8G("ngForOf",s.systemTests))},dependencies:[l.Sq,i.Jm,i.b_,i.I9,i.ME,i.tN,i.hU,i.W9,i.lO,i.To,i.Ki,i.ln,p.W,C.p,_.$P]}),h})()}];let R=(()=>{var r;class h{}return(r=h).\u0275fac=function(t){return new(t||r)},r.\u0275mod=e.$C({type:r}),r.\u0275inj=e.G2t({imports:[g.iI.forChild(P),g.iI]}),h})();var w=n(5553);let b=(()=>{var r;class h{}return(r=h).\u0275fac=function(t){return new(t||r)},r.\u0275mod=e.$C({type:r}),r.\u0275inj=e.G2t({imports:[l.MD,T.YN,i.bv,R,w.h]}),h})()}}]); \ No newline at end of file diff --git a/www/383.7ad6450a343fd310.js b/www/383.7ad6450a343fd310.js deleted file mode 100644 index 2e542f0..0000000 --- a/www/383.7ad6450a343fd310.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[383],{5553:(T,m,n)=>{n.d(m,{h:()=>c});var s=n(177),g=n(7863),t=n(4438);let c=(()=>{var e;class d{}return(e=d).\u0275fac=function(i){return new(i||e)},e.\u0275mod=t.$C({type:e}),e.\u0275inj=t.G2t({imports:[s.MD,g.bv]}),d})()},3241:(T,m,n)=>{n.d(m,{p:()=>c});var s=n(4438),g=n(177),t=n(7863);let c=(()=>{var e;class d{constructor(i){this.location=i,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(e=d).\u0275fac=function(i){return new(i||e)(s.rXU(g.aZ))},e.\u0275cmp=s.VBU({type:e,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(i,p){1&i&&(s.j41(0,"ion-header",0)(1,"ion-toolbar"),s.nrm(2,"ion-menu-button",1),s.j41(3,"ion-icon",2),s.bIt("click",function(){return p.goBack()}),s.k0s(),s.j41(4,"ion-title"),s.EFF(5),s.k0s()()()),2&i&&(s.Y8G("translucent",!0),s.R7$(5),s.JRh(p.title))},dependencies:[t.eU,t.iq,t.MC,t.BC,t.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),d})()},383:(T,m,n)=>{n.r(m),n.d(m,{SoftwareTestingChooserPageModule:()=>F});var s=n(177),g=n(4341),t=n(7863),c=n(7650),e=n(4438),d=n(9274),h=n(8453),i=n(3241);const p=()=>["/execute-system-test"];function C(o,a){if(1&o&&(e.j41(0,"ion-col",12)(1,"ion-card")(2,"ion-card-header")(3,"ion-card-title"),e.EFF(4),e.k0s()(),e.j41(5,"ion-card-content")(6,"ion-button",13),e.EFF(7,"Execute Test"),e.k0s()()()()),2&o){const l=a.$implicit;e.R7$(4),e.JRh(l.title),e.R7$(2),e.Y8G("routerLink",e.lJ4(2,p))}}const y=[{path:"",component:(()=>{var o;class a{constructor(r,u,f){this.activatedRoute=r,this.router=u,this.systemTestService=f,this.productStep="",this.systemTests=[],this.productObjective="",this.user={},this.orgName=""}ngOnInit(){}ionViewWillEnter(){this.getProductFromParams(),this.getSystemTests()}getProductFromParams(){this.activatedRoute.params.subscribe(r=>{this.productObjective=r.productObjective,this.productStep=r.step}),console.log(this.productObjective),console.log(this.productStep)}navigateToCreateSystemTest(){this.router.navigate(["/create-system-test",{productObjective:this.productObjective,step:this.productStep}])}getSystemTests(){const r=localStorage.getItem("user");r&&(this.user=JSON.parse(r),this.orgName=this.user.orgName,this.systemTestService.getSystemTest(this.orgName,this.productObjective,this.productStep).then(u=>{this.systemTests=u}))}doRefresh(r){this.getSystemTests(),r.target.complete()}}return(o=a).\u0275fac=function(r){return new(r||o)(e.rXU(c.nX),e.rXU(c.Ix),e.rXU(d.h))},o.\u0275cmp=e.VBU({type:o,selectors:[["app-software-testing-chooser"]],decls:52,vars:6,consts:[[3,"title"],[3,"fullscreen"],["slot","fixed",3,"ionRefresh"],[1,"lg:m-10","md:m-10"],["size","12","size-md","4","size-lg","4",1,""],[1,"min-h-full","flex","flex-col","justify-between"],[1,"text-3xl","text-white"],[1,"text-white"],[1,"mt-auto"],["color","primary","expand","block","fill","outline"],["color","primary","expand","block","fill","outline",3,"click"],["size","12","size-md","3","size-lg","3","class","",4,"ngFor","ngForOf"],["size","12","size-md","3","size-lg","3",1,""],["color","primary","expand","block",3,"routerLink"]],template:function(r,u){1&r&&(e.nrm(0,"app-header-return",0),e.j41(1,"ion-content",1)(2,"ion-refresher",2),e.bIt("ionRefresh",function(E){return u.doRefresh(E)}),e.nrm(3,"ion-refresher-content"),e.k0s(),e.j41(4,"ion-grid"),e.nrm(5,"app-title",0),e.j41(6,"ion-row",3)(7,"ion-col",4)(8,"H2"),e.EFF(9,"Choose a type of test."),e.k0s(),e.nrm(10,"p"),e.k0s()(),e.j41(11,"ion-row",3)(12,"ion-col",4)(13,"ion-card",5)(14,"ion-card-header")(15,"h1",6),e.EFF(16,"Unit Tests"),e.k0s()(),e.j41(17,"ion-card-content")(18,"p",7),e.EFF(19,"A unit test is the smallest and simplest form of software testing. These tests are employed to assess a separable unit of software, such as a class or function, for correctness independent of the larger software system that contains the unit. Unit tests are also employed as a form of specification to ensure that a function or module exactly performs the behavior required by the system. Unit tests are commonly used to introduce test-driven development concepts."),e.k0s()(),e.j41(20,"ion-card-content",8)(21,"ion-button",9),e.EFF(22,"Create Unit Test"),e.k0s()()()(),e.j41(23,"ion-col",4)(24,"ion-card",5)(25,"ion-card-header")(26,"h1",6),e.EFF(27,"Integration Tests"),e.k0s()(),e.j41(28,"ion-card-content")(29,"p",7),e.EFF(30,"Software components that pass individual unit tests are assembled into larger components. Engineers then run an integration test on an assembled component to verify that it functions correctly. Selenium, Playwright and Cypress are popular tools for integration testing."),e.k0s()(),e.j41(31,"ion-card-content",8)(32,"ion-button",9),e.EFF(33,"Create Integration Test"),e.k0s()()()(),e.j41(34,"ion-col",4)(35,"ion-card",5)(36,"ion-card-header")(37,"h1",6),e.EFF(38,"System Tests"),e.k0s()(),e.j41(39,"ion-card-content")(40,"p",7),e.EFF(41,"A system test is the largest scale test that engineers run for an undeployed system. All modules belonging to a specific component, such as a server that passed integration tests, are assembled into the system. Then the engineer tests the end-to-end functionality of the system."),e.k0s()(),e.j41(42,"ion-card-content",8)(43,"ion-button",10),e.bIt("click",function(){return u.navigateToCreateSystemTest()}),e.EFF(44,"Create System Test"),e.k0s()()()()(),e.nrm(45,"app-title",0),e.j41(46,"ion-row",3)(47,"ion-col",4)(48,"p"),e.EFF(49),e.k0s()()(),e.j41(50,"ion-row",3),e.DNE(51,C,8,3,"ion-col",11),e.k0s()()()),2&r&&(e.Y8G("title","Software Testing Chooser"),e.R7$(),e.Y8G("fullscreen",!0),e.R7$(4),e.Y8G("title","Software Testing Chooser"),e.R7$(40),e.Y8G("title","Created Tests"),e.R7$(4),e.SpI("Created tests for product step: ",u.productStep,""),e.R7$(2),e.Y8G("ngForOf",u.systemTests))},dependencies:[s.Sq,t.Jm,t.b_,t.I9,t.ME,t.tN,t.hU,t.W9,t.lO,t.To,t.Ki,t.ln,t.N7,c.Wk,h.W,i.p]}),a})()}];let v=(()=>{var o;class a{}return(o=a).\u0275fac=function(r){return new(r||o)},o.\u0275mod=e.$C({type:o}),o.\u0275inj=e.G2t({imports:[c.iI.forChild(y),c.iI]}),a})();var S=n(5553);let F=(()=>{var o;class a{}return(o=a).\u0275fac=function(r){return new(r||o)},o.\u0275mod=e.$C({type:o}),o.\u0275inj=e.G2t({imports:[s.MD,g.YN,t.bv,v,S.h]}),a})()}}]); \ No newline at end of file diff --git a/www/common.57508ee7b7985fb1.js b/www/common.57508ee7b7985fb1.js new file mode 100644 index 0000000..373b446 --- /dev/null +++ b/www/common.57508ee7b7985fb1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[2076],{1263:(w,p,l)=>{l.d(p,{c:()=>_});var m=l(9672),a=l(1086),u=l(8607);const _=(c,i)=>{let s,o;const e=(r,d,f)=>{if(typeof document>"u")return;const v=document.elementFromPoint(r,d);v&&i(v)&&!v.disabled?v!==s&&(t(),n(v,f)):t()},n=(r,d)=>{s=r,o||(o=s);const f=s;(0,m.w)(()=>f.classList.add("ion-activated")),d()},t=(r=!1)=>{if(!s)return;const d=s;(0,m.w)(()=>d.classList.remove("ion-activated")),r&&o!==s&&s.click(),s=void 0};return(0,u.createGesture)({el:c,gestureName:"buttonActiveDrag",threshold:0,onStart:r=>e(r.currentX,r.currentY,a.a),onMove:r=>e(r.currentX,r.currentY,a.b),onEnd:()=>{t(!0),(0,a.h)(),o=void 0}})}},8438:(w,p,l)=>{l.d(p,{g:()=>a});var m=l(8476);const a=()=>{if(void 0!==m.w)return m.w.Capacitor}},5572:(w,p,l)=>{l.d(p,{c:()=>m,i:()=>a});const m=(u,_,c)=>"function"==typeof c?c(u,_):"string"==typeof c?u[c]===_[c]:Array.isArray(_)?_.includes(u):u===_,a=(u,_,c)=>void 0!==u&&(Array.isArray(u)?u.some(i=>m(i,_,c)):m(u,_,c))},3351:(w,p,l)=>{l.d(p,{g:()=>m});const m=(i,s,o,e,n)=>u(i[1],s[1],o[1],e[1],n).map(t=>a(i[0],s[0],o[0],e[0],t)),a=(i,s,o,e,n)=>n*(3*s*Math.pow(n-1,2)+n*(-3*o*n+3*o+e*n))-i*Math.pow(n-1,3),u=(i,s,o,e,n)=>c((e-=n)-3*(o-=n)+3*(s-=n)-(i-=n),3*o-6*s+3*i,3*s-3*i,i).filter(r=>r>=0&&r<=1),c=(i,s,o,e)=>{if(0===i)return((i,s,o)=>{const e=s*s-4*i*o;return e<0?[]:[(-s+Math.sqrt(e))/(2*i),(-s-Math.sqrt(e))/(2*i)]})(s,o,e);const n=(3*(o/=i)-(s/=i)*s)/3,t=(2*s*s*s-9*s*o+27*(e/=i))/27;if(0===n)return[Math.pow(-t,1/3)];if(0===t)return[Math.sqrt(-n),-Math.sqrt(-n)];const r=Math.pow(t/2,2)+Math.pow(n/3,3);if(0===r)return[Math.pow(t/2,.5)-s/3];if(r>0)return[Math.pow(-t/2+Math.sqrt(r),1/3)-Math.pow(t/2+Math.sqrt(r),1/3)-s/3];const d=Math.sqrt(Math.pow(-n/3,3)),f=Math.acos(-t/(2*Math.sqrt(Math.pow(-n/3,3)))),v=2*Math.pow(d,1/3);return[v*Math.cos(f/3)-s/3,v*Math.cos((f+2*Math.PI)/3)-s/3,v*Math.cos((f+4*Math.PI)/3)-s/3]}},5083:(w,p,l)=>{l.d(p,{i:()=>m});const m=a=>a&&""!==a.dir?"rtl"===a.dir.toLowerCase():"rtl"===(null==document?void 0:document.dir.toLowerCase())},3126:(w,p,l)=>{l.r(p),l.d(p,{startFocusVisible:()=>_});const m="ion-focused",u=["Tab","ArrowDown","Space","Escape"," ","Shift","Enter","ArrowLeft","ArrowRight","ArrowUp","Home","End"],_=c=>{let i=[],s=!0;const o=c?c.shadowRoot:document,e=c||document.body,n=g=>{i.forEach(h=>h.classList.remove(m)),g.forEach(h=>h.classList.add(m)),i=g},t=()=>{s=!1,n([])},r=g=>{s=u.includes(g.key),s||n([])},d=g=>{if(s&&void 0!==g.composedPath){const h=g.composedPath().filter(y=>!!y.classList&&y.classList.contains("ion-focusable"));n(h)}},f=()=>{o.activeElement===e&&n([])};return o.addEventListener("keydown",r),o.addEventListener("focusin",d),o.addEventListener("focusout",f),o.addEventListener("touchstart",t,{passive:!0}),o.addEventListener("mousedown",t),{destroy:()=>{o.removeEventListener("keydown",r),o.removeEventListener("focusin",d),o.removeEventListener("focusout",f),o.removeEventListener("touchstart",t),o.removeEventListener("mousedown",t)},setFocus:n}}},1086:(w,p,l)=>{l.d(p,{I:()=>a,a:()=>s,b:()=>o,c:()=>i,d:()=>n,h:()=>e});var m=l(8438),a=function(t){return t.Heavy="HEAVY",t.Medium="MEDIUM",t.Light="LIGHT",t}(a||{});const _={getEngine(){const t=(0,m.g)();if(null!=t&&t.isPluginAvailable("Haptics"))return t.Plugins.Haptics},available(){if(!this.getEngine())return!1;const r=(0,m.g)();return"web"!==(null==r?void 0:r.getPlatform())||typeof navigator<"u"&&void 0!==navigator.vibrate},impact(t){const r=this.getEngine();r&&r.impact({style:t.style})},notification(t){const r=this.getEngine();r&&r.notification({type:t.type})},selection(){this.impact({style:a.Light})},selectionStart(){const t=this.getEngine();t&&t.selectionStart()},selectionChanged(){const t=this.getEngine();t&&t.selectionChanged()},selectionEnd(){const t=this.getEngine();t&&t.selectionEnd()}},c=()=>_.available(),i=()=>{c()&&_.selection()},s=()=>{c()&&_.selectionStart()},o=()=>{c()&&_.selectionChanged()},e=()=>{c()&&_.selectionEnd()},n=t=>{c()&&_.impact(t)}},909:(w,p,l)=>{l.d(p,{I:()=>i,a:()=>n,b:()=>c,c:()=>d,d:()=>v,f:()=>t,g:()=>e,i:()=>o,p:()=>f,r:()=>g,s:()=>r});var m=l(467),a=l(4920),u=l(4929);const c="ion-content",i=".ion-content-scroll-host",s=`${c}, ${i}`,o=h=>"ION-CONTENT"===h.tagName,e=function(){var h=(0,m.A)(function*(y){return o(y)?(yield new Promise(D=>(0,a.c)(y,D)),y.getScrollElement()):y});return function(D){return h.apply(this,arguments)}}(),n=h=>h.querySelector(i)||h.querySelector(s),t=h=>h.closest(s),r=(h,y)=>o(h)?h.scrollToTop(y):Promise.resolve(h.scrollTo({top:0,left:0,behavior:y>0?"smooth":"auto"})),d=(h,y,D,M)=>o(h)?h.scrollByPoint(y,D,M):Promise.resolve(h.scrollBy({top:D,left:y,behavior:M>0?"smooth":"auto"})),f=h=>(0,u.b)(h,c),v=h=>{if(o(h)){const D=h.scrollY;return h.scrollY=!1,D}return h.style.setProperty("overflow","hidden"),!0},g=(h,y)=>{o(h)?h.scrollY=y:h.style.removeProperty("overflow")}},3992:(w,p,l)=>{l.d(p,{a:()=>m,b:()=>d,c:()=>s,d:()=>f,e:()=>A,f:()=>i,g:()=>v,h:()=>u,i:()=>a,j:()=>E,k:()=>P,l:()=>o,m:()=>t,n:()=>g,o:()=>n,p:()=>c,q:()=>_,r:()=>O,s:()=>L,t:()=>r,u:()=>D,v:()=>M,w:()=>e,x:()=>h,y:()=>y});const m="data:image/svg+xml;utf8,",a="data:image/svg+xml;utf8,",u="data:image/svg+xml;utf8,",_="data:image/svg+xml;utf8,",c="data:image/svg+xml;utf8,",i="data:image/svg+xml;utf8,",s="data:image/svg+xml;utf8,",o="data:image/svg+xml;utf8,",e="data:image/svg+xml;utf8,",n="data:image/svg+xml;utf8,",t="data:image/svg+xml;utf8,",r="data:image/svg+xml;utf8,",d="data:image/svg+xml;utf8,",f="data:image/svg+xml;utf8,",v="data:image/svg+xml;utf8,",g="data:image/svg+xml;utf8,",h="data:image/svg+xml;utf8,",y="data:image/svg+xml;utf8,",D="data:image/svg+xml;utf8,",M="data:image/svg+xml;utf8,",O="data:image/svg+xml;utf8,",E="data:image/svg+xml;utf8,",P="data:image/svg+xml;utf8,",L="data:image/svg+xml;utf8,",A="data:image/svg+xml;utf8,"},243:(w,p,l)=>{l.d(p,{c:()=>_,g:()=>c});var m=l(8476),a=l(4920),u=l(4929);const _=(s,o,e)=>{let n,t;if(void 0!==m.w&&"MutationObserver"in m.w){const v=Array.isArray(o)?o:[o];n=new MutationObserver(g=>{for(const h of g)for(const y of h.addedNodes)if(y.nodeType===Node.ELEMENT_NODE&&v.includes(y.slot))return e(),void(0,a.r)(()=>r(y))}),n.observe(s,{childList:!0,subtree:!0})}const r=v=>{var g;t&&(t.disconnect(),t=void 0),t=new MutationObserver(h=>{e();for(const y of h)for(const D of y.removedNodes)D.nodeType===Node.ELEMENT_NODE&&D.slot===o&&f()}),t.observe(null!==(g=v.parentElement)&&void 0!==g?g:v,{subtree:!0,childList:!0})},f=()=>{t&&(t.disconnect(),t=void 0)};return{destroy:()=>{n&&(n.disconnect(),n=void 0),f()}}},c=(s,o,e)=>{const n=null==s?0:s.toString().length,t=i(n,o);if(void 0===e)return t;try{return e(n,o)}catch(r){return(0,u.a)("Exception in provided `counterFormatter`.",r),t}},i=(s,o)=>`${s} / ${o}`},1622:(w,p,l)=>{l.r(p),l.d(p,{KEYBOARD_DID_CLOSE:()=>c,KEYBOARD_DID_OPEN:()=>_,copyVisualViewport:()=>O,keyboardDidClose:()=>h,keyboardDidOpen:()=>v,keyboardDidResize:()=>g,resetKeyboardAssist:()=>n,setKeyboardClose:()=>f,setKeyboardOpen:()=>d,startKeyboardAssist:()=>t,trackViewportChanges:()=>M});var m=l(4379);l(8438),l(8476);const _="ionKeyboardDidShow",c="ionKeyboardDidHide";let s={},o={},e=!1;const n=()=>{s={},o={},e=!1},t=E=>{if(m.K.getEngine())r(E);else{if(!E.visualViewport)return;o=O(E.visualViewport),E.visualViewport.onresize=()=>{M(E),v()||g(E)?d(E):h(E)&&f(E)}}},r=E=>{E.addEventListener("keyboardDidShow",P=>d(E,P)),E.addEventListener("keyboardDidHide",()=>f(E))},d=(E,P)=>{y(E,P),e=!0},f=E=>{D(E),e=!1},v=()=>!e&&s.width===o.width&&(s.height-o.height)*o.scale>150,g=E=>e&&!h(E),h=E=>e&&o.height===E.innerHeight,y=(E,P)=>{const A=new CustomEvent(_,{detail:{keyboardHeight:P?P.keyboardHeight:E.innerHeight-o.height}});E.dispatchEvent(A)},D=E=>{const P=new CustomEvent(c);E.dispatchEvent(P)},M=E=>{s=Object.assign({},o),o=O(E.visualViewport)},O=E=>({width:Math.round(E.width),height:Math.round(E.height),offsetTop:E.offsetTop,offsetLeft:E.offsetLeft,pageTop:E.pageTop,pageLeft:E.pageLeft,scale:E.scale})},4379:(w,p,l)=>{l.d(p,{K:()=>_,a:()=>u});var m=l(8438),a=function(c){return c.Unimplemented="UNIMPLEMENTED",c.Unavailable="UNAVAILABLE",c}(a||{}),u=function(c){return c.Body="body",c.Ionic="ionic",c.Native="native",c.None="none",c}(u||{});const _={getEngine(){const c=(0,m.g)();if(null!=c&&c.isPluginAvailable("Keyboard"))return c.Plugins.Keyboard},getResizeMode(){const c=this.getEngine();return null!=c&&c.getResizeMode?c.getResizeMode().catch(i=>{if(i.code!==a.Unimplemented)throw i}):Promise.resolve(void 0)}}},4731:(w,p,l)=>{l.d(p,{c:()=>i});var m=l(467),a=l(8476),u=l(4379);const _=s=>{if(void 0===a.d||s===u.a.None||void 0===s)return null;const o=a.d.querySelector("ion-app");return null!=o?o:a.d.body},c=s=>{const o=_(s);return null===o?0:o.clientHeight},i=function(){var s=(0,m.A)(function*(o){let e,n,t,r;const d=function(){var y=(0,m.A)(function*(){const D=yield u.K.getResizeMode(),M=void 0===D?void 0:D.mode;e=()=>{void 0===r&&(r=c(M)),t=!0,f(t,M)},n=()=>{t=!1,f(t,M)},null==a.w||a.w.addEventListener("keyboardWillShow",e),null==a.w||a.w.addEventListener("keyboardWillHide",n)});return function(){return y.apply(this,arguments)}}(),f=(y,D)=>{o&&o(y,v(D))},v=y=>{if(0===r||r===c(y))return;const D=_(y);return null!==D?new Promise(M=>{const E=new ResizeObserver(()=>{D.clientHeight===r&&(E.disconnect(),M())});E.observe(D)}):void 0};return yield d(),{init:d,destroy:()=>{null==a.w||a.w.removeEventListener("keyboardWillShow",e),null==a.w||a.w.removeEventListener("keyboardWillHide",n),e=n=void 0},isKeyboardVisible:()=>t}});return function(e){return s.apply(this,arguments)}}()},7838:(w,p,l)=>{l.d(p,{c:()=>a});var m=l(467);const a=()=>{let u;return{lock:function(){var c=(0,m.A)(function*(){const i=u;let s;return u=new Promise(o=>s=o),void 0!==i&&(yield i),s});return function(){return c.apply(this,arguments)}}()}}},9001:(w,p,l)=>{l.d(p,{c:()=>u});var m=l(8476),a=l(4920);const u=(_,c,i)=>{let s;const o=()=>!(void 0===c()||void 0!==_.label||null===i()),n=()=>{const r=c();if(void 0===r)return;if(!o())return void r.style.removeProperty("width");const d=i().scrollWidth;if(0===d&&null===r.offsetParent&&void 0!==m.w&&"IntersectionObserver"in m.w){if(void 0!==s)return;const f=s=new IntersectionObserver(v=>{1===v[0].intersectionRatio&&(n(),f.disconnect(),s=void 0)},{threshold:.01,root:_});f.observe(r)}else r.style.setProperty("width",.75*d+"px")};return{calculateNotchWidth:()=>{o()&&(0,a.r)(()=>{n()})},destroy:()=>{s&&(s.disconnect(),s=void 0)}}}},7895:(w,p,l)=>{l.d(p,{S:()=>a});const a={bubbles:{dur:1e3,circles:9,fn:(u,_,c)=>{const i=u*_/c-u+"ms",s=2*Math.PI*_/c;return{r:5,style:{top:32*Math.sin(s)+"%",left:32*Math.cos(s)+"%","animation-delay":i}}}},circles:{dur:1e3,circles:8,fn:(u,_,c)=>{const i=_/c,s=u*i-u+"ms",o=2*Math.PI*i;return{r:5,style:{top:32*Math.sin(o)+"%",left:32*Math.cos(o)+"%","animation-delay":s}}}},circular:{dur:1400,elmDuration:!0,circles:1,fn:()=>({r:20,cx:48,cy:48,fill:"none",viewBox:"24 24 48 48",transform:"translate(0,0)",style:{}})},crescent:{dur:750,circles:1,fn:()=>({r:26,style:{}})},dots:{dur:750,circles:3,fn:(u,_)=>({r:6,style:{left:32-32*_+"%","animation-delay":-110*_+"ms"}})},lines:{dur:1e3,lines:8,fn:(u,_,c)=>({y1:14,y2:26,style:{transform:`rotate(${360/c*_+(_({y1:12,y2:20,style:{transform:`rotate(${360/c*_+(_({y1:17,y2:29,style:{transform:`rotate(${30*_+(_<6?180:-180)}deg)`,"animation-delay":u*_/c-u+"ms"}})},"lines-sharp-small":{dur:1e3,lines:12,fn:(u,_,c)=>({y1:12,y2:20,style:{transform:`rotate(${30*_+(_<6?180:-180)}deg)`,"animation-delay":u*_/c-u+"ms"}})}}},7166:(w,p,l)=>{l.r(p),l.d(p,{createSwipeBackGesture:()=>c});var m=l(4920),a=l(5083),u=l(8607);l(1970);const c=(i,s,o,e,n)=>{const t=i.ownerDocument.defaultView;let r=(0,a.i)(i);const f=D=>r?-D.deltaX:D.deltaX;return(0,u.createGesture)({el:i,gestureName:"goback-swipe",gesturePriority:101,threshold:10,canStart:D=>(r=(0,a.i)(i),(D=>{const{startX:O}=D;return r?O>=t.innerWidth-50:O<=50})(D)&&s()),onStart:o,onMove:D=>{const O=f(D)/t.innerWidth;e(O)},onEnd:D=>{const M=f(D),O=t.innerWidth,E=M/O,P=(D=>r?-D.velocityX:D.velocityX)(D),A=P>=0&&(P>.2||M>O/2),T=(A?1-E:E)*O;let C=0;if(T>5){const R=T/Math.abs(P);C=Math.min(R,540)}n(A,E<=0?.01:(0,m.j)(0,E,.9999),C)}})}},2935:(w,p,l)=>{l.d(p,{w:()=>m});const m=(_,c,i)=>{if(typeof MutationObserver>"u")return;const s=new MutationObserver(o=>{i(a(o,c))});return s.observe(_,{childList:!0,subtree:!0}),s},a=(_,c)=>{let i;return _.forEach(s=>{for(let o=0;o{if(1!==_.nodeType)return;const i=_;return(i.tagName===c.toUpperCase()?[i]:Array.from(i.querySelectorAll(c))).find(o=>o.value===i.value)}},385:(w,p,l)=>{l.d(p,{l:()=>u});var m=l(4438),a=l(7863);let u=(()=>{var _;class c{constructor(){this.title="Header Title"}ngOnInit(){}}return(_=c).\u0275fac=function(s){return new(s||_)},_.\u0275cmp=m.VBU({type:_,selectors:[["app-header"]],inputs:{title:"title"},decls:5,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"]],template:function(s,o){1&s&&(m.j41(0,"ion-header",0)(1,"ion-toolbar"),m.nrm(2,"ion-menu-button",1),m.j41(3,"ion-title"),m.EFF(4),m.k0s()()()),2&s&&(m.Y8G("translucent",!0),m.R7$(4),m.JRh(o.title))},dependencies:[a.eU,a.MC,a.BC,a.ai]}),c})()},8453:(w,p,l)=>{l.d(p,{W:()=>u});var m=l(4438),a=l(7863);let u=(()=>{var _;class c{constructor(){this.title="Title"}ngOnInit(){}}return(_=c).\u0275fac=function(s){return new(s||_)},_.\u0275cmp=m.VBU({type:_,selectors:[["app-title"]],inputs:{title:"title"},decls:4,vars:1,consts:[[1,"lg:m-10"],["size","12","size-md","6","size-lg","6"],[1,"text-4xl","lg:text-6xl","font-bold"]],template:function(s,o){1&s&&(m.j41(0,"ion-row",0)(1,"ion-col",1)(2,"h1",2),m.EFF(3),m.k0s()()()),2&s&&(m.R7$(3),m.JRh(o.title))},dependencies:[a.hU,a.ln]}),c})()},4796:(w,p,l)=>{l.d(p,{u:()=>c});var m=l(467),a=l(8737),u=l(4262),_=l(4438);let c=(()=>{var i;class s{constructor(e,n){this.auth=e,this.firestore=n}registerUser(e){var n=this;return(0,m.A)(function*(){try{const t=yield(0,a.eJ)(n.auth,e.email,e.password);return t.user?(yield(0,u.BN)((0,u.H9)(n.firestore,"users",t.user.uid),{email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid}),yield(0,u.BN)((0,u.H9)(n.firestore,"teams",`${e.orgName}`),{name:e.orgName,members:[t.user.uid]}),t):null}catch{return null}})()}loginUser(e){var n=this;return(0,m.A)(function*(){try{var t;const r=yield(0,a.x9)(n.auth,e.email,e.password);if(null!==(t=r.user)&&void 0!==t&&t.uid){const d=yield(0,u.x7)((0,u.H9)(n.firestore,"users",r.user.uid));if(d.exists())return localStorage.setItem("user",JSON.stringify(d.data())),r}}catch(r){console.error(r)}return null})()}logoutUser(){var e=this;return(0,m.A)(function*(){yield e.auth.signOut()})()}addMember(e){var n=this;return(0,m.A)(function*(){try{const t=yield(0,a.eJ)(n.auth,e.email,e.password);if(!t.user)return!1;const r={email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid};return yield(0,u.BN)((0,u.H9)(n.firestore,"users",t.user.uid),r),r}catch{return!1}})()}}return(i=s).\u0275fac=function(e){return new(e||i)(_.KVO(a.Nj),_.KVO(u._7))},i.\u0275prov=_.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},6560:(w,p,l)=>{l.d(p,{x:()=>c});var m=l(467),a=l(4262),u=l(4438),_=l(1626);let c=(()=>{var i;class s{constructor(e,n){this.firestore=e,this.http=n,this.url_cpu="https://devprobeapi.onrender.com/flame_graph_date",this.url_mem="https://devprobeapi.onrender.com/flame_graph_memory_date"}getProducts(e){var n=this;return(0,m.A)(function*(){try{const t=(0,a.rJ)(n.firestore,"teams",e,"products");return(yield(0,a.GG)(t)).docs.map(d=>d.data())}catch(t){return console.log(t),[]}})()}getDates(e,n,t){var r=this;return(0,m.A)(function*(){try{t||(t="cpu_usage");const d=(0,a.rJ)(r.firestore,"teams",e,"products",n,t);return(yield(0,a.GG)(d)).docs.map(v=>v.id)}catch(d){return console.log(d),[]}})()}getFlameGraphByDate(e,n,t,r){var d=this;return(0,m.A)(function*(){try{let f={team:e,product:n,date:t};return r?yield d.http.post(d.url_mem,f).toPromise():yield d.http.post(d.url_cpu,f).toPromise()}catch{return{}}})()}}return(i=s).\u0275fac=function(e){return new(e||i)(u.KVO(a._7),u.KVO(_.Qq))},i.\u0275prov=u.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},3661:(w,p,l)=>{l.d(p,{e:()=>c});var m=l(467),a=l(4438),u=l(4262),_=l(1626);let c=(()=>{var i;class s{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocationDestSrc(e){var n=this;return(0,m.A)(function*(){var t,r,d,f,v,g,h,y;if(!e)return e;const D=n.http.get(n.ipApiURL+e.dst_addr).toPromise(),M=n.http.get(n.ipApiURL+e.src_addr).toPromise(),O=yield D,E=yield M;return e.dst_city=null!==(t=O.city)&&void 0!==t?t:"No city found",e.dst_country=null!==(r=O.country)&&void 0!==r?r:"No country found",e.dst_latitude=null!==(d=O.lat)&&void 0!==d?d:0,e.dst_longitude=null!==(f=O.lon)&&void 0!==f?f:0,e.src_city=null!==(v=E.city)&&void 0!==v?v:"No city found",e.src_country=null!==(g=E.country)&&void 0!==g?g:"No country found",e.src_latitude=null!==(h=E.lat)&&void 0!==h?h:0,e.src_longitude=null!==(y=E.lon)&&void 0!==y?y:0,e})()}getLocationFrom(e){var n=this;return(0,m.A)(function*(){if(!e)return e;let t=e.result;for(let g=0;g{l.d(p,{N:()=>c});var m=l(467),a=l(4262),u=l(4438),_=l(1626);let c=(()=>{var i;class s{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocation(e){var n=this;return(0,m.A)(function*(){console.log(e);const r=yield n.http.get(n.ipApiURL+e[0].dst_addr).toPromise();for(let v=0;vn.http.get(n.ipApiURL+v.from).toPromise());return(yield Promise.all(d)).forEach((v,g)=>{e[g].fromLatitude=v.lat,e[g].fromLongitude=v.lon,e[g].cityFrom=v.city,e[g].countryFrom=v.country}),console.log(e),e})()}saveLocationResults(e,n,t,r){var d=this;return(0,m.A)(function*(){try{console.log(r,"ripeData");const f=(0,a.rJ)(d.firestore,"teams",e,"products",n,"ripe"),v=(0,a.H9)(f,t),g=r.map(h=>({from:h.from,dst_addr:h.dst_addr,latency:h.latency,cityFrom:h.cityFrom,countryFrom:h.countryFrom,cityTo:h.cityTo,countryTo:h.countryTo,fromLatitude:h.fromLatitude,fromLongitude:h.fromLongitude,toLatitude:h.toLatitude,toLongitude:h.toLongitude,id:h.id}));return yield(0,a.BN)(v,{data:g}),console.log("Data saved",{data:g}),!0}catch(f){return console.log(f),!1}})()}}return(i=s).\u0275fac=function(e){return new(e||i)(u.KVO(a._7),u.KVO(_.Qq))},i.\u0275prov=u.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},6241:(w,p,l)=>{l.d(p,{b:()=>_});var m=l(467),a=l(4262),u=l(4438);let _=(()=>{var c;class i{constructor(o){this.firestore=o}addProduct(o,e){var n=this;return(0,m.A)(function*(){try{console.log(o);const t=(0,a.H9)(n.firestore,"teams",e,"products",o.productObjective);return yield(0,a.BN)(t,o),!0}catch(t){return console.log(t),!1}})()}getProducts(o){var e=this;return(0,m.A)(function*(){try{const n=(0,a.rJ)(e.firestore,"teams",o,"products");return(yield(0,a.GG)(n)).docs.map(r=>r.data())}catch(n){return console.log(n),[]}})()}removeProduct(o,e){var n=this;return(0,m.A)(function*(){try{const t=(0,a.H9)(n.firestore,"teams",o,"products",e);return yield(0,a.kd)(t),!0}catch(t){return console.log(t),!1}})()}}return(c=i).\u0275fac=function(o){return new(o||c)(u.KVO(a._7))},c.\u0275prov=u.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},2588:(w,p,l)=>{l.d(p,{N:()=>c});var m=l(467),a=l(4262),u=l(4438),_=l(1626);let c=(()=>{var i;class s{constructor(e,n){this.http=e,this.firestore=n,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendTraceRequest(e,n,t,r){var d=this;return(0,m.A)(function*(){console.log("Sending trace request");try{let f={definitions:[{target:e,description:n,type:t,af:4,is_oneoff:!0,protocol:"TCP"}],probes:[]};console.log(r);let v=r.split(",").length-1,g=(r=r.slice(0,-1)).split(","),h=[];for(let M=0;M({id:d.measurementID,dst_addr:h.dst_addr,dst_city:h.dst_city,dst_country:h.dst_country,dst_latitude:h.dst_latitude,dst_longitude:h.dst_longitude,src_addr:h.src_addr,src_city:h.src_city,src_country:h.src_country,src_latitude:h.src_latitude,src_longitude:h.src_longitude,result:h.result}));return yield(0,a.BN)(v,{data:g}),!0}catch(f){return console.log(f),!1}})()}getHistoryResults(e,n){var t=this;return(0,m.A)(function*(){const d=(0,a.rJ)(t.firestore,"teams/"+e+"/products/"+n+"/ripe_trace"),f=yield(0,a.GG)(d);let v=[];return f.docs.forEach(g=>{v.push({id:g.id,data:g.data()})}),console.log(v),v})()}getAllResultsByDescription(e,n,t){var r=this;return(0,m.A)(function*(){try{let d="teams/"+e+"/products/"+n+"/ripe_trace";console.log(d);let f=(0,a.H9)(r.firestore,d,t);return(yield(0,a.x7)(f)).data()}catch(d){return console.log(d),[]}})()}}return(i=s).\u0275fac=function(e){return new(e||i)(u.KVO(_.Qq),u.KVO(a._7))},i.\u0275prov=u.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},9640:(w,p,l)=>{l.d(p,{Q:()=>i});var m=l(467),a=l(1985),u=l(4262),_=l(4438),c=l(1626);let i=(()=>{var s;class o{constructor(n,t){this.http=n,this.firestore=t,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendMeasurementRequest(n,t,r,d){var f=this;return(0,m.A)(function*(){let v=d.split(",").length-1;d=d.slice(0,-1);try{let g={definitions:[{target:n,description:"ping",type:"ping",af:4,is_oneoff:!0}],probes:[{requested:v,type:"probes",value:d}]},h={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};console.log(g);let y=yield f.http.post(f.measurementsUrl,g,{headers:h}).toPromise();return console.log(y),f.measurementID=y.measurements[0],f.measurementID}catch(g){return console.log(g),!1}})()}getMeasurementResults(n){var t=this;return(0,m.A)(function*(){n&&(t.measurementID=n);try{let r={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};return""===t.measurementID?(console.log("No measurement ID"),!1):t.http.get(t.measurementsUrl+t.measurementID+"/results/",{headers:r})}catch(r){return console.log(r),new a.c}})()}saveMeasurementResults(n,t,r,d){var f=this;return(0,m.A)(function*(){try{const v=(0,u.rJ)(f.firestore,"teams",n,"products",t,"ripe"),g=(0,u.H9)(v,r),h=d.map((y,D)=>({id:f.measurementID,from:y.from,dst_addr:y.dst_addr,latency:y.latency}));return yield(0,u.BN)(g,{data:h}),!0}catch(v){return console.log(v),!1}})()}getAllResultsByDescription(n,t,r){var d=this;return(0,m.A)(function*(){try{let f="teams/"+n+"/products/"+t+"/ripe";console.log(f);let v=(0,u.H9)(d.firestore,f,r);return(yield(0,u.x7)(v)).data()}catch(f){return console.log(f),[]}})()}getHistoryResults(n,t){var r=this;return(0,m.A)(function*(){const f=(0,u.rJ)(r.firestore,"teams/"+n+"/products/"+t+"/ripe"),v=yield(0,u.GG)(f);let g=[];return v.docs.forEach(h=>{g.push({id:h.id,data:h.data()})}),console.log(g),g})()}deleteHistory(n,t,r){var d=this;return(0,m.A)(function*(){const v=(0,u.H9)(d.firestore,"teams/"+n+"/products/"+t+"/ripe",r);try{return yield(0,u.kd)(v),!0}catch(g){return console.log(g),!1}})()}}return(s=o).\u0275fac=function(n){return new(n||s)(_.KVO(c.Qq),_.KVO(u._7))},s.\u0275prov=_.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),o})()},9274:(w,p,l)=>{l.d(p,{h:()=>_});var m=l(467),a=l(4262),u=l(4438);let _=(()=>{var c;class i{constructor(o){this.firestore=o}addSystemTest(o,e,n,t){var r=this;return(0,m.A)(function*(){const d=(0,a.H9)(r.firestore,"teams",o,"products",e,"software_testing","system_tests"),f=yield(0,a.x7)(d);if(f.exists()){const g=f.data()[n];console.log(g),g.push(t),yield(0,a.BN)(d,{[n]:g}),console.log("Document updated with ID: ",f.id)}else console.log("No such document!"),yield(0,a.BN)(d,{[n]:[t]}),console.log("Document created with ID: ",d.id)})()}getSystemTest(o,e,n){var t=this;return(0,m.A)(function*(){const r=(0,a.H9)(t.firestore,"teams",o,"products",e,"software_testing","system_tests"),d=yield(0,a.x7)(r);return d.exists()?d.data()[n]:[]})()}saveSystemTest(o,e,n,t){var r=this;return(0,m.A)(function*(){const d=(0,a.H9)(r.firestore,"teams",o,"products",e,"software_testing","system_tests_history"),f=new Date,v=`${f.getDate()}/${f.getMonth()}/${f.getFullYear()} ${f.getHours()}:${f.getMinutes()}:${f.getSeconds()}`,g=yield(0,a.x7)(d);if(g.exists()){let h=g.data();h[v]={systemTest:t},h[v].productStep=n,yield(0,a.BN)(d,h)}else yield(0,a.BN)(d,{[v]:{systemTest:t,productStep:n}})})()}getSystemTestHistoryByStep(o,e,n){var t=this;return(0,m.A)(function*(){const r=(0,a.H9)(t.firestore,"teams",o,"products",e,"software_testing","system_tests_history"),d=yield(0,a.x7)(r);if(d.exists()){const f=d.data();return Object.keys(f).filter(g=>f[g].productStep===n).map(g=>f[g].systemTest)}return[]})()}getSystemTestHistory(o,e){var n=this;return(0,m.A)(function*(){const t=(0,a.H9)(n.firestore,"teams",o,"products",e,"software_testing","system_tests_history"),r=yield(0,a.x7)(t);return r.exists()?r.data():{}})()}deleteSystemTest(o,e,n,t){var r=this;return(0,m.A)(function*(){let d=(0,a.H9)(r.firestore,"teams",o,"products",e,"software_testing","system_tests"),f=yield(0,a.x7)(d);if(f.exists()){let g=f.data()[n],h=g.indexOf(t);g.splice(h,1),yield(0,a.BN)(d,{[n]:g})}if(d=(0,a.H9)(r.firestore,"teams",o,"products",e,"software_testing","system_tests_history"),f=yield(0,a.x7)(d),f.exists()){let v=f.data();for(let g in v)console.log(v[g].systemTest.title),v[g].systemTest.title===t.title&&delete v[g];yield(0,a.BN)(d,v)}})()}}return(c=i).\u0275fac=function(o){return new(o||c)(u.KVO(a._7))},c.\u0275prov=u.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()}}]); \ No newline at end of file diff --git a/www/common.d189814be88799fb.js b/www/common.d189814be88799fb.js deleted file mode 100644 index e580bf5..0000000 --- a/www/common.d189814be88799fb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[2076],{1263:(O,p,c)=>{c.d(p,{c:()=>u});var _=c(9672),l=c(1086),d=c(8607);const u=(a,s)=>{let o,r;const t=(i,h,v)=>{if(typeof document>"u")return;const m=document.elementFromPoint(i,h);m&&s(m)&&!m.disabled?m!==o&&(e(),n(m,v)):e()},n=(i,h)=>{o=i,r||(r=o);const v=o;(0,_.w)(()=>v.classList.add("ion-activated")),h()},e=(i=!1)=>{if(!o)return;const h=o;(0,_.w)(()=>h.classList.remove("ion-activated")),i&&r!==o&&o.click(),o=void 0};return(0,d.createGesture)({el:a,gestureName:"buttonActiveDrag",threshold:0,onStart:i=>t(i.currentX,i.currentY,l.a),onMove:i=>t(i.currentX,i.currentY,l.b),onEnd:()=>{e(!0),(0,l.h)(),r=void 0}})}},8438:(O,p,c)=>{c.d(p,{g:()=>l});var _=c(8476);const l=()=>{if(void 0!==_.w)return _.w.Capacitor}},5572:(O,p,c)=>{c.d(p,{c:()=>_,i:()=>l});const _=(d,u,a)=>"function"==typeof a?a(d,u):"string"==typeof a?d[a]===u[a]:Array.isArray(u)?u.includes(d):d===u,l=(d,u,a)=>void 0!==d&&(Array.isArray(d)?d.some(s=>_(s,u,a)):_(d,u,a))},3351:(O,p,c)=>{c.d(p,{g:()=>_});const _=(s,o,r,t,n)=>d(s[1],o[1],r[1],t[1],n).map(e=>l(s[0],o[0],r[0],t[0],e)),l=(s,o,r,t,n)=>n*(3*o*Math.pow(n-1,2)+n*(-3*r*n+3*r+t*n))-s*Math.pow(n-1,3),d=(s,o,r,t,n)=>a((t-=n)-3*(r-=n)+3*(o-=n)-(s-=n),3*r-6*o+3*s,3*o-3*s,s).filter(i=>i>=0&&i<=1),a=(s,o,r,t)=>{if(0===s)return((s,o,r)=>{const t=o*o-4*s*r;return t<0?[]:[(-o+Math.sqrt(t))/(2*s),(-o-Math.sqrt(t))/(2*s)]})(o,r,t);const n=(3*(r/=s)-(o/=s)*o)/3,e=(2*o*o*o-9*o*r+27*(t/=s))/27;if(0===n)return[Math.pow(-e,1/3)];if(0===e)return[Math.sqrt(-n),-Math.sqrt(-n)];const i=Math.pow(e/2,2)+Math.pow(n/3,3);if(0===i)return[Math.pow(e/2,.5)-o/3];if(i>0)return[Math.pow(-e/2+Math.sqrt(i),1/3)-Math.pow(e/2+Math.sqrt(i),1/3)-o/3];const h=Math.sqrt(Math.pow(-n/3,3)),v=Math.acos(-e/(2*Math.sqrt(Math.pow(-n/3,3)))),m=2*Math.pow(h,1/3);return[m*Math.cos(v/3)-o/3,m*Math.cos((v+2*Math.PI)/3)-o/3,m*Math.cos((v+4*Math.PI)/3)-o/3]}},5083:(O,p,c)=>{c.d(p,{i:()=>_});const _=l=>l&&""!==l.dir?"rtl"===l.dir.toLowerCase():"rtl"===(null==document?void 0:document.dir.toLowerCase())},3126:(O,p,c)=>{c.r(p),c.d(p,{startFocusVisible:()=>u});const _="ion-focused",d=["Tab","ArrowDown","Space","Escape"," ","Shift","Enter","ArrowLeft","ArrowRight","ArrowUp","Home","End"],u=a=>{let s=[],o=!0;const r=a?a.shadowRoot:document,t=a||document.body,n=g=>{s.forEach(f=>f.classList.remove(_)),g.forEach(f=>f.classList.add(_)),s=g},e=()=>{o=!1,n([])},i=g=>{o=d.includes(g.key),o||n([])},h=g=>{if(o&&void 0!==g.composedPath){const f=g.composedPath().filter(y=>!!y.classList&&y.classList.contains("ion-focusable"));n(f)}},v=()=>{r.activeElement===t&&n([])};return r.addEventListener("keydown",i),r.addEventListener("focusin",h),r.addEventListener("focusout",v),r.addEventListener("touchstart",e,{passive:!0}),r.addEventListener("mousedown",e),{destroy:()=>{r.removeEventListener("keydown",i),r.removeEventListener("focusin",h),r.removeEventListener("focusout",v),r.removeEventListener("touchstart",e),r.removeEventListener("mousedown",e)},setFocus:n}}},1086:(O,p,c)=>{c.d(p,{I:()=>l,a:()=>o,b:()=>r,c:()=>s,d:()=>n,h:()=>t});var _=c(8438),l=function(e){return e.Heavy="HEAVY",e.Medium="MEDIUM",e.Light="LIGHT",e}(l||{});const u={getEngine(){const e=(0,_.g)();if(null!=e&&e.isPluginAvailable("Haptics"))return e.Plugins.Haptics},available(){if(!this.getEngine())return!1;const i=(0,_.g)();return"web"!==(null==i?void 0:i.getPlatform())||typeof navigator<"u"&&void 0!==navigator.vibrate},impact(e){const i=this.getEngine();i&&i.impact({style:e.style})},notification(e){const i=this.getEngine();i&&i.notification({type:e.type})},selection(){this.impact({style:l.Light})},selectionStart(){const e=this.getEngine();e&&e.selectionStart()},selectionChanged(){const e=this.getEngine();e&&e.selectionChanged()},selectionEnd(){const e=this.getEngine();e&&e.selectionEnd()}},a=()=>u.available(),s=()=>{a()&&u.selection()},o=()=>{a()&&u.selectionStart()},r=()=>{a()&&u.selectionChanged()},t=()=>{a()&&u.selectionEnd()},n=e=>{a()&&u.impact(e)}},909:(O,p,c)=>{c.d(p,{I:()=>s,a:()=>n,b:()=>a,c:()=>h,d:()=>m,f:()=>e,g:()=>t,i:()=>r,p:()=>v,r:()=>g,s:()=>i});var _=c(467),l=c(4920),d=c(4929);const a="ion-content",s=".ion-content-scroll-host",o=`${a}, ${s}`,r=f=>"ION-CONTENT"===f.tagName,t=function(){var f=(0,_.A)(function*(y){return r(y)?(yield new Promise(D=>(0,l.c)(y,D)),y.getScrollElement()):y});return function(D){return f.apply(this,arguments)}}(),n=f=>f.querySelector(s)||f.querySelector(o),e=f=>f.closest(o),i=(f,y)=>r(f)?f.scrollToTop(y):Promise.resolve(f.scrollTo({top:0,left:0,behavior:y>0?"smooth":"auto"})),h=(f,y,D,M)=>r(f)?f.scrollByPoint(y,D,M):Promise.resolve(f.scrollBy({top:D,left:y,behavior:M>0?"smooth":"auto"})),v=f=>(0,d.b)(f,a),m=f=>{if(r(f)){const D=f.scrollY;return f.scrollY=!1,D}return f.style.setProperty("overflow","hidden"),!0},g=(f,y)=>{r(f)?f.scrollY=y:f.style.removeProperty("overflow")}},3992:(O,p,c)=>{c.d(p,{a:()=>_,b:()=>h,c:()=>o,d:()=>v,e:()=>L,f:()=>s,g:()=>m,h:()=>d,i:()=>l,j:()=>E,k:()=>P,l:()=>r,m:()=>e,n:()=>g,o:()=>n,p:()=>a,q:()=>u,r:()=>w,s:()=>A,t:()=>i,u:()=>D,v:()=>M,w:()=>t,x:()=>f,y:()=>y});const _="data:image/svg+xml;utf8,",l="data:image/svg+xml;utf8,",d="data:image/svg+xml;utf8,",u="data:image/svg+xml;utf8,",a="data:image/svg+xml;utf8,",s="data:image/svg+xml;utf8,",o="data:image/svg+xml;utf8,",r="data:image/svg+xml;utf8,",t="data:image/svg+xml;utf8,",n="data:image/svg+xml;utf8,",e="data:image/svg+xml;utf8,",i="data:image/svg+xml;utf8,",h="data:image/svg+xml;utf8,",v="data:image/svg+xml;utf8,",m="data:image/svg+xml;utf8,",g="data:image/svg+xml;utf8,",f="data:image/svg+xml;utf8,",y="data:image/svg+xml;utf8,",D="data:image/svg+xml;utf8,",M="data:image/svg+xml;utf8,",w="data:image/svg+xml;utf8,",E="data:image/svg+xml;utf8,",P="data:image/svg+xml;utf8,",A="data:image/svg+xml;utf8,",L="data:image/svg+xml;utf8,"},243:(O,p,c)=>{c.d(p,{c:()=>u,g:()=>a});var _=c(8476),l=c(4920),d=c(4929);const u=(o,r,t)=>{let n,e;if(void 0!==_.w&&"MutationObserver"in _.w){const m=Array.isArray(r)?r:[r];n=new MutationObserver(g=>{for(const f of g)for(const y of f.addedNodes)if(y.nodeType===Node.ELEMENT_NODE&&m.includes(y.slot))return t(),void(0,l.r)(()=>i(y))}),n.observe(o,{childList:!0,subtree:!0})}const i=m=>{var g;e&&(e.disconnect(),e=void 0),e=new MutationObserver(f=>{t();for(const y of f)for(const D of y.removedNodes)D.nodeType===Node.ELEMENT_NODE&&D.slot===r&&v()}),e.observe(null!==(g=m.parentElement)&&void 0!==g?g:m,{subtree:!0,childList:!0})},v=()=>{e&&(e.disconnect(),e=void 0)};return{destroy:()=>{n&&(n.disconnect(),n=void 0),v()}}},a=(o,r,t)=>{const n=null==o?0:o.toString().length,e=s(n,r);if(void 0===t)return e;try{return t(n,r)}catch(i){return(0,d.a)("Exception in provided `counterFormatter`.",i),e}},s=(o,r)=>`${o} / ${r}`},1622:(O,p,c)=>{c.r(p),c.d(p,{KEYBOARD_DID_CLOSE:()=>a,KEYBOARD_DID_OPEN:()=>u,copyVisualViewport:()=>w,keyboardDidClose:()=>f,keyboardDidOpen:()=>m,keyboardDidResize:()=>g,resetKeyboardAssist:()=>n,setKeyboardClose:()=>v,setKeyboardOpen:()=>h,startKeyboardAssist:()=>e,trackViewportChanges:()=>M});var _=c(4379);c(8438),c(8476);const u="ionKeyboardDidShow",a="ionKeyboardDidHide";let o={},r={},t=!1;const n=()=>{o={},r={},t=!1},e=E=>{if(_.K.getEngine())i(E);else{if(!E.visualViewport)return;r=w(E.visualViewport),E.visualViewport.onresize=()=>{M(E),m()||g(E)?h(E):f(E)&&v(E)}}},i=E=>{E.addEventListener("keyboardDidShow",P=>h(E,P)),E.addEventListener("keyboardDidHide",()=>v(E))},h=(E,P)=>{y(E,P),t=!0},v=E=>{D(E),t=!1},m=()=>!t&&o.width===r.width&&(o.height-r.height)*r.scale>150,g=E=>t&&!f(E),f=E=>t&&r.height===E.innerHeight,y=(E,P)=>{const L=new CustomEvent(u,{detail:{keyboardHeight:P?P.keyboardHeight:E.innerHeight-r.height}});E.dispatchEvent(L)},D=E=>{const P=new CustomEvent(a);E.dispatchEvent(P)},M=E=>{o=Object.assign({},r),r=w(E.visualViewport)},w=E=>({width:Math.round(E.width),height:Math.round(E.height),offsetTop:E.offsetTop,offsetLeft:E.offsetLeft,pageTop:E.pageTop,pageLeft:E.pageLeft,scale:E.scale})},4379:(O,p,c)=>{c.d(p,{K:()=>u,a:()=>d});var _=c(8438),l=function(a){return a.Unimplemented="UNIMPLEMENTED",a.Unavailable="UNAVAILABLE",a}(l||{}),d=function(a){return a.Body="body",a.Ionic="ionic",a.Native="native",a.None="none",a}(d||{});const u={getEngine(){const a=(0,_.g)();if(null!=a&&a.isPluginAvailable("Keyboard"))return a.Plugins.Keyboard},getResizeMode(){const a=this.getEngine();return null!=a&&a.getResizeMode?a.getResizeMode().catch(s=>{if(s.code!==l.Unimplemented)throw s}):Promise.resolve(void 0)}}},4731:(O,p,c)=>{c.d(p,{c:()=>s});var _=c(467),l=c(8476),d=c(4379);const u=o=>{if(void 0===l.d||o===d.a.None||void 0===o)return null;const r=l.d.querySelector("ion-app");return null!=r?r:l.d.body},a=o=>{const r=u(o);return null===r?0:r.clientHeight},s=function(){var o=(0,_.A)(function*(r){let t,n,e,i;const h=function(){var y=(0,_.A)(function*(){const D=yield d.K.getResizeMode(),M=void 0===D?void 0:D.mode;t=()=>{void 0===i&&(i=a(M)),e=!0,v(e,M)},n=()=>{e=!1,v(e,M)},null==l.w||l.w.addEventListener("keyboardWillShow",t),null==l.w||l.w.addEventListener("keyboardWillHide",n)});return function(){return y.apply(this,arguments)}}(),v=(y,D)=>{r&&r(y,m(D))},m=y=>{if(0===i||i===a(y))return;const D=u(y);return null!==D?new Promise(M=>{const E=new ResizeObserver(()=>{D.clientHeight===i&&(E.disconnect(),M())});E.observe(D)}):void 0};return yield h(),{init:h,destroy:()=>{null==l.w||l.w.removeEventListener("keyboardWillShow",t),null==l.w||l.w.removeEventListener("keyboardWillHide",n),t=n=void 0},isKeyboardVisible:()=>e}});return function(t){return o.apply(this,arguments)}}()},7838:(O,p,c)=>{c.d(p,{c:()=>l});var _=c(467);const l=()=>{let d;return{lock:function(){var a=(0,_.A)(function*(){const s=d;let o;return d=new Promise(r=>o=r),void 0!==s&&(yield s),o});return function(){return a.apply(this,arguments)}}()}}},9001:(O,p,c)=>{c.d(p,{c:()=>d});var _=c(8476),l=c(4920);const d=(u,a,s)=>{let o;const r=()=>!(void 0===a()||void 0!==u.label||null===s()),n=()=>{const i=a();if(void 0===i)return;if(!r())return void i.style.removeProperty("width");const h=s().scrollWidth;if(0===h&&null===i.offsetParent&&void 0!==_.w&&"IntersectionObserver"in _.w){if(void 0!==o)return;const v=o=new IntersectionObserver(m=>{1===m[0].intersectionRatio&&(n(),v.disconnect(),o=void 0)},{threshold:.01,root:u});v.observe(i)}else i.style.setProperty("width",.75*h+"px")};return{calculateNotchWidth:()=>{r()&&(0,l.r)(()=>{n()})},destroy:()=>{o&&(o.disconnect(),o=void 0)}}}},7895:(O,p,c)=>{c.d(p,{S:()=>l});const l={bubbles:{dur:1e3,circles:9,fn:(d,u,a)=>{const s=d*u/a-d+"ms",o=2*Math.PI*u/a;return{r:5,style:{top:32*Math.sin(o)+"%",left:32*Math.cos(o)+"%","animation-delay":s}}}},circles:{dur:1e3,circles:8,fn:(d,u,a)=>{const s=u/a,o=d*s-d+"ms",r=2*Math.PI*s;return{r:5,style:{top:32*Math.sin(r)+"%",left:32*Math.cos(r)+"%","animation-delay":o}}}},circular:{dur:1400,elmDuration:!0,circles:1,fn:()=>({r:20,cx:48,cy:48,fill:"none",viewBox:"24 24 48 48",transform:"translate(0,0)",style:{}})},crescent:{dur:750,circles:1,fn:()=>({r:26,style:{}})},dots:{dur:750,circles:3,fn:(d,u)=>({r:6,style:{left:32-32*u+"%","animation-delay":-110*u+"ms"}})},lines:{dur:1e3,lines:8,fn:(d,u,a)=>({y1:14,y2:26,style:{transform:`rotate(${360/a*u+(u({y1:12,y2:20,style:{transform:`rotate(${360/a*u+(u({y1:17,y2:29,style:{transform:`rotate(${30*u+(u<6?180:-180)}deg)`,"animation-delay":d*u/a-d+"ms"}})},"lines-sharp-small":{dur:1e3,lines:12,fn:(d,u,a)=>({y1:12,y2:20,style:{transform:`rotate(${30*u+(u<6?180:-180)}deg)`,"animation-delay":d*u/a-d+"ms"}})}}},7166:(O,p,c)=>{c.r(p),c.d(p,{createSwipeBackGesture:()=>a});var _=c(4920),l=c(5083),d=c(8607);c(1970);const a=(s,o,r,t,n)=>{const e=s.ownerDocument.defaultView;let i=(0,l.i)(s);const v=D=>i?-D.deltaX:D.deltaX;return(0,d.createGesture)({el:s,gestureName:"goback-swipe",gesturePriority:101,threshold:10,canStart:D=>(i=(0,l.i)(s),(D=>{const{startX:w}=D;return i?w>=e.innerWidth-50:w<=50})(D)&&o()),onStart:r,onMove:D=>{const w=v(D)/e.innerWidth;t(w)},onEnd:D=>{const M=v(D),w=e.innerWidth,E=M/w,P=(D=>i?-D.velocityX:D.velocityX)(D),L=P>=0&&(P>.2||M>w/2),C=(L?1-E:E)*w;let T=0;if(C>5){const R=C/Math.abs(P);T=Math.min(R,540)}n(L,E<=0?.01:(0,_.j)(0,E,.9999),T)}})}},2935:(O,p,c)=>{c.d(p,{w:()=>_});const _=(u,a,s)=>{if(typeof MutationObserver>"u")return;const o=new MutationObserver(r=>{s(l(r,a))});return o.observe(u,{childList:!0,subtree:!0}),o},l=(u,a)=>{let s;return u.forEach(o=>{for(let r=0;r{if(1!==u.nodeType)return;const s=u;return(s.tagName===a.toUpperCase()?[s]:Array.from(s.querySelectorAll(a))).find(r=>r.value===s.value)}},385:(O,p,c)=>{c.d(p,{l:()=>d});var _=c(4438),l=c(7863);let d=(()=>{var u;class a{constructor(){this.title="Header Title"}ngOnInit(){}}return(u=a).\u0275fac=function(o){return new(o||u)},u.\u0275cmp=_.VBU({type:u,selectors:[["app-header"]],inputs:{title:"title"},decls:5,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"]],template:function(o,r){1&o&&(_.j41(0,"ion-header",0)(1,"ion-toolbar"),_.nrm(2,"ion-menu-button",1),_.j41(3,"ion-title"),_.EFF(4),_.k0s()()()),2&o&&(_.Y8G("translucent",!0),_.R7$(4),_.JRh(r.title))},dependencies:[l.eU,l.MC,l.BC,l.ai]}),a})()},8453:(O,p,c)=>{c.d(p,{W:()=>d});var _=c(4438),l=c(7863);let d=(()=>{var u;class a{constructor(){this.title="Title"}ngOnInit(){}}return(u=a).\u0275fac=function(o){return new(o||u)},u.\u0275cmp=_.VBU({type:u,selectors:[["app-title"]],inputs:{title:"title"},decls:4,vars:1,consts:[[1,"lg:m-10"],["size","12","size-md","6","size-lg","6"],[1,"text-4xl","lg:text-6xl","font-bold"]],template:function(o,r){1&o&&(_.j41(0,"ion-row",0)(1,"ion-col",1)(2,"h1",2),_.EFF(3),_.k0s()()()),2&o&&(_.R7$(3),_.JRh(r.title))},dependencies:[l.hU,l.ln]}),a})()},4796:(O,p,c)=>{c.d(p,{u:()=>a});var _=c(467),l=c(8737),d=c(4262),u=c(4438);let a=(()=>{var s;class o{constructor(t,n){this.auth=t,this.firestore=n}registerUser(t){var n=this;return(0,_.A)(function*(){try{const e=yield(0,l.eJ)(n.auth,t.email,t.password);return e.user?(yield(0,d.BN)((0,d.H9)(n.firestore,"users",e.user.uid),{email:t.email,name:t.name,orgName:t.orgName,uid:e.user.uid}),yield(0,d.BN)((0,d.H9)(n.firestore,"teams",`${t.orgName}`),{name:t.orgName,members:[e.user.uid]}),e):null}catch{return null}})()}loginUser(t){var n=this;return(0,_.A)(function*(){try{var e;const i=yield(0,l.x9)(n.auth,t.email,t.password);if(null!==(e=i.user)&&void 0!==e&&e.uid){const h=yield(0,d.x7)((0,d.H9)(n.firestore,"users",i.user.uid));if(h.exists())return localStorage.setItem("user",JSON.stringify(h.data())),i}}catch(i){console.error(i)}return null})()}logoutUser(){var t=this;return(0,_.A)(function*(){yield t.auth.signOut()})()}addMember(t){var n=this;return(0,_.A)(function*(){try{const e=yield(0,l.eJ)(n.auth,t.email,t.password);if(!e.user)return!1;const i={email:t.email,name:t.name,orgName:t.orgName,uid:e.user.uid};return yield(0,d.BN)((0,d.H9)(n.firestore,"users",e.user.uid),i),i}catch{return!1}})()}}return(s=o).\u0275fac=function(t){return new(t||s)(u.KVO(l.Nj),u.KVO(d._7))},s.\u0275prov=u.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),o})()},6560:(O,p,c)=>{c.d(p,{x:()=>a});var _=c(467),l=c(4262),d=c(4438),u=c(1626);let a=(()=>{var s;class o{constructor(t,n){this.firestore=t,this.http=n,this.url_cpu="https://devprobeapi.onrender.com/flame_graph_date",this.url_mem="https://devprobeapi.onrender.com/flame_graph_memory_date"}getProducts(t){var n=this;return(0,_.A)(function*(){try{const e=(0,l.rJ)(n.firestore,"teams",t,"products");return(yield(0,l.GG)(e)).docs.map(h=>h.data())}catch(e){return console.log(e),[]}})()}getDates(t,n,e){var i=this;return(0,_.A)(function*(){try{e||(e="cpu_usage");const h=(0,l.rJ)(i.firestore,"teams",t,"products",n,e);return(yield(0,l.GG)(h)).docs.map(m=>m.id)}catch(h){return console.log(h),[]}})()}getFlameGraphByDate(t,n,e,i){var h=this;return(0,_.A)(function*(){try{let v={team:t,product:n,date:e};return i?yield h.http.post(h.url_mem,v).toPromise():yield h.http.post(h.url_cpu,v).toPromise()}catch{return{}}})()}}return(s=o).\u0275fac=function(t){return new(t||s)(d.KVO(l._7),d.KVO(u.Qq))},s.\u0275prov=d.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),o})()},3661:(O,p,c)=>{c.d(p,{e:()=>a});var _=c(467),l=c(4438),d=c(4262),u=c(1626);let a=(()=>{var s;class o{constructor(t,n){this.firestore=t,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocationDestSrc(t){var n=this;return(0,_.A)(function*(){var e,i,h,v,m,g,f,y;if(!t)return t;const D=n.http.get(n.ipApiURL+t.dst_addr).toPromise(),M=n.http.get(n.ipApiURL+t.src_addr).toPromise(),w=yield D,E=yield M;return t.dst_city=null!==(e=w.city)&&void 0!==e?e:"No city found",t.dst_country=null!==(i=w.country)&&void 0!==i?i:"No country found",t.dst_latitude=null!==(h=w.lat)&&void 0!==h?h:0,t.dst_longitude=null!==(v=w.lon)&&void 0!==v?v:0,t.src_city=null!==(m=E.city)&&void 0!==m?m:"No city found",t.src_country=null!==(g=E.country)&&void 0!==g?g:"No country found",t.src_latitude=null!==(f=E.lat)&&void 0!==f?f:0,t.src_longitude=null!==(y=E.lon)&&void 0!==y?y:0,t})()}getLocationFrom(t){var n=this;return(0,_.A)(function*(){if(!t)return t;let e=t.result;for(let g=0;g{c.d(p,{N:()=>a});var _=c(467),l=c(4262),d=c(4438),u=c(1626);let a=(()=>{var s;class o{constructor(t,n){this.firestore=t,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocation(t){var n=this;return(0,_.A)(function*(){console.log(t);const i=yield n.http.get(n.ipApiURL+t[0].dst_addr).toPromise();for(let m=0;mn.http.get(n.ipApiURL+m.from).toPromise());return(yield Promise.all(h)).forEach((m,g)=>{t[g].fromLatitude=m.lat,t[g].fromLongitude=m.lon,t[g].cityFrom=m.city,t[g].countryFrom=m.country}),console.log(t),t})()}saveLocationResults(t,n,e,i){var h=this;return(0,_.A)(function*(){try{console.log(i,"ripeData");const v=(0,l.rJ)(h.firestore,"teams",t,"products",n,"ripe"),m=(0,l.H9)(v,e),g=i.map(f=>({from:f.from,dst_addr:f.dst_addr,latency:f.latency,cityFrom:f.cityFrom,countryFrom:f.countryFrom,cityTo:f.cityTo,countryTo:f.countryTo,fromLatitude:f.fromLatitude,fromLongitude:f.fromLongitude,toLatitude:f.toLatitude,toLongitude:f.toLongitude,id:f.id}));return yield(0,l.BN)(m,{data:g}),console.log("Data saved",{data:g}),!0}catch(v){return console.log(v),!1}})()}}return(s=o).\u0275fac=function(t){return new(t||s)(d.KVO(l._7),d.KVO(u.Qq))},s.\u0275prov=d.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),o})()},6241:(O,p,c)=>{c.d(p,{b:()=>u});var _=c(467),l=c(4262),d=c(4438);let u=(()=>{var a;class s{constructor(r){this.firestore=r}addProduct(r,t){var n=this;return(0,_.A)(function*(){try{console.log(r);const e=(0,l.H9)(n.firestore,"teams",t,"products",r.productObjective);return yield(0,l.BN)(e,r),!0}catch(e){return console.log(e),!1}})()}getProducts(r){var t=this;return(0,_.A)(function*(){try{const n=(0,l.rJ)(t.firestore,"teams",r,"products");return(yield(0,l.GG)(n)).docs.map(i=>i.data())}catch(n){return console.log(n),[]}})()}removeProduct(r,t){var n=this;return(0,_.A)(function*(){try{const e=(0,l.H9)(n.firestore,"teams",r,"products",t);return yield(0,l.kd)(e),!0}catch(e){return console.log(e),!1}})()}}return(a=s).\u0275fac=function(r){return new(r||a)(d.KVO(l._7))},a.\u0275prov=d.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),s})()},2588:(O,p,c)=>{c.d(p,{N:()=>a});var _=c(467),l=c(4262),d=c(4438),u=c(1626);let a=(()=>{var s;class o{constructor(t,n){this.http=t,this.firestore=n,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendTraceRequest(t,n,e,i){var h=this;return(0,_.A)(function*(){console.log("Sending trace request");try{let v={definitions:[{target:t,description:n,type:e,af:4,is_oneoff:!0,protocol:"TCP"}],probes:[]};console.log(i);let m=i.split(",").length-1,g=(i=i.slice(0,-1)).split(","),f=[];for(let M=0;M({id:h.measurementID,dst_addr:f.dst_addr,dst_city:f.dst_city,dst_country:f.dst_country,dst_latitude:f.dst_latitude,dst_longitude:f.dst_longitude,src_addr:f.src_addr,src_city:f.src_city,src_country:f.src_country,src_latitude:f.src_latitude,src_longitude:f.src_longitude,result:f.result}));return yield(0,l.BN)(m,{data:g}),!0}catch(v){return console.log(v),!1}})()}getHistoryResults(t,n){var e=this;return(0,_.A)(function*(){const h=(0,l.rJ)(e.firestore,"teams/"+t+"/products/"+n+"/ripe_trace"),v=yield(0,l.GG)(h);let m=[];return v.docs.forEach(g=>{m.push({id:g.id,data:g.data()})}),console.log(m),m})()}getAllResultsByDescription(t,n,e){var i=this;return(0,_.A)(function*(){try{let h="teams/"+t+"/products/"+n+"/ripe_trace";console.log(h);let v=(0,l.H9)(i.firestore,h,e);return(yield(0,l.x7)(v)).data()}catch(h){return console.log(h),[]}})()}}return(s=o).\u0275fac=function(t){return new(t||s)(d.KVO(u.Qq),d.KVO(l._7))},s.\u0275prov=d.jDH({token:s,factory:s.\u0275fac,providedIn:"root"}),o})()},9640:(O,p,c)=>{c.d(p,{Q:()=>s});var _=c(467),l=c(1985),d=c(4262),u=c(4438),a=c(1626);let s=(()=>{var o;class r{constructor(n,e){this.http=n,this.firestore=e,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendMeasurementRequest(n,e,i,h){var v=this;return(0,_.A)(function*(){let m=h.split(",").length-1;h=h.slice(0,-1);try{let g={definitions:[{target:n,description:"ping",type:"ping",af:4,is_oneoff:!0}],probes:[{requested:m,type:"probes",value:h}]},f={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};console.log(g);let y=yield v.http.post(v.measurementsUrl,g,{headers:f}).toPromise();return console.log(y),v.measurementID=y.measurements[0],v.measurementID}catch(g){return console.log(g),!1}})()}getMeasurementResults(n){var e=this;return(0,_.A)(function*(){n&&(e.measurementID=n);try{let i={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};return""===e.measurementID?(console.log("No measurement ID"),!1):e.http.get(e.measurementsUrl+e.measurementID+"/results/",{headers:i})}catch(i){return console.log(i),new l.c}})()}saveMeasurementResults(n,e,i,h){var v=this;return(0,_.A)(function*(){try{const m=(0,d.rJ)(v.firestore,"teams",n,"products",e,"ripe"),g=(0,d.H9)(m,i),f=h.map((y,D)=>({id:v.measurementID,from:y.from,dst_addr:y.dst_addr,latency:y.latency}));return yield(0,d.BN)(g,{data:f}),!0}catch(m){return console.log(m),!1}})()}getAllResultsByDescription(n,e,i){var h=this;return(0,_.A)(function*(){try{let v="teams/"+n+"/products/"+e+"/ripe";console.log(v);let m=(0,d.H9)(h.firestore,v,i);return(yield(0,d.x7)(m)).data()}catch(v){return console.log(v),[]}})()}getHistoryResults(n,e){var i=this;return(0,_.A)(function*(){const v=(0,d.rJ)(i.firestore,"teams/"+n+"/products/"+e+"/ripe"),m=yield(0,d.GG)(v);let g=[];return m.docs.forEach(f=>{g.push({id:f.id,data:f.data()})}),console.log(g),g})()}deleteHistory(n,e,i){var h=this;return(0,_.A)(function*(){const m=(0,d.H9)(h.firestore,"teams/"+n+"/products/"+e+"/ripe",i);try{return yield(0,d.kd)(m),!0}catch(g){return console.log(g),!1}})()}}return(o=r).\u0275fac=function(n){return new(n||o)(u.KVO(a.Qq),u.KVO(d._7))},o.\u0275prov=u.jDH({token:o,factory:o.\u0275fac,providedIn:"root"}),r})()},9274:(O,p,c)=>{c.d(p,{h:()=>u});var _=c(467),l=c(4262),d=c(4438);let u=(()=>{var a;class s{constructor(r){this.firestore=r}addSystemTest(r,t,n,e){var i=this;return(0,_.A)(function*(){const h=(0,l.H9)(i.firestore,"teams",r,"products",t,"software_testing","system_tests"),v=yield(0,l.x7)(h);if(v.exists()){const g=v.data()[n];console.log(g),g.push(e),yield(0,l.BN)(h,{[n]:g}),console.log("Document updated with ID: ",v.id)}else console.log("No such document!"),yield(0,l.BN)(h,{[n]:[e]}),console.log("Document created with ID: ",h.id)})()}getSystemTest(r,t,n){var e=this;return(0,_.A)(function*(){const i=(0,l.H9)(e.firestore,"teams",r,"products",t,"software_testing","system_tests"),h=yield(0,l.x7)(i);return h.exists()?h.data()[n]:[]})()}}return(a=s).\u0275fac=function(r){return new(r||a)(d.KVO(l._7))},a.\u0275prov=d.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),s})()}}]); \ No newline at end of file diff --git a/www/index.html b/www/index.html index b8dfc16..b45efb7 100644 --- a/www/index.html +++ b/www/index.html @@ -17,10 +17,10 @@ - + - + diff --git a/www/runtime.945eba366ef4eba4.js b/www/runtime.9f6d14fa932be6ae.js similarity index 60% rename from www/runtime.945eba366ef4eba4.js rename to www/runtime.9f6d14fa932be6ae.js index d8193c7..9f47460 100644 --- a/www/runtime.945eba366ef4eba4.js +++ b/www/runtime.9f6d14fa932be6ae.js @@ -1 +1 @@ -(()=>{"use strict";var e,v={},g={};function f(e){var c=g[e];if(void 0!==c)return c.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(c,a,d,b)=>{if(!a){var t=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,d,b]},f.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return f.d(c,{a:c}),c},(()=>{var c,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,d){if(1&d&&(a=this(a)),8&d||"object"==typeof a&&a&&(4&d&&a.__esModule||16&d&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};c=c||[null,e({}),e([]),e(e)];for(var t=2&d&&a;"object"==typeof t&&!~c.indexOf(t);t=e(t))Object.getOwnPropertyNames(t).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,c)=>{for(var a in c)f.o(c,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((c,a)=>(f.f[a](e,c),c),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{246:"feca7d34fa21624f",383:"7ad6450a343fd310",441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1049:"7ef232095c56e4df",1062:"27a6fbe77a434259",1101:"83532fd95b1e4cb4",1102:"010dfe13f6ca7e15",1205:"5bfd81c3b6ceffc4",1207:"a3010e283fee40c9",1293:"ee80f2d33790618d",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",1581:"863ec7b6285a1ad7",1699:"3ef910ea4e2a5d0e",2051:"c368fe66a9153379",2069:"2eb29319cb425843",2075:"1971ba880d06cc30",2076:"d189814be88799fb",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2560:"f34ba2c5e85b55c8",2580:"dd2d37daccf76d3f",2603:"e7bfbb7902a643f3",2839:"45a84ab42dbf5be1",2885:"d64fa10bd441cbc8",3151:"3e501609e759853a",3162:"825364e1635b086f",3506:"899dcc5e5d913023",3511:"16739e7034875331",3814:"4f667f072e44b4e7",3825:"331f98cf89b934e3",3935:"919f86033fc39ee2",3998:"ffd547c928c28334",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4867:"17817bc208c2836c",5088:"027cc090f418c66c",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5712:"a9a2db8da6f1a8cd",5722:"626381443c213363",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",6024:"3c02ab7fe82fedfe",6433:"26eeba8bb230b119",6521:"3c5b756783b6739a",6656:"bd1aa2cc43128309",6688:"11584b254a031d91",6840:"fd32dada9c8ec44e",6927:"71b59311cb8c71c7",7030:"f2a9bf080bedfc5b",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7444:"a7a196ab7cc1ae6b",7720:"78509b154c08b472",7907:"ef61612b4bf3b859",7923:"a53b6d582c6506e1",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8533:"b6a5800de88c91e2",8584:"94ca33677cedf961",8805:"7a687270c4acd743",8814:"4175e28b98837400",8970:"402b7daea47854b9",9013:"b8cefd92ba4e66d6",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9697:"57e559625e67bb53",9906:"7831fb32a0a705fa",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),(()=>{var e={},c="app:";f.l=(a,d,b,r)=>{if(e[a])e[a].push(d);else{var t,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],t.parentNode&&t.parentNode.removeChild(t),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=s.bind(null,t.onerror),t.onload=s.bind(null,t.onload),l&&document.head.appendChild(t)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:c=>c},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(d,b)=>{var r=f.o(e,d)?e[d]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=d){var t=new Promise((o,s)=>r=e[d]=[o,s]);b.push(r[2]=t);var l=f.p+f.u(d),n=new Error;f.l(l,o=>{if(f.o(e,d)&&(0!==(r=e[d])&&(e[d]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+d+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+d,d)}else e[d]=0},f.O.j=d=>0===e[d];var c=(d,b)=>{var n,i,[r,t,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in t)f.o(t,n)&&(f.m[n]=t[n]);if(l)var s=l(f)}for(d&&d(b);o{"use strict";var e,v={},g={};function f(e){var d=g[e];if(void 0!==d)return d.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(d,a,c,b)=>{if(!a){var t=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,c,b]},f.n=e=>{var d=e&&e.__esModule?()=>e.default:()=>e;return f.d(d,{a:d}),d},(()=>{var d,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,c){if(1&c&&(a=this(a)),8&c||"object"==typeof a&&a&&(4&c&&a.__esModule||16&c&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};d=d||[null,e({}),e([]),e(e)];for(var t=2&c&&a;"object"==typeof t&&!~d.indexOf(t);t=e(t))Object.getOwnPropertyNames(t).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,d)=>{for(var a in d)f.o(d,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:d[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((d,a)=>(f.f[a](e,d),d),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{246:"feca7d34fa21624f",383:"77457df574544b3d",441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1049:"7ef232095c56e4df",1062:"8645b76ab9c621ba",1101:"83532fd95b1e4cb4",1102:"010dfe13f6ca7e15",1205:"5bfd81c3b6ceffc4",1207:"a3010e283fee40c9",1293:"ee80f2d33790618d",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",1581:"863ec7b6285a1ad7",1699:"3ef910ea4e2a5d0e",2051:"c368fe66a9153379",2069:"2eb29319cb425843",2075:"1971ba880d06cc30",2076:"57508ee7b7985fb1",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2560:"f34ba2c5e85b55c8",2580:"dd2d37daccf76d3f",2603:"e7bfbb7902a643f3",2839:"45a84ab42dbf5be1",2885:"d64fa10bd441cbc8",3151:"3e501609e759853a",3162:"825364e1635b086f",3506:"899dcc5e5d913023",3511:"16739e7034875331",3814:"4f667f072e44b4e7",3825:"331f98cf89b934e3",3935:"919f86033fc39ee2",3998:"ffd547c928c28334",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4867:"17817bc208c2836c",5088:"027cc090f418c66c",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5712:"a9a2db8da6f1a8cd",5722:"626381443c213363",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",6024:"3c02ab7fe82fedfe",6433:"26eeba8bb230b119",6521:"3c5b756783b6739a",6656:"bd1aa2cc43128309",6688:"11584b254a031d91",6840:"fd32dada9c8ec44e",6927:"71b59311cb8c71c7",7030:"f2a9bf080bedfc5b",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7444:"a7a196ab7cc1ae6b",7720:"78509b154c08b472",7907:"ef61612b4bf3b859",7923:"a53b6d582c6506e1",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8533:"b6a5800de88c91e2",8584:"94ca33677cedf961",8805:"7a687270c4acd743",8814:"4175e28b98837400",8970:"402b7daea47854b9",9013:"b8cefd92ba4e66d6",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9697:"57e559625e67bb53",9906:"7831fb32a0a705fa",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,d)=>Object.prototype.hasOwnProperty.call(e,d),(()=>{var e={},d="app:";f.l=(a,c,b,r)=>{if(e[a])e[a].push(c);else{var t,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],t.parentNode&&t.parentNode.removeChild(t),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=s.bind(null,t.onerror),t.onload=s.bind(null,t.onload),l&&document.head.appendChild(t)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:d=>d},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(c,b)=>{var r=f.o(e,c)?e[c]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=c){var t=new Promise((o,s)=>r=e[c]=[o,s]);b.push(r[2]=t);var l=f.p+f.u(c),n=new Error;f.l(l,o=>{if(f.o(e,c)&&(0!==(r=e[c])&&(e[c]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+c+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+c,c)}else e[c]=0},f.O.j=c=>0===e[c];var d=(c,b)=>{var n,i,[r,t,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in t)f.o(t,n)&&(f.m[n]=t[n]);if(l)var s=l(f)}for(c&&c(b);o.ion-page{position:relative;contain:layout style;height:100%}.split-pane-visible>.ion-page.split-pane-main{position:relative}ion-route,ion-route-redirect,ion-router,ion-select-option,ion-nav-controller,ion-menu-controller,ion-action-sheet-controller,ion-alert-controller,ion-loading-controller,ion-modal-controller,ion-picker-controller,ion-popover-controller,ion-toast-controller,.ion-page-hidden{display:none!important}.ion-page-invisible{opacity:0}.can-go-back>ion-header ion-back-button{display:block}html.plt-ios.plt-hybrid,html.plt-ios.plt-pwa{--ion-statusbar-padding: 20px}@supports (padding-top: 20px){html{--ion-safe-area-top: var(--ion-statusbar-padding)}}@supports (padding-top: env(safe-area-inset-top)){html{--ion-safe-area-top: env(safe-area-inset-top);--ion-safe-area-bottom: env(safe-area-inset-bottom);--ion-safe-area-left: env(safe-area-inset-left);--ion-safe-area-right: env(safe-area-inset-right)}}ion-card.ion-color .ion-inherit-color,ion-card-header.ion-color .ion-inherit-color{color:inherit}.menu-content{transform:translateZ(0)}.menu-content-open{cursor:pointer;touch-action:manipulation;pointer-events:none;overflow-y:hidden}.menu-content-open ion-content{--overflow: hidden}.menu-content-open .ion-content-scroll-host{overflow:hidden}.ios .menu-content-reveal{box-shadow:-8px 0 42px #00000014}[dir=rtl].ios .menu-content-reveal{box-shadow:8px 0 42px #00000014}.md .menu-content-reveal,.md .menu-content-push{box-shadow:4px 0 16px #0000002e}ion-accordion-group.accordion-group-expand-inset>ion-accordion:first-of-type{border-top-left-radius:8px;border-top-right-radius:8px}ion-accordion-group.accordion-group-expand-inset>ion-accordion:last-of-type{border-bottom-left-radius:8px;border-bottom-right-radius:8px}ion-accordion-group>ion-accordion:last-of-type ion-item[slot=header]{--border-width: 0px}ion-accordion.accordion-animated>[slot=header] .ion-accordion-toggle-icon{transition:.3s transform cubic-bezier(.25,.8,.5,1)}@media (prefers-reduced-motion: reduce){ion-accordion .ion-accordion-toggle-icon{transition:none!important}}ion-accordion.accordion-expanding>[slot=header] .ion-accordion-toggle-icon,ion-accordion.accordion-expanded>[slot=header] .ion-accordion-toggle-icon{transform:rotate(180deg)}ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-previous ion-item[slot=header]{--border-width: 0px;--inner-border-width: 0px}ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-expanding:first-of-type,ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-expanded:first-of-type{margin-top:0}ion-input input::-webkit-date-and-time-value{text-align:start}.ion-datetime-button-overlay{--width: fit-content;--height: fit-content}.ion-datetime-button-overlay ion-datetime.datetime-grid{width:320px;min-height:320px}[ion-last-focus],header[tabindex="-1"]:focus,[role=banner][tabindex="-1"]:focus,main[tabindex="-1"]:focus,[role=main][tabindex="-1"]:focus,h1[tabindex="-1"]:focus,[role=heading][aria-level="1"][tabindex="-1"]:focus{outline:none}.popover-viewport:has(>ion-content){overflow:hidden}@supports not selector(:has(> ion-content)){.popover-viewport{overflow:hidden}}audio,canvas,progress,video{vertical-align:baseline}audio:not([controls]){display:none;height:0}b,strong{font-weight:700}img{max-width:100%}hr{height:1px;border-width:0;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}label,input,select,textarea{font-family:inherit;line-height:normal}textarea{overflow:auto;height:auto;font:inherit;color:inherit}textarea::placeholder{padding-left:2px}form,input,optgroup,select{margin:0;font:inherit;color:inherit}html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}a,a div,a span,a ion-icon,a ion-label,button,button div,button span,button ion-icon,button ion-label,.ion-tappable,[tappable],[tappable] div,[tappable] span,[tappable] ion-icon,[tappable] ion-label,input,textarea{touch-action:manipulation}a ion-label,button ion-label{pointer-events:none}button{padding:0;border:0;border-radius:0;font-family:inherit;font-style:inherit;font-variant:inherit;line-height:1;text-transform:none;cursor:pointer;-webkit-appearance:button}[tappable]{cursor:pointer}a[disabled],button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}html{width:100%;height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}html:not(.hydrated) body{display:none}html.ion-ce body{display:block}html.plt-pwa{height:100vh}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:0;padding:0;position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;transform:translateZ(0);text-rendering:optimizeLegibility;overflow:hidden;touch-action:manipulation;-webkit-user-drag:none;-ms-content-zooming:none;word-wrap:break-word;overscroll-behavior-y:none;-webkit-text-size-adjust:none;text-size-adjust:none}html{font-family:var(--ion-font-family)}@supports (-webkit-touch-callout: none){html{font:var(--ion-dynamic-font, 16px var(--ion-font-family))}}a{background-color:transparent;color:var(--ion-color-primary, #0054e9)}h1,h2,h3,h4,h5,h6{margin-top:16px;margin-bottom:10px;font-weight:500;line-height:1.2}h1{margin-top:20px;font-size:1.625rem}h2{margin-top:18px;font-size:1.5rem}h3{font-size:1.375rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}small{font-size:75%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.ion-hide,.ion-hide-up,.ion-hide-down{display:none!important}@media (min-width: 576px){.ion-hide-sm-up{display:none!important}}@media (max-width: 575.98px){.ion-hide-sm-down{display:none!important}}@media (min-width: 768px){.ion-hide-md-up{display:none!important}}@media (max-width: 767.98px){.ion-hide-md-down{display:none!important}}@media (min-width: 992px){.ion-hide-lg-up{display:none!important}}@media (max-width: 991.98px){.ion-hide-lg-down{display:none!important}}@media (min-width: 1200px){.ion-hide-xl-up{display:none!important}}@media (max-width: 1199.98px){.ion-hide-xl-down{display:none!important}}.ion-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding:0}.ion-padding{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-top{--padding-top: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px)}.ion-padding-start{--padding-start: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px)}.ion-padding-end{--padding-end: var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-padding-bottom{--padding-bottom: var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-vertical{--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-horizontal{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin:0}.ion-margin{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-top{--margin-top: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px)}.ion-margin-start{--margin-start: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px)}.ion-margin-end{--margin-end: var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-margin-bottom{--margin-bottom: var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-vertical{--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-horizontal{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-float-left{float:left!important}.ion-float-right{float:right!important}.ion-float-start{float:left!important}:host-context([dir=rtl]) .ion-float-start{float:right!important}[dir=rtl] .ion-float-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-start:dir(rtl){float:right!important}}.ion-float-end{float:right!important}:host-context([dir=rtl]) .ion-float-end{float:left!important}[dir=rtl] .ion-float-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-end:dir(rtl){float:left!important}}@media (min-width: 576px){.ion-float-sm-left{float:left!important}.ion-float-sm-right{float:right!important}.ion-float-sm-start{float:left!important}:host-context([dir=rtl]) .ion-float-sm-start{float:right!important}[dir=rtl] .ion-float-sm-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-sm-start:dir(rtl){float:right!important}}.ion-float-sm-end{float:right!important}:host-context([dir=rtl]) .ion-float-sm-end{float:left!important}[dir=rtl] .ion-float-sm-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-sm-end:dir(rtl){float:left!important}}}@media (min-width: 768px){.ion-float-md-left{float:left!important}.ion-float-md-right{float:right!important}.ion-float-md-start{float:left!important}:host-context([dir=rtl]) .ion-float-md-start{float:right!important}[dir=rtl] .ion-float-md-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-md-start:dir(rtl){float:right!important}}.ion-float-md-end{float:right!important}:host-context([dir=rtl]) .ion-float-md-end{float:left!important}[dir=rtl] .ion-float-md-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-md-end:dir(rtl){float:left!important}}}@media (min-width: 992px){.ion-float-lg-left{float:left!important}.ion-float-lg-right{float:right!important}.ion-float-lg-start{float:left!important}:host-context([dir=rtl]) .ion-float-lg-start{float:right!important}[dir=rtl] .ion-float-lg-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-lg-start:dir(rtl){float:right!important}}.ion-float-lg-end{float:right!important}:host-context([dir=rtl]) .ion-float-lg-end{float:left!important}[dir=rtl] .ion-float-lg-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-lg-end:dir(rtl){float:left!important}}}@media (min-width: 1200px){.ion-float-xl-left{float:left!important}.ion-float-xl-right{float:right!important}.ion-float-xl-start{float:left!important}:host-context([dir=rtl]) .ion-float-xl-start{float:right!important}[dir=rtl] .ion-float-xl-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-xl-start:dir(rtl){float:right!important}}.ion-float-xl-end{float:right!important}:host-context([dir=rtl]) .ion-float-xl-end{float:left!important}[dir=rtl] .ion-float-xl-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-xl-end:dir(rtl){float:left!important}}}.ion-text-center{text-align:center!important}.ion-text-justify{text-align:justify!important}.ion-text-start{text-align:start!important}.ion-text-end{text-align:end!important}.ion-text-left{text-align:left!important}.ion-text-right{text-align:right!important}.ion-text-nowrap{white-space:nowrap!important}.ion-text-wrap{white-space:normal!important}@media (min-width: 576px){.ion-text-sm-center{text-align:center!important}.ion-text-sm-justify{text-align:justify!important}.ion-text-sm-start{text-align:start!important}.ion-text-sm-end{text-align:end!important}.ion-text-sm-left{text-align:left!important}.ion-text-sm-right{text-align:right!important}.ion-text-sm-nowrap{white-space:nowrap!important}.ion-text-sm-wrap{white-space:normal!important}}@media (min-width: 768px){.ion-text-md-center{text-align:center!important}.ion-text-md-justify{text-align:justify!important}.ion-text-md-start{text-align:start!important}.ion-text-md-end{text-align:end!important}.ion-text-md-left{text-align:left!important}.ion-text-md-right{text-align:right!important}.ion-text-md-nowrap{white-space:nowrap!important}.ion-text-md-wrap{white-space:normal!important}}@media (min-width: 992px){.ion-text-lg-center{text-align:center!important}.ion-text-lg-justify{text-align:justify!important}.ion-text-lg-start{text-align:start!important}.ion-text-lg-end{text-align:end!important}.ion-text-lg-left{text-align:left!important}.ion-text-lg-right{text-align:right!important}.ion-text-lg-nowrap{white-space:nowrap!important}.ion-text-lg-wrap{white-space:normal!important}}@media (min-width: 1200px){.ion-text-xl-center{text-align:center!important}.ion-text-xl-justify{text-align:justify!important}.ion-text-xl-start{text-align:start!important}.ion-text-xl-end{text-align:end!important}.ion-text-xl-left{text-align:left!important}.ion-text-xl-right{text-align:right!important}.ion-text-xl-nowrap{white-space:nowrap!important}.ion-text-xl-wrap{white-space:normal!important}}.ion-text-uppercase{text-transform:uppercase!important}.ion-text-lowercase{text-transform:lowercase!important}.ion-text-capitalize{text-transform:capitalize!important}@media (min-width: 576px){.ion-text-sm-uppercase{text-transform:uppercase!important}.ion-text-sm-lowercase{text-transform:lowercase!important}.ion-text-sm-capitalize{text-transform:capitalize!important}}@media (min-width: 768px){.ion-text-md-uppercase{text-transform:uppercase!important}.ion-text-md-lowercase{text-transform:lowercase!important}.ion-text-md-capitalize{text-transform:capitalize!important}}@media (min-width: 992px){.ion-text-lg-uppercase{text-transform:uppercase!important}.ion-text-lg-lowercase{text-transform:lowercase!important}.ion-text-lg-capitalize{text-transform:capitalize!important}}@media (min-width: 1200px){.ion-text-xl-uppercase{text-transform:uppercase!important}.ion-text-xl-lowercase{text-transform:lowercase!important}.ion-text-xl-capitalize{text-transform:capitalize!important}}.ion-align-self-start{align-self:flex-start!important}.ion-align-self-end{align-self:flex-end!important}.ion-align-self-center{align-self:center!important}.ion-align-self-stretch{align-self:stretch!important}.ion-align-self-baseline{align-self:baseline!important}.ion-align-self-auto{align-self:auto!important}.ion-wrap{flex-wrap:wrap!important}.ion-nowrap{flex-wrap:nowrap!important}.ion-wrap-reverse{flex-wrap:wrap-reverse!important}.ion-justify-content-start{justify-content:flex-start!important}.ion-justify-content-center{justify-content:center!important}.ion-justify-content-end{justify-content:flex-end!important}.ion-justify-content-around{justify-content:space-around!important}.ion-justify-content-between{justify-content:space-between!important}.ion-justify-content-evenly{justify-content:space-evenly!important}.ion-align-items-start{align-items:flex-start!important}.ion-align-items-center{align-items:center!important}.ion-align-items-end{align-items:flex-end!important}.ion-align-items-stretch{align-items:stretch!important}.ion-align-items-baseline{align-items:baseline!important}:root{--ion-color-primary: #4d8dff;--ion-color-primary-rgb: 77, 141, 255;--ion-color-primary-contrast: #000;--ion-color-primary-contrast-rgb: 0, 0, 0;--ion-color-primary-shade: #447ce0;--ion-color-primary-tint: #5f98ff;--ion-color-secondary: #46b1ff;--ion-color-secondary-rgb: 70, 177, 255;--ion-color-secondary-contrast: #000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #3e9ce0;--ion-color-secondary-tint: #59b9ff;--ion-color-tertiary: #8482fb;--ion-color-tertiary-rgb: 132, 130, 251;--ion-color-tertiary-contrast: #000;--ion-color-tertiary-contrast-rgb: 0, 0, 0;--ion-color-tertiary-shade: #7472dd;--ion-color-tertiary-tint: #908ffb;--ion-color-success: #2dd55b;--ion-color-success-rgb: 45, 213, 91;--ion-color-success-contrast: #000;--ion-color-success-contrast-rgb: 0, 0, 0;--ion-color-success-shade: #28bb50;--ion-color-success-tint: #42d96b;--ion-color-warning: #ffce31;--ion-color-warning-rgb: 255, 206, 49;--ion-color-warning-contrast: #000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0b52b;--ion-color-warning-tint: #ffd346;--ion-color-danger: #f24c58;--ion-color-danger-rgb: 242, 76, 88;--ion-color-danger-contrast: #000;--ion-color-danger-contrast-rgb: 0, 0, 0;--ion-color-danger-shade: #d5434d;--ion-color-danger-tint: #f35e69;--ion-color-light: #222428;--ion-color-light-rgb: 34, 36, 40;--ion-color-light-contrast: #fff;--ion-color-light-contrast-rgb: 255, 255, 255;--ion-color-light-shade: #1e2023;--ion-color-light-tint: #383a3e;--ion-color-medium: #989aa2;--ion-color-medium-rgb: 152, 154, 162;--ion-color-medium-contrast: #000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #86888f;--ion-color-medium-tint: #a2a4ab;--ion-color-dark: #f4f5f8;--ion-color-dark-rgb: 244, 245, 248;--ion-color-dark-contrast: #000;--ion-color-dark-contrast-rgb: 0, 0, 0;--ion-color-dark-shade: #d7d8da;--ion-color-dark-tint: #f5f6f9}:root.ios{--ion-background-color: #000000;--ion-background-color-rgb: 0, 0, 0;--ion-text-color: #ffffff;--ion-text-color-rgb: 255, 255, 255;--ion-background-color-step-50: #0d0d0d;--ion-background-color-step-100: #1a1a1a;--ion-background-color-step-150: #262626;--ion-background-color-step-200: #333333;--ion-background-color-step-250: #404040;--ion-background-color-step-300: #4d4d4d;--ion-background-color-step-350: #595959;--ion-background-color-step-400: #666666;--ion-background-color-step-450: #737373;--ion-background-color-step-500: #808080;--ion-background-color-step-550: #8c8c8c;--ion-background-color-step-600: #999999;--ion-background-color-step-650: #a6a6a6;--ion-background-color-step-700: #b3b3b3;--ion-background-color-step-750: #bfbfbf;--ion-background-color-step-800: #cccccc;--ion-background-color-step-850: #d9d9d9;--ion-background-color-step-900: #e6e6e6;--ion-background-color-step-950: #f2f2f2;--ion-text-color-step-50: #f2f2f2;--ion-text-color-step-100: #e6e6e6;--ion-text-color-step-150: #d9d9d9;--ion-text-color-step-200: #cccccc;--ion-text-color-step-250: #bfbfbf;--ion-text-color-step-300: #b3b3b3;--ion-text-color-step-350: #a6a6a6;--ion-text-color-step-400: #999999;--ion-text-color-step-450: #8c8c8c;--ion-text-color-step-500: #808080;--ion-text-color-step-550: #737373;--ion-text-color-step-600: #666666;--ion-text-color-step-650: #595959;--ion-text-color-step-700: #4d4d4d;--ion-text-color-step-750: #404040;--ion-text-color-step-800: #333333;--ion-text-color-step-850: #262626;--ion-text-color-step-900: #1a1a1a;--ion-text-color-step-950: #0d0d0d;--ion-item-background: #000000;--ion-card-background: #1c1c1d}:root.ios ion-modal{--ion-background-color: var(--ion-color-step-100, var(--ion-background-color-step-100));--ion-toolbar-background: var(--ion-color-step-150, var(--ion-background-color-step-150));--ion-toolbar-border-color: var(--ion-color-step-250, var(--ion-background-color-step-250))}:root.md{--ion-background-color: #121212;--ion-background-color-rgb: 18, 18, 18;--ion-text-color: #ffffff;--ion-text-color-rgb: 255, 255, 255;--ion-background-color-step-50: #1e1e1e;--ion-background-color-step-100: #2a2a2a;--ion-background-color-step-150: #363636;--ion-background-color-step-200: #414141;--ion-background-color-step-250: #4d4d4d;--ion-background-color-step-300: #595959;--ion-background-color-step-350: #656565;--ion-background-color-step-400: #717171;--ion-background-color-step-450: #7d7d7d;--ion-background-color-step-500: #898989;--ion-background-color-step-550: #949494;--ion-background-color-step-600: #a0a0a0;--ion-background-color-step-650: #acacac;--ion-background-color-step-700: #b8b8b8;--ion-background-color-step-750: #c4c4c4;--ion-background-color-step-800: #d0d0d0;--ion-background-color-step-850: #dbdbdb;--ion-background-color-step-900: #e7e7e7;--ion-background-color-step-950: #f3f3f3;--ion-text-color-step-50: #f3f3f3;--ion-text-color-step-100: #e7e7e7;--ion-text-color-step-150: #dbdbdb;--ion-text-color-step-200: #d0d0d0;--ion-text-color-step-250: #c4c4c4;--ion-text-color-step-300: #b8b8b8;--ion-text-color-step-350: #acacac;--ion-text-color-step-400: #a0a0a0;--ion-text-color-step-450: #949494;--ion-text-color-step-500: #898989;--ion-text-color-step-550: #7d7d7d;--ion-text-color-step-600: #717171;--ion-text-color-step-650: #656565;--ion-text-color-step-700: #595959;--ion-text-color-step-750: #4d4d4d;--ion-text-color-step-800: #414141;--ion-text-color-step-850: #363636;--ion-text-color-step-900: #2a2a2a;--ion-text-color-step-950: #1e1e1e;--ion-item-background: #1e1e1e;--ion-toolbar-background: #1f1f1f;--ion-tab-bar-background: #1f1f1f;--ion-card-background: #1e1e1e}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(layers.ef6db8722c2c3f9a.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(layers-2x.9859cd1231006a4a.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(marker-icon.d577052aa271e13f.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.z-10{z-index:10}.z-50{z-index:50}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-6{margin:1.5rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-48{height:12rem}.h-60{height:15rem}.h-96{height:24rem}.h-full{height:100%}.min-h-full{min-height:100%}.w-1\/3{width:33.333333%}.w-1\/6{width:16.666667%}.w-12{width:3rem}.w-2\/3{width:66.666667%}.w-full{width:100%}.min-w-full{min-width:100%}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-tr-2xl{border-top-right-radius:1rem}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity: 1;background-color:rgb(192 132 252 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-60{--tw-bg-opacity: .6}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.pr-2{padding-right:.5rem}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}@media (min-width: 768px){.md\:m-10{margin:2.5rem}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-3\/4{height:75%}.md\:h-full{height:100%}.md\:flex-row{flex-direction:row}.md\:justify-end{justify-content:flex-end}.md\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 1024px){.lg\:m-10{margin:2.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-3\/4{height:75%}.lg\:h-96{height:24rem}.lg\:h-full{height:100%}.lg\:min-w-20{min-width:5rem}.lg\:flex-row{flex-direction:row}.lg\:justify-center{justify-content:center}.lg\:p-32{padding:8rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-lg{font-size:1.125rem;line-height:1.75rem}} +:root{--ion-color-primary: #0054e9;--ion-color-primary-rgb: 0, 84, 233;--ion-color-primary-contrast: #fff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #004acd;--ion-color-primary-tint: #1a65eb;--ion-color-secondary: #0163aa;--ion-color-secondary-rgb: 1, 99, 170;--ion-color-secondary-contrast: #fff;--ion-color-secondary-contrast-rgb: 255, 255, 255;--ion-color-secondary-shade: #015796;--ion-color-secondary-tint: #1a73b3;--ion-color-tertiary: #6030ff;--ion-color-tertiary-rgb: 96, 48, 255;--ion-color-tertiary-contrast: #fff;--ion-color-tertiary-contrast-rgb: 255, 255, 255;--ion-color-tertiary-shade: #542ae0;--ion-color-tertiary-tint: #7045ff;--ion-color-success: #2dd55b;--ion-color-success-rgb: 45, 213, 91;--ion-color-success-contrast: #000;--ion-color-success-contrast-rgb: 0, 0, 0;--ion-color-success-shade: #28bb50;--ion-color-success-tint: #42d96b;--ion-color-warning: #ffc409;--ion-color-warning-rgb: 255, 196, 9;--ion-color-warning-contrast: #000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0ac08;--ion-color-warning-tint: #ffca22;--ion-color-danger: #c5000f;--ion-color-danger-rgb: 197, 0, 15;--ion-color-danger-contrast: #fff;--ion-color-danger-contrast-rgb: 255, 255, 255;--ion-color-danger-shade: #ad000d;--ion-color-danger-tint: #cb1a27;--ion-color-light: #f4f5f8;--ion-color-light-rgb: 244, 245, 248;--ion-color-light-contrast: #000;--ion-color-light-contrast-rgb: 0, 0, 0;--ion-color-light-shade: #d7d8da;--ion-color-light-tint: #f5f6f9;--ion-color-medium: #636469;--ion-color-medium-rgb: 99, 100, 105;--ion-color-medium-contrast: #fff;--ion-color-medium-contrast-rgb: 255, 255, 255;--ion-color-medium-shade: #57585c;--ion-color-medium-tint: #737478;--ion-color-dark: #222428;--ion-color-dark-rgb: 34, 36, 40;--ion-color-dark-contrast: #fff;--ion-color-dark-contrast-rgb: 255, 255, 255;--ion-color-dark-shade: #1e2023;--ion-color-dark-tint: #383a3e}html.ios{--ion-default-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Roboto", sans-serif}html.md{--ion-default-font: "Roboto", "Helvetica Neue", sans-serif}html{--ion-dynamic-font: -apple-system-body;--ion-font-family: var(--ion-default-font)}body{background:var(--ion-background-color);color:var(--ion-text-color)}body.backdrop-no-scroll{overflow:hidden}html.ios ion-modal.modal-card ion-header ion-toolbar:first-of-type,html.ios ion-modal.modal-sheet ion-header ion-toolbar:first-of-type,html.ios ion-modal ion-footer ion-toolbar:first-of-type{padding-top:6px}html.ios ion-modal.modal-card ion-header ion-toolbar:last-of-type,html.ios ion-modal.modal-sheet ion-header ion-toolbar:last-of-type{padding-bottom:6px}html.ios ion-modal ion-toolbar{padding-right:calc(var(--ion-safe-area-right) + 8px);padding-left:calc(var(--ion-safe-area-left) + 8px)}@media screen and (min-width: 768px){html.ios ion-modal.modal-card:first-of-type{--backdrop-opacity: .18}}ion-modal.modal-default.show-modal~ion-modal.modal-default{--backdrop-opacity: 0;--box-shadow: none}html.ios ion-modal.modal-card .ion-page{border-top-left-radius:var(--border-radius)}.ion-color-primary{--ion-color-base: var(--ion-color-primary, #0054e9) !important;--ion-color-base-rgb: var(--ion-color-primary-rgb, 0, 84, 233) !important;--ion-color-contrast: var(--ion-color-primary-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-primary-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-primary-shade, #004acd) !important;--ion-color-tint: var(--ion-color-primary-tint, #1a65eb) !important}.ion-color-secondary{--ion-color-base: var(--ion-color-secondary, #0163aa) !important;--ion-color-base-rgb: var(--ion-color-secondary-rgb, 1, 99, 170) !important;--ion-color-contrast: var(--ion-color-secondary-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-secondary-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-secondary-shade, #015796) !important;--ion-color-tint: var(--ion-color-secondary-tint, #1a73b3) !important}.ion-color-tertiary{--ion-color-base: var(--ion-color-tertiary, #6030ff) !important;--ion-color-base-rgb: var(--ion-color-tertiary-rgb, 96, 48, 255) !important;--ion-color-contrast: var(--ion-color-tertiary-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-tertiary-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-tertiary-shade, #542ae0) !important;--ion-color-tint: var(--ion-color-tertiary-tint, #7045ff) !important}.ion-color-success{--ion-color-base: var(--ion-color-success, #2dd55b) !important;--ion-color-base-rgb: var(--ion-color-success-rgb, 45, 213, 91) !important;--ion-color-contrast: var(--ion-color-success-contrast, #000) !important;--ion-color-contrast-rgb: var(--ion-color-success-contrast-rgb, 0, 0, 0) !important;--ion-color-shade: var(--ion-color-success-shade, #28bb50) !important;--ion-color-tint: var(--ion-color-success-tint, #42d96b) !important}.ion-color-warning{--ion-color-base: var(--ion-color-warning, #ffc409) !important;--ion-color-base-rgb: var(--ion-color-warning-rgb, 255, 196, 9) !important;--ion-color-contrast: var(--ion-color-warning-contrast, #000) !important;--ion-color-contrast-rgb: var(--ion-color-warning-contrast-rgb, 0, 0, 0) !important;--ion-color-shade: var(--ion-color-warning-shade, #e0ac08) !important;--ion-color-tint: var(--ion-color-warning-tint, #ffca22) !important}.ion-color-danger{--ion-color-base: var(--ion-color-danger, #c5000f) !important;--ion-color-base-rgb: var(--ion-color-danger-rgb, 197, 0, 15) !important;--ion-color-contrast: var(--ion-color-danger-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-danger-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-danger-shade, #ad000d) !important;--ion-color-tint: var(--ion-color-danger-tint, #cb1a27) !important}.ion-color-light{--ion-color-base: var(--ion-color-light, #f4f5f8) !important;--ion-color-base-rgb: var(--ion-color-light-rgb, 244, 245, 248) !important;--ion-color-contrast: var(--ion-color-light-contrast, #000) !important;--ion-color-contrast-rgb: var(--ion-color-light-contrast-rgb, 0, 0, 0) !important;--ion-color-shade: var(--ion-color-light-shade, #d7d8da) !important;--ion-color-tint: var(--ion-color-light-tint, #f5f6f9) !important}.ion-color-medium{--ion-color-base: var(--ion-color-medium, #636469) !important;--ion-color-base-rgb: var(--ion-color-medium-rgb, 99, 100, 105) !important;--ion-color-contrast: var(--ion-color-medium-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-medium-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-medium-shade, #57585c) !important;--ion-color-tint: var(--ion-color-medium-tint, #737478) !important}.ion-color-dark{--ion-color-base: var(--ion-color-dark, #222428) !important;--ion-color-base-rgb: var(--ion-color-dark-rgb, 34, 36, 40) !important;--ion-color-contrast: var(--ion-color-dark-contrast, #fff) !important;--ion-color-contrast-rgb: var(--ion-color-dark-contrast-rgb, 255, 255, 255) !important;--ion-color-shade: var(--ion-color-dark-shade, #1e2023) !important;--ion-color-tint: var(--ion-color-dark-tint, #383a3e) !important}.ion-page{left:0;right:0;top:0;bottom:0;display:flex;position:absolute;flex-direction:column;justify-content:space-between;contain:layout size style;z-index:0}ion-modal>.ion-page{position:relative;contain:layout style;height:100%}.split-pane-visible>.ion-page.split-pane-main{position:relative}ion-route,ion-route-redirect,ion-router,ion-select-option,ion-nav-controller,ion-menu-controller,ion-action-sheet-controller,ion-alert-controller,ion-loading-controller,ion-modal-controller,ion-picker-controller,ion-popover-controller,ion-toast-controller,.ion-page-hidden{display:none!important}.ion-page-invisible{opacity:0}.can-go-back>ion-header ion-back-button{display:block}html.plt-ios.plt-hybrid,html.plt-ios.plt-pwa{--ion-statusbar-padding: 20px}@supports (padding-top: 20px){html{--ion-safe-area-top: var(--ion-statusbar-padding)}}@supports (padding-top: env(safe-area-inset-top)){html{--ion-safe-area-top: env(safe-area-inset-top);--ion-safe-area-bottom: env(safe-area-inset-bottom);--ion-safe-area-left: env(safe-area-inset-left);--ion-safe-area-right: env(safe-area-inset-right)}}ion-card.ion-color .ion-inherit-color,ion-card-header.ion-color .ion-inherit-color{color:inherit}.menu-content{transform:translateZ(0)}.menu-content-open{cursor:pointer;touch-action:manipulation;pointer-events:none;overflow-y:hidden}.menu-content-open ion-content{--overflow: hidden}.menu-content-open .ion-content-scroll-host{overflow:hidden}.ios .menu-content-reveal{box-shadow:-8px 0 42px #00000014}[dir=rtl].ios .menu-content-reveal{box-shadow:8px 0 42px #00000014}.md .menu-content-reveal,.md .menu-content-push{box-shadow:4px 0 16px #0000002e}ion-accordion-group.accordion-group-expand-inset>ion-accordion:first-of-type{border-top-left-radius:8px;border-top-right-radius:8px}ion-accordion-group.accordion-group-expand-inset>ion-accordion:last-of-type{border-bottom-left-radius:8px;border-bottom-right-radius:8px}ion-accordion-group>ion-accordion:last-of-type ion-item[slot=header]{--border-width: 0px}ion-accordion.accordion-animated>[slot=header] .ion-accordion-toggle-icon{transition:.3s transform cubic-bezier(.25,.8,.5,1)}@media (prefers-reduced-motion: reduce){ion-accordion .ion-accordion-toggle-icon{transition:none!important}}ion-accordion.accordion-expanding>[slot=header] .ion-accordion-toggle-icon,ion-accordion.accordion-expanded>[slot=header] .ion-accordion-toggle-icon{transform:rotate(180deg)}ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-previous ion-item[slot=header]{--border-width: 0px;--inner-border-width: 0px}ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-expanding:first-of-type,ion-accordion-group.accordion-group-expand-inset.md>ion-accordion.accordion-expanded:first-of-type{margin-top:0}ion-input input::-webkit-date-and-time-value{text-align:start}.ion-datetime-button-overlay{--width: fit-content;--height: fit-content}.ion-datetime-button-overlay ion-datetime.datetime-grid{width:320px;min-height:320px}[ion-last-focus],header[tabindex="-1"]:focus,[role=banner][tabindex="-1"]:focus,main[tabindex="-1"]:focus,[role=main][tabindex="-1"]:focus,h1[tabindex="-1"]:focus,[role=heading][aria-level="1"][tabindex="-1"]:focus{outline:none}.popover-viewport:has(>ion-content){overflow:hidden}@supports not selector(:has(> ion-content)){.popover-viewport{overflow:hidden}}audio,canvas,progress,video{vertical-align:baseline}audio:not([controls]){display:none;height:0}b,strong{font-weight:700}img{max-width:100%}hr{height:1px;border-width:0;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}label,input,select,textarea{font-family:inherit;line-height:normal}textarea{overflow:auto;height:auto;font:inherit;color:inherit}textarea::placeholder{padding-left:2px}form,input,optgroup,select{margin:0;font:inherit;color:inherit}html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}a,a div,a span,a ion-icon,a ion-label,button,button div,button span,button ion-icon,button ion-label,.ion-tappable,[tappable],[tappable] div,[tappable] span,[tappable] ion-icon,[tappable] ion-label,input,textarea{touch-action:manipulation}a ion-label,button ion-label{pointer-events:none}button{padding:0;border:0;border-radius:0;font-family:inherit;font-style:inherit;font-variant:inherit;line-height:1;text-transform:none;cursor:pointer;-webkit-appearance:button}[tappable]{cursor:pointer}a[disabled],button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}html{width:100%;height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}html:not(.hydrated) body{display:none}html.ion-ce body{display:block}html.plt-pwa{height:100vh}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin:0;padding:0;position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;transform:translateZ(0);text-rendering:optimizeLegibility;overflow:hidden;touch-action:manipulation;-webkit-user-drag:none;-ms-content-zooming:none;word-wrap:break-word;overscroll-behavior-y:none;-webkit-text-size-adjust:none;text-size-adjust:none}html{font-family:var(--ion-font-family)}@supports (-webkit-touch-callout: none){html{font:var(--ion-dynamic-font, 16px var(--ion-font-family))}}a{background-color:transparent;color:var(--ion-color-primary, #0054e9)}h1,h2,h3,h4,h5,h6{margin-top:16px;margin-bottom:10px;font-weight:500;line-height:1.2}h1{margin-top:20px;font-size:1.625rem}h2{margin-top:18px;font-size:1.5rem}h3{font-size:1.375rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}small{font-size:75%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.ion-hide,.ion-hide-up,.ion-hide-down{display:none!important}@media (min-width: 576px){.ion-hide-sm-up{display:none!important}}@media (max-width: 575.98px){.ion-hide-sm-down{display:none!important}}@media (min-width: 768px){.ion-hide-md-up{display:none!important}}@media (max-width: 767.98px){.ion-hide-md-down{display:none!important}}@media (min-width: 992px){.ion-hide-lg-up{display:none!important}}@media (max-width: 991.98px){.ion-hide-lg-down{display:none!important}}@media (min-width: 1200px){.ion-hide-xl-up{display:none!important}}@media (max-width: 1199.98px){.ion-hide-xl-down{display:none!important}}.ion-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding:0}.ion-padding{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-top{--padding-top: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px)}.ion-padding-start{--padding-start: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px)}.ion-padding-end{--padding-end: var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-padding-bottom{--padding-bottom: var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-vertical{--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-horizontal{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin:0}.ion-margin{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-top{--margin-top: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px)}.ion-margin-start{--margin-start: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px)}.ion-margin-end{--margin-end: var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-margin-bottom{--margin-bottom: var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-vertical{--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-horizontal{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-float-left{float:left!important}.ion-float-right{float:right!important}.ion-float-start{float:left!important}:host-context([dir=rtl]) .ion-float-start{float:right!important}[dir=rtl] .ion-float-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-start:dir(rtl){float:right!important}}.ion-float-end{float:right!important}:host-context([dir=rtl]) .ion-float-end{float:left!important}[dir=rtl] .ion-float-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-end:dir(rtl){float:left!important}}@media (min-width: 576px){.ion-float-sm-left{float:left!important}.ion-float-sm-right{float:right!important}.ion-float-sm-start{float:left!important}:host-context([dir=rtl]) .ion-float-sm-start{float:right!important}[dir=rtl] .ion-float-sm-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-sm-start:dir(rtl){float:right!important}}.ion-float-sm-end{float:right!important}:host-context([dir=rtl]) .ion-float-sm-end{float:left!important}[dir=rtl] .ion-float-sm-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-sm-end:dir(rtl){float:left!important}}}@media (min-width: 768px){.ion-float-md-left{float:left!important}.ion-float-md-right{float:right!important}.ion-float-md-start{float:left!important}:host-context([dir=rtl]) .ion-float-md-start{float:right!important}[dir=rtl] .ion-float-md-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-md-start:dir(rtl){float:right!important}}.ion-float-md-end{float:right!important}:host-context([dir=rtl]) .ion-float-md-end{float:left!important}[dir=rtl] .ion-float-md-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-md-end:dir(rtl){float:left!important}}}@media (min-width: 992px){.ion-float-lg-left{float:left!important}.ion-float-lg-right{float:right!important}.ion-float-lg-start{float:left!important}:host-context([dir=rtl]) .ion-float-lg-start{float:right!important}[dir=rtl] .ion-float-lg-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-lg-start:dir(rtl){float:right!important}}.ion-float-lg-end{float:right!important}:host-context([dir=rtl]) .ion-float-lg-end{float:left!important}[dir=rtl] .ion-float-lg-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-lg-end:dir(rtl){float:left!important}}}@media (min-width: 1200px){.ion-float-xl-left{float:left!important}.ion-float-xl-right{float:right!important}.ion-float-xl-start{float:left!important}:host-context([dir=rtl]) .ion-float-xl-start{float:right!important}[dir=rtl] .ion-float-xl-start{float:right!important}@supports selector(:dir(rtl)){.ion-float-xl-start:dir(rtl){float:right!important}}.ion-float-xl-end{float:right!important}:host-context([dir=rtl]) .ion-float-xl-end{float:left!important}[dir=rtl] .ion-float-xl-end{float:left!important}@supports selector(:dir(rtl)){.ion-float-xl-end:dir(rtl){float:left!important}}}.ion-text-center{text-align:center!important}.ion-text-justify{text-align:justify!important}.ion-text-start{text-align:start!important}.ion-text-end{text-align:end!important}.ion-text-left{text-align:left!important}.ion-text-right{text-align:right!important}.ion-text-nowrap{white-space:nowrap!important}.ion-text-wrap{white-space:normal!important}@media (min-width: 576px){.ion-text-sm-center{text-align:center!important}.ion-text-sm-justify{text-align:justify!important}.ion-text-sm-start{text-align:start!important}.ion-text-sm-end{text-align:end!important}.ion-text-sm-left{text-align:left!important}.ion-text-sm-right{text-align:right!important}.ion-text-sm-nowrap{white-space:nowrap!important}.ion-text-sm-wrap{white-space:normal!important}}@media (min-width: 768px){.ion-text-md-center{text-align:center!important}.ion-text-md-justify{text-align:justify!important}.ion-text-md-start{text-align:start!important}.ion-text-md-end{text-align:end!important}.ion-text-md-left{text-align:left!important}.ion-text-md-right{text-align:right!important}.ion-text-md-nowrap{white-space:nowrap!important}.ion-text-md-wrap{white-space:normal!important}}@media (min-width: 992px){.ion-text-lg-center{text-align:center!important}.ion-text-lg-justify{text-align:justify!important}.ion-text-lg-start{text-align:start!important}.ion-text-lg-end{text-align:end!important}.ion-text-lg-left{text-align:left!important}.ion-text-lg-right{text-align:right!important}.ion-text-lg-nowrap{white-space:nowrap!important}.ion-text-lg-wrap{white-space:normal!important}}@media (min-width: 1200px){.ion-text-xl-center{text-align:center!important}.ion-text-xl-justify{text-align:justify!important}.ion-text-xl-start{text-align:start!important}.ion-text-xl-end{text-align:end!important}.ion-text-xl-left{text-align:left!important}.ion-text-xl-right{text-align:right!important}.ion-text-xl-nowrap{white-space:nowrap!important}.ion-text-xl-wrap{white-space:normal!important}}.ion-text-uppercase{text-transform:uppercase!important}.ion-text-lowercase{text-transform:lowercase!important}.ion-text-capitalize{text-transform:capitalize!important}@media (min-width: 576px){.ion-text-sm-uppercase{text-transform:uppercase!important}.ion-text-sm-lowercase{text-transform:lowercase!important}.ion-text-sm-capitalize{text-transform:capitalize!important}}@media (min-width: 768px){.ion-text-md-uppercase{text-transform:uppercase!important}.ion-text-md-lowercase{text-transform:lowercase!important}.ion-text-md-capitalize{text-transform:capitalize!important}}@media (min-width: 992px){.ion-text-lg-uppercase{text-transform:uppercase!important}.ion-text-lg-lowercase{text-transform:lowercase!important}.ion-text-lg-capitalize{text-transform:capitalize!important}}@media (min-width: 1200px){.ion-text-xl-uppercase{text-transform:uppercase!important}.ion-text-xl-lowercase{text-transform:lowercase!important}.ion-text-xl-capitalize{text-transform:capitalize!important}}.ion-align-self-start{align-self:flex-start!important}.ion-align-self-end{align-self:flex-end!important}.ion-align-self-center{align-self:center!important}.ion-align-self-stretch{align-self:stretch!important}.ion-align-self-baseline{align-self:baseline!important}.ion-align-self-auto{align-self:auto!important}.ion-wrap{flex-wrap:wrap!important}.ion-nowrap{flex-wrap:nowrap!important}.ion-wrap-reverse{flex-wrap:wrap-reverse!important}.ion-justify-content-start{justify-content:flex-start!important}.ion-justify-content-center{justify-content:center!important}.ion-justify-content-end{justify-content:flex-end!important}.ion-justify-content-around{justify-content:space-around!important}.ion-justify-content-between{justify-content:space-between!important}.ion-justify-content-evenly{justify-content:space-evenly!important}.ion-align-items-start{align-items:flex-start!important}.ion-align-items-center{align-items:center!important}.ion-align-items-end{align-items:flex-end!important}.ion-align-items-stretch{align-items:stretch!important}.ion-align-items-baseline{align-items:baseline!important}:root{--ion-color-primary: #4d8dff;--ion-color-primary-rgb: 77, 141, 255;--ion-color-primary-contrast: #000;--ion-color-primary-contrast-rgb: 0, 0, 0;--ion-color-primary-shade: #447ce0;--ion-color-primary-tint: #5f98ff;--ion-color-secondary: #46b1ff;--ion-color-secondary-rgb: 70, 177, 255;--ion-color-secondary-contrast: #000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #3e9ce0;--ion-color-secondary-tint: #59b9ff;--ion-color-tertiary: #8482fb;--ion-color-tertiary-rgb: 132, 130, 251;--ion-color-tertiary-contrast: #000;--ion-color-tertiary-contrast-rgb: 0, 0, 0;--ion-color-tertiary-shade: #7472dd;--ion-color-tertiary-tint: #908ffb;--ion-color-success: #2dd55b;--ion-color-success-rgb: 45, 213, 91;--ion-color-success-contrast: #000;--ion-color-success-contrast-rgb: 0, 0, 0;--ion-color-success-shade: #28bb50;--ion-color-success-tint: #42d96b;--ion-color-warning: #ffce31;--ion-color-warning-rgb: 255, 206, 49;--ion-color-warning-contrast: #000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0b52b;--ion-color-warning-tint: #ffd346;--ion-color-danger: #f24c58;--ion-color-danger-rgb: 242, 76, 88;--ion-color-danger-contrast: #000;--ion-color-danger-contrast-rgb: 0, 0, 0;--ion-color-danger-shade: #d5434d;--ion-color-danger-tint: #f35e69;--ion-color-light: #222428;--ion-color-light-rgb: 34, 36, 40;--ion-color-light-contrast: #fff;--ion-color-light-contrast-rgb: 255, 255, 255;--ion-color-light-shade: #1e2023;--ion-color-light-tint: #383a3e;--ion-color-medium: #989aa2;--ion-color-medium-rgb: 152, 154, 162;--ion-color-medium-contrast: #000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #86888f;--ion-color-medium-tint: #a2a4ab;--ion-color-dark: #f4f5f8;--ion-color-dark-rgb: 244, 245, 248;--ion-color-dark-contrast: #000;--ion-color-dark-contrast-rgb: 0, 0, 0;--ion-color-dark-shade: #d7d8da;--ion-color-dark-tint: #f5f6f9}:root.ios{--ion-background-color: #000000;--ion-background-color-rgb: 0, 0, 0;--ion-text-color: #ffffff;--ion-text-color-rgb: 255, 255, 255;--ion-background-color-step-50: #0d0d0d;--ion-background-color-step-100: #1a1a1a;--ion-background-color-step-150: #262626;--ion-background-color-step-200: #333333;--ion-background-color-step-250: #404040;--ion-background-color-step-300: #4d4d4d;--ion-background-color-step-350: #595959;--ion-background-color-step-400: #666666;--ion-background-color-step-450: #737373;--ion-background-color-step-500: #808080;--ion-background-color-step-550: #8c8c8c;--ion-background-color-step-600: #999999;--ion-background-color-step-650: #a6a6a6;--ion-background-color-step-700: #b3b3b3;--ion-background-color-step-750: #bfbfbf;--ion-background-color-step-800: #cccccc;--ion-background-color-step-850: #d9d9d9;--ion-background-color-step-900: #e6e6e6;--ion-background-color-step-950: #f2f2f2;--ion-text-color-step-50: #f2f2f2;--ion-text-color-step-100: #e6e6e6;--ion-text-color-step-150: #d9d9d9;--ion-text-color-step-200: #cccccc;--ion-text-color-step-250: #bfbfbf;--ion-text-color-step-300: #b3b3b3;--ion-text-color-step-350: #a6a6a6;--ion-text-color-step-400: #999999;--ion-text-color-step-450: #8c8c8c;--ion-text-color-step-500: #808080;--ion-text-color-step-550: #737373;--ion-text-color-step-600: #666666;--ion-text-color-step-650: #595959;--ion-text-color-step-700: #4d4d4d;--ion-text-color-step-750: #404040;--ion-text-color-step-800: #333333;--ion-text-color-step-850: #262626;--ion-text-color-step-900: #1a1a1a;--ion-text-color-step-950: #0d0d0d;--ion-item-background: #000000;--ion-card-background: #1c1c1d}:root.ios ion-modal{--ion-background-color: var(--ion-color-step-100, var(--ion-background-color-step-100));--ion-toolbar-background: var(--ion-color-step-150, var(--ion-background-color-step-150));--ion-toolbar-border-color: var(--ion-color-step-250, var(--ion-background-color-step-250))}:root.md{--ion-background-color: #121212;--ion-background-color-rgb: 18, 18, 18;--ion-text-color: #ffffff;--ion-text-color-rgb: 255, 255, 255;--ion-background-color-step-50: #1e1e1e;--ion-background-color-step-100: #2a2a2a;--ion-background-color-step-150: #363636;--ion-background-color-step-200: #414141;--ion-background-color-step-250: #4d4d4d;--ion-background-color-step-300: #595959;--ion-background-color-step-350: #656565;--ion-background-color-step-400: #717171;--ion-background-color-step-450: #7d7d7d;--ion-background-color-step-500: #898989;--ion-background-color-step-550: #949494;--ion-background-color-step-600: #a0a0a0;--ion-background-color-step-650: #acacac;--ion-background-color-step-700: #b8b8b8;--ion-background-color-step-750: #c4c4c4;--ion-background-color-step-800: #d0d0d0;--ion-background-color-step-850: #dbdbdb;--ion-background-color-step-900: #e7e7e7;--ion-background-color-step-950: #f3f3f3;--ion-text-color-step-50: #f3f3f3;--ion-text-color-step-100: #e7e7e7;--ion-text-color-step-150: #dbdbdb;--ion-text-color-step-200: #d0d0d0;--ion-text-color-step-250: #c4c4c4;--ion-text-color-step-300: #b8b8b8;--ion-text-color-step-350: #acacac;--ion-text-color-step-400: #a0a0a0;--ion-text-color-step-450: #949494;--ion-text-color-step-500: #898989;--ion-text-color-step-550: #7d7d7d;--ion-text-color-step-600: #717171;--ion-text-color-step-650: #656565;--ion-text-color-step-700: #595959;--ion-text-color-step-750: #4d4d4d;--ion-text-color-step-800: #414141;--ion-text-color-step-850: #363636;--ion-text-color-step-900: #2a2a2a;--ion-text-color-step-950: #1e1e1e;--ion-item-background: #1e1e1e;--ion-toolbar-background: #1f1f1f;--ion-tab-bar-background: #1f1f1f;--ion-card-background: #1e1e1e}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(layers.ef6db8722c2c3f9a.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(layers-2x.9859cd1231006a4a.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(marker-icon.d577052aa271e13f.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.right-0{right:0}.z-10{z-index:10}.z-50{z-index:50}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}.m-6{margin:1.5rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-48{height:12rem}.h-60{height:15rem}.h-96{height:24rem}.h-\[25em\]{height:25em}.h-full{height:100%}.min-h-full{min-height:100%}.w-1\/3{width:33.333333%}.w-1\/6{width:16.666667%}.w-12{width:3rem}.w-2\/3{width:66.666667%}.w-full{width:100%}.min-w-full{min-width:100%}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-tr-2xl{border-top-right-radius:1rem}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity))}.bg-purple-400{--tw-bg-opacity: 1;background-color:rgb(192 132 252 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-60{--tw-bg-opacity: .6}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.pr-2{padding-right:.5rem}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}@media (min-width: 768px){.md\:m-10{margin:2.5rem}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-3\/4{height:75%}.md\:h-full{height:100%}.md\:flex-row{flex-direction:row}.md\:justify-end{justify-content:flex-end}.md\:text-2xl{font-size:1.5rem;line-height:2rem}}@media (min-width: 1024px){.lg\:m-10{margin:2.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-3\/4{height:75%}.lg\:h-96{height:24rem}.lg\:h-full{height:100%}.lg\:min-w-20{min-width:5rem}.lg\:flex-row{flex-direction:row}.lg\:justify-center{justify-content:center}.lg\:p-32{padding:8rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-lg{font-size:1.125rem;line-height:1.75rem}}